部署环境: CentOS7.4 前提:需要两台机器建立ssh互信和防火墙关闭,同时ntp同步 1.准备两台虚拟机 样例: 192.168.5.1 192.168.5.2
生成key 在主节点执行如下命令: #cd ~ #ssh-keygen -t rsa #cd .ssh #cat *.pub > authorized_keys
在另一个节点执行: #cd ~ #ssh-keygen -t rsa #cd .ssh 把所有key中的.pub内容,汇总到authorized_keys,然后复制到每个节点的/root/.ssh/目录下: 样例: scp /root/.ssh/authorized_keys 192.168.5.2:/root/.ssh
sudo systemctl stop firewalld.service sudo systemctl disable firewalld.service
A. 在1号机上安装ntp server
yum install ntp -y #安装ntp systemctl enable ntpd #配置开机自启动 systemctl start ntpd #启动ntpB.修改 /etc/ntp.conf
例: restrict 192.168.5.1 mask 255.255.255.0 nomodify notrap server 127.127.1.0 iburst fudge 127.127.1.0 stratum 8 logfile /var/log/ntp.log 重启ntp: 执行 service ntpd restartC.在2号机上安装ntp服务
yum install ntp -y #安装ntp systemctl enable ntpd #配置开机自启动 systemctl start ntpd #启动ntp修改内容 部署/etc/ntp.conf, 文件内容如下 例:
restrict 192.168.5.0 mask 255.255.255.0 nomodify notrap server 192.168.5.1 iburst includefile /etc/ntp/crypto/pw keys /etc/ntp/keys #同步ntp ntpdate -q 10.96.140.206 ntpdate -d 10.96.140.206#重启服务: service ntpd restart
添加cronjob 每1小时运行一次 ntpdate -q 192.168.5.1
systemctl is-enabled crond.service crontab -e * */1 * * * ntpdate -q2.安装drbd所需要的两个主要rpm 包名参考:
drbd84-utils-8.4.4-1.el7.elrepo.x86_64.rpm kmod-drbd84-8.4.4-1.el7.elrepo.x86_64.rpm3.修改配置文件(推荐不修改,直接使用) [root@]# cat /etc/drbd.d/global_common.conf 按需修改,小白则不需要修改,直接跳过即可.
5.在1.2号机创建配置文件 /etc/drbd.d/mysql.res
样本说明: resource mysql { #资源名称 protocol C; #使用协议 meta-disk internal; device /dev/drbd1; #DRBD设备名称 syncer { verify-alg sha1;# 加密算法 } net { allow-two-primaries; } on node1 { # node1是主机名,需要根据实际主机名调整 disk /dev/data/mysql; drbd1使用的磁盘分区为"mysql" address 192.168.8.51:7789; #设置DRBD监听地址与端口 } on node2 { # node2是主机名,需要根据实际主机名调整 disk /dev/data/mysql; address 192.168.8.52:7789; } } 参考示例: resource mysql { protocol C; meta-disk internal; device /dev/drbd1; syncer { verify-alg sha1; } net { allow-two-primaries; } on master { disk /dev/data/mysql; address 192.168.5.1:7789; } on slaver { disk /dev/data/mysql; address 192.168.5.2:7789; } }6.将配置好的文件从1号机复制到2号机: scp /etc/drbd.d/* 主机名:/etc/drbd.d/
7.创建分区—1和2号机都要执行
pvcreate /dev/sdb1 vgcreate data /dev/sdb1 lvcreate -L 10G -n mysql data (另一参考例子:lvcreate -l 100%free -n mysql data ) (如果没有激活,执行vgchange -a -y data) drbdadm create-md mysql modprobe drbd drbdadm up mysql 查看内核是否已加载了模块: [root@centosa ~]# lsmod | grep drbd drbd 396875 0 libcrc32c 12644 2 xfs,drbd 查看状态: [root@centosa ~]# cat /proc/drbd version: 8.4.10-1 (api:1/proto:86-101) GIT-hash:a4d5de01fffd7e4cde48a080e2c686f9e8cebf4c build by mockbuild@, 2017-09-1514:23:22 1:cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----s ns:0 nr:0 dw:0 dr:912 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:foos:20960281号机执行
drbdadm primary mysql2号机执行
drbdadm secondary mysql注:如果重启过主机,各节点需要在开机完毕后手动启动drbd
modprobe drbd drbdadm up mysql主节点执行格式化设备并挂载到数据库的data目录
mkfs.xfs /dev/drbd1 mkdir /var/lib/mysql mount /dev/drbd1 /var/lib/mysql主备数据库自动切换脚本 自己可以通过vi保存到文件目录当中,进行主备切换可直接执行 vi /root/changeMysql.sh 记得赋予执行权限
#!/bin/bash case $1 in master) modprobe drbd || echo drbd error && exit 1 drbdadm up mysql || echo drbd error && exit 1 drbdadm primary mysql || echo drbd error && exit 1 mount /dev/drbd1 /var/lib/mysql/ || echo mount error && exit 1 systemctl start mysql || echo mysql error && exit 1 ;; slave) modprobe drbd || echo drbd error && exit 1 drbdadm up mysql || echo drbd error && exit 1 systemctl stop mysql 2> /dev/null sleep 1 umount /var/lib/mysql/ 2> /dev/null drbdadm secondary mysql || echo drbd error && exit 1 ;; esac执行示范: 去到脚本保存的目录下:
把备用节点切换为主节点 ./changeMysql.sh master 把主节点切换为备用节点 ./changeMysql.sh slave