设置Linux软件RAID10以存储MySQL数据文件和数据库

时间:2020-03-21 11:47:06  来源:igfitidea点击:

我们将设置Linux软件RAID10,并重新配置MySQL以将其用于数据文件和数据库。

安装

我们正在使用Ubuntu 13.10(Saucy Salamander):

# uname -rv
3.11.0-15-generic #23-Ubuntu SMP Mon Dec 9 18:17:04 UTC 2013

安装mdadm和mysql:

# apt-get update && apt-get install mdadm mysql-server

创建软件RAID10

我们为Linux突袭预先配置了4x2GB磁盘:

# fdisk -l | grep /dev/xv
Disk /dev/xvda1 doesn't contain a valid partition table
Disk /dev/xvda1: 8589 MB, 8589934592 bytes
Disk /dev/xvdf: 2147 MB, 2147483648 bytes
/dev/xvdf1 2048 4194303 2096128 fd Linux raid autodetect
Disk /dev/xvdg: 2147 MB, 2147483648 bytes
/dev/xvdg1 2048 4194303 2096128 fd Linux raid autodetect
Disk /dev/xvdh: 2147 MB, 2147483648 bytes
/dev/xvdh1 2048 4194303 2096128 fd Linux raid autodetect
Disk /dev/xvdi: 2147 MB, 2147483648 bytes
/dev/xvdi1 2048 4194303 2096128 fd Linux raid autodetect

创建RAID10阵列:

# mdadm -C /dev/md0 -l 10 -n 4 /dev/xvdf1 /dev/xvdg1 /dev/xvdh1 /dev/xvdi1 -v
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 2094592K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

启动时自动扫描并激活阵列:

# mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf

等待阵列完成磁盘同步:

# watch cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid10 xvdi1[3] xvdh1[2] xvdg1[1] xvdf1[0]
4189184 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
[=========>...........] resync = 49.2% (2064912/4189184) finish=0.9min speed=38738K/sec
unused devices: <none>

同步完成:

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid10 xvdi1[3] xvdh1[2] xvdg1[1] xvdf1[0]
4189184 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
unused devices: <none>

请注意,良好的做法是定期运行数据清理以检查并修复错误。
要手动启动数据清理:

# echo check > /sys/block/md0/md/sync_action

要安全停止当前正在运行的数据清理,请执行以下操作:

# echo idle > /sys/block/md0/md/sync_action

创建一个ext4文件系统:

# mkfs.ext4 /dev/md0

创建一个安装点:

# mkdir /sql_data

挂载RAID驱动器:

# mount /dev/md0 /sql_data

创建一个失物招领目录:

# cd /sql_data
# mklost+found

不要忘记将记录添加到fstab中:

# echo "/dev/md0 /sql_data ext4 defaults 0 0" >> /etc/fstab

(可选)配置电子邮件警报以进行每日检查,以确保所有降级的MD设备都不会被忽略:

# echo "MAILADDR Hyman@theitroad" >> /etc/mdadm/mdadm.conf
# echo "MAILFROM Hyman@theitroad" >> /etc/mdadm/mdadm.conf

配置MySQL

默认情况下,MySQL在Ubuntu上将其数据文件和数据库存储在“/var/lib/mysql”下。
我们想将其更改为我们新创建的RAID驱动器。
首先停止守护程序:

# service mysql stop

打开配置文件并适当地更改“ datadir”:

# vim /etc/mysql/my.cnf
[...]
#datadir = /var/lib/mysql
datadir = /sql_data
[...]

为新路径创建别名:

# echo "alias /var/lib/mysql/-> /sql_data/," >> /etc/apparmor.d/tunables/alias

将所有内容从默认目录复制到新位置,并更改文件夹的所有权:

# cp -Rp /var/lib/mysql/* /sql_data
# chown mysql:mysql /sql_data
# chmod 0700 /sql_data

重新加载apparmor守护程序并启动mysql服务器:

# service apparmor reload
# service mysql start

检查mysql日志,以防遇到问题:

# tail -f /var/log/mysql/error.log