Compilation on Windows

Greetings, hope to find you all well.

Any information about a successful compilation of the Xtrabackup on Windows?

Here’s a little hope that it can be compiled on Windows:

Or it was just inherited from here:

and to build it on Windows you need to make your own fork?

Yep, I know that it can be launched in Docker on Windows, but I am interested exactly in compiling on Windows.

1 Like

Hello @aik.fiend ,
Windows is not a supported Percona OS for any of our software. We have no development processes that check that our code successfully builds on Windows. You don’t need to make your own fork, simply clone the repos and give it a go. Even if it compiles, there is no guarantee that all features will work.

Could you give us insight into why you desire a native Windows build? You can very easily run a standard VM with mysql inside, and then use xtrabackup natively.

1 Like

@matthew, if you try to compile it right now on Windows - you’ll get a couple of issues, so it cannot be compiled successfully. Fixes made in a fork probably may resolve the issues, you can merge a pull request then or just leave it as is if you do not want to support Windows.

I need a native Windows app because existing MySQL Servers are already running on Windows and it would cost too many efforts and resources to support each existing and new installation: migrate on Linux / play with Docker / use VMs / mount NFS / etc. Therefore I am trying to find a unified solution.

1 Like

@aik.fiend,
Any forks for windows support would benefit others like yourself. Percona has no plans to support Windows.

Docker is not required, nor is NFS. Migrating a 100GB MySQL on Windows to linux would take about an hour; it’s not difficult. Most of that time is waiting for the logical dump and import to finish.

I doubt you’ll ever find a unified solution. Physical backup tools (which is what xtrabackup creates) don’t exist for Windows. The only solution you’d have here is disk-level snapshots. Logical backups will work on Windows, but these are the slowest method to use.

1 Like

@matthewb, thank you very much for your suggestions. Of course, just migrating the data doesn’t cost much time.

But every case may be specific. Someone just does not want to have Linux, sometimes you just do not have the access to the infrastructure. Someone may like more solutions with NFS or Docker.

@matthewb, @vadimtk,
may I know the reason why Percona does not want to support Windows?
It looks like the reason was in something conceptual since 2011:

1 Like

Windows is difficult to code against, for starters. Additionally, not many Enterprise companies use MySQL on Windows. We have many thousands of customers and less than a handful use MySQL on Windows, and in almost all of those cases it’s MySQL in a VM on a windows machine. It’s just not worth the time/effort/expense to get our software as performant on Windows as on Linux.

1 Like

Just wanted to reply to this since I am having a similar problem.

I have ran it from a VM running ubuntu linux but Percona still doesn’t work when attempting to back-up from windows using linux remotely.

Using something like this, but it doesn’t work:

This post has an example of why it doesn’t work:

Percona’s answer seems to be to just not use Windows for hosting mysql, unfortunately that’s not a practical answer when you’ve inherited a production mysql database that way.

Hello @Cory_Kitay,
Yes, xtrabackup is written for linux OS. The example you gave is a crash where PXB attempts to make an OS-level call to access a file on Windows filesystem that does not work.

The only solution here is to use either mydumper (you would have to custom compile it on Windows, if that even works) or migrate to a linux-based OS.

I understand that you inherited it as Windows, but that does not preclude migration to linux. In fact, I have 3 clients which are doing this very migration. We are moving them, 100% uptime/online, from MySQL 5.7 on Windows to MySQL 8 on Ubuntu. You can create a new VM with linux, install MySQL, take and restore a backup from prod Windows, configure replication to catch up data changes, then switch the IP from windows machine to linux machine to complete the migration.