DEV Community

Rob Porter
Rob Porter

Posted on • Edited on

1 2

Creating a RAID-Z Drive for MySQL with ZFS on CentOS

Notes: I wrote this documentation around 2013 as internal documentation at Weever Apps for setting up RAID-Z as a method of making very quick backups of MySQL. Since we no longer use this setup and the documentation will never be used again, I felt it might be a good idea to post it out there for those who might find some use in it. Using RAID-Z for MySQL was amazing, and never failed us, and allowed hourly snapshot-based backups with no downtime. We've since moved to AWS RDS instances though.

This will be part of multiple posts that combined will allow one to build a RAID-Z setup for MySQL. Or, at least it used to be able to! While this is geared towards Azure, I'm sure it would work anywhere.

As I add more parts over the next few days I'll add links here.

Article series

  1. Installing ZFS on CentOS
  2. Creating a RAID-Z Drive for MySQL with ZFS on CentOS
  3. Setting up RAID-Z for use in a MySQL Master-Master Replicator Pattern
  4. Creating a ZFS Image of a MySQL Data Directory

Instructions

First, let's make sure we have ZFS installed.

sudo su
lsmod | grep -i zfs

Next, in Azure, shut down the server then attach all the disks you'd like to use for RAID-Z; minimum should be a 2-core machine using the max 4 disks. All disks should be the same size, though this may not be a requirement for RAID-Z.

For this example, I'll be making 4 disks with 300 GB each. Give them names so it is clear that they are RAID-Z disks, by making sure raid-z is somewhere in the name.

Each disk should take about a minute to set up.

Start the machine up when the final disk is added.

Once booted back up, check the status of the disks (be sure to sudo su):

fdisk -l | grep GB

The following command will create a zpool called sqlstorage and mount it to /etc/mysql:

zpool create -m /var/lib/mysql sqlstorage raidz -f sdc sdd sde sdf

Note that the minimum for raidz is two disks. For double-parity raidz known as raidz2, you need a minimum of 3 disks. For triple, 4 disks are required. Use the highest level RAID-Z possible with the setup.

To check the zpool status:

zpool status

To make sure it's mounted:

mount | grep zfs

And to confirm the storage size:

df -h | grep sqlstorage

We also want to make sure the drive will mount on bootup:

echo "zfs mount sqlstorage" >> /etc/rc.local

Reboot, and you can then repeat the above checks to ensure it is working on boot.

Is something badly out of date? Did this work for you? Please post a comment to help others who might use this for guidance.

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay