This section lists the operating systems on which MySQL Community Server is known to run.
Oracle Corporation does not necessarily provide official support for all the platforms listed in this section. For information about those platforms that are officially supported, see http://www.mysql.com/support/supportedplatforms.html on the MySQL Web site.
We use CMake, so it is possible to port MySQL to all modern systems that have a C++ compiler and a working implementation of POSIX threads. (Thread support is needed for the server. To compile only the client code, the only requirement is a C++ compiler.)
MySQL has been reported to compile successfully on the following combinations of operating system and thread package.
FreeBSD 5.x and up with native threads. See Section 2.8, "Installing MySQL on FreeBSD".
HP-UX 11.x with the native threads. See Section 2.7, "Installing MySQL on HP-UX".
Linux. Builds on all recent Linux distributions based on the 2.6 kernel. See Section 2.5, "Installing MySQL on Linux".
Mac OS X. See Section 2.4, "Installing MySQL on Mac OS X".
Solaris 2.8 on SPARC and x86, including support for native threads. See Section 2.6, "Installing MySQL on Solaris and OpenSolaris".
Windows XP, Windows Vista, Windows Server 2003, and Windows Server 2008. See Section 2.3, "Installing MySQL on Microsoft Windows".
MySQL has also been known to run on other systems in the past. See Section 2.1, "General Installation Guidance". Some porting effort might be required for current versions of MySQL on these systems.
Not all platforms are equally well-suited for running MySQL. How well a certain platform is suited for a high-load mission-critical MySQL server is determined by the following factors:
General stability of the thread library. A platform may have an excellent reputation otherwise, but MySQL is only as stable as the thread library it calls, even if everything else is perfect.
The capability of the kernel and the thread library to take advantage of symmetric multi-processor (SMP) systems. In other words, when a process creates a thread, it should be possible for that thread to run on a CPU different from the original process.
The capability of the kernel and the thread library to run many threads that
acquire and release a mutex over a short critical region frequently without excessive context switches.
If the implementation of
pthread_mutex_lock() is too anxious to yield CPU
time, this hurts MySQL tremendously. If this issue is not taken care of, adding extra CPUs actually
makes MySQL slower.
General file system stability and performance.
Table size. If your tables are large, performance is affected by the ability of the file system to deal with large files and dealing with them efficiently.
Our level of expertise here at Oracle Corporation with the platform. If we know a platform well, we enable platform-specific optimizations and fixes at compile time. We can also provide advice on configuring your system optimally for MySQL.
The amount of testing we have done internally for similar configurations.
The number of users that have run MySQL successfully on the platform in similar configurations. If this number is high, the likelihood of encountering platform-specific surprises is much smaller.