Using virtualization can be an effective way of better utilizing the
hardware of your machine when using MySQL, or to provide improved
security or isolation of different instances of MySQL on the same
machine. In some circumstances, virtualization may be a suitable
solution for scaling out your database environment by enabling you
to easily deploy additional instances of a pre-configured MySQL
server and application environment to new virtualization hosts.
With any virtualization solution there is often a tradeoff between
the flexibility and ease of deployment and performance, or between
the potential performance advantage and complexities of effectively
configuring multiple instances of MySQL to reside within a single
physical host.
Different issues are experienced according to the virtualization
environment you are using. Virtualization generally falls into one
of the following categories:
Native virtualization,
including products like VMware Workstation, Parallels
Desktop/Parallels Workstation, Microsoft Virtual PC and
VirtualBox, all work by acting as an application that runs
within an existing operating system environment. Recent versions
can take advantage of the virtualization extensions in the Intel
and AMD CPUs to help improve performance.
The application-based solutions have a number of advantages,
including the ability to prioritize CPU usage (including
multiple CPUs) and easily run multiple virtualized environments
simultaneously.
With these solutions, you also have the ability to easily create
a virtualized environment that can be packaged and shared among
different virtualization hosts. For example, you can create a
MySQL environment and configuration that can be deployed
multiple times to help extend an existing scalability or HA
environment.
The major disadvantage of this type of virtualization
environment is the effect of the host on the performance of the
virtualization instances. Disk storage is typically provided by
using one or more files on the host OS which are then emulated
to provide physical disks within the virtual instance. Other
resources on the host are similarly shared, including CPU,
network interfaces and additional devices (USB). It is also
difficult to directly share lower-level components, such as PCI
devices and that the ability to take advantage of RAID storage
solutions.
Paravirtualization
(Hypervisor), including Xen, Solaris xVM (based on
Xen), VMware ESX Server, Windows Server 2008 Hyper-V, and
Solaris Logical Domains (LDOM), work by running a specialized
version of the host operating system. The host OS then allows
slightly modified versions of different operating systems to run
within the virtualized environment.
With paravirtualization, the level of performance and the
control over the underlying hardware used to support the
virtualized environments is higher than native virtualization
solutions. For example, using paravirtualization you can
dedicate individual CPU cores, RAM, disk drives and even PCI
devices to be accessible to individual and specific virtual
instances.
For example, within a paravirtualized environment you could
dedicate a physical disk drive or subsystem to a particular
virtual environment and gain a performance benefit over a
typical file-based solution virtual disk.
Operating system-level
virtualization, including BSD jails, and Solaris
Containers/Zones, offer methods for isolating different
instances of an operating system environment while sharing the
same hardware environment. Unlike the other virtualization
solutions, operating system level virtualization is not normally
used to run other operating systems, but instead to provide a
level of security isolation and resource control within the core
operating environment.
The isolation of these different instances is the key advantage
of this type of virtualization. Each virtualized instance sees
its environment as if it were completely different system. The
solution can be an effective method to provide isolated
computing resources for different departments or users, or to
provide unique instances for testing and development.
The main reasons for using virtualization, particularly with a
database or an application stack that includes a database component,
include:
Security â separate
instances of different operating systems running within a single
host but with effective isolation from each other. When used
with MySQL, you can provide an increased level of security
between different instances of each server.
Consolidation â merging a
number of individual systems with a relatively small load onto a
single, larger, server. This can help reduce footprint and
energy costs, or make more efficient use of a larger machine.
Performance is the main issue with this solution as the load of
many MySQL databases running in individual virtual instances on
a single machine can be considerable.
Development/QA/Testing â
by creating different instances of different environments and
operating systems you can test your MySQL-based application in
different environments.
Scalability â although
using virtualization imposes a performance hit, many
virtualization solutions allow you to create a packaged version
of an environment, including MySQL and the other application
components. By distributing the virtualization environment
package to new hosts you can often very quickly scale out by
adding new hosts and deploying the virtualized environment.
The remainder of this chapter looks at common issues with using
MySQL in a virtualized environment and tips for using MySQL within
different virtualization tools.
User Comments
Add your own comment.