CentOS7.x离线搭建DRBD与Mysql高可用

CentOS7.x离线搭建DRBD与Mysql高可用

部署环境:
CentOS7.4
前提:需要两台机器建立ssh互信和防火墙关闭,同时ntp同步
1.准备两台虚拟机
样例:
192.168.5.1
192.168.5.2

ssh互信:

生成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

ntp服务

A. 在1号机上安装ntp server

yum install ntp -y #安装ntp
systemctl enable ntpd #配置开机自启动
systemctl start ntpd    #启动ntp

B.修改 /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 restart

C.在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 -q

2.安装drbd所需要的两个主要rpm
包名参考:

drbd84-utils-8.4.4-1.el7.elrepo.x86_64.rpm
kmod-drbd84-8.4.4-1.el7.elrepo.x86_64.rpm

3.修改配置文件(推荐不修改,直接使用)
[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:2096028

1号机执行

drbdadm primary mysql

2号机执行

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值