MySQL高可用介绍4-Mysql主从同步+DRBD+heartbeat

介绍

MySQL一主多从,可以保证数据库集群高可用,由于是多从,所以挂掉一个从库对集群没影响;如果挂了一个主库我们可以把从库转换成主库,但是由于网络延迟问题主从角色切换会造成数据丢失,为了解决这个问题,解决主机单节点运行使用heartbeat做主节点高可用,主为了保证2个主节点数据同步可以使用drbd做主节点数据同步。
多主可以使用lvs来实现,如果是多主多从需要Mysql+DRBD+heartbeat来实现,架构如下(拷贝老男孩的一张架构图):
这里写图片描述
注意事项:
1.db-1-2热备主,跟db-1-1通过heartbeat做高可用,brdb做数据同步;
2.正常情况下,db-1-1对外提供写,从对外提供读;
3.mysql slave可以做一个lb,通过vip跟db-1-1做数据同步;
4.web server提供读写分离机制,读分发到mysql slave,写分发到db-1-1;
5.db-1-1、db-1-2数据同步使用专有链路,heartbeat也必须使用专有链路,也可以使用串口线来完成,不建议使用同一链路。

这里写图片描述
db-1-1故障之后,有db-1-2接管vip及数据库资源;
mysql slave由于是使用vip跟主库同步,所以故障发生之后可以自动跟db-1-2做数据同步;

部署

Mysql支持多实例,drbd也支持多分区同步。如果节点流量比较大可以使用网卡绑定。
我们可以把mysql数据库和数据文件创建在/data目录,这样两个主节点都可以同步共享。
网卡及地址规划:

这里写图片描述
主库

node1: 
eth0      10.37.2.100 //管理地址 
eth1      192.168.52.106//心跳线 
vip        10.37.2.240 //vip

node2: 
eth0    10.37.2.111 
eth1    192.168.52.103 
vip       10.37.2.241


从库
slave1
eth0    10.37.2.160
eth1    192.168.52.160

slave2
eth0    10.37.2.170
eth1    192.168.52.170

主库每台机器至少两块硬盘,容量大小一致。

两台主库安装drbd和heartbeat,安装步骤及配置请参考前三个博客。

heartbeat管理drbd

安装完成之后,heartbeat我们还需要做一个配置,由heartbeat管理drbd。
两个主节点创建/data目录

mkdir -p /data

主节点格式化drbd0

mkfs -t ext3 /dev/drbd0

主节点挂载

mount /dev/drbd0 /data

heartbeat禁止系统自启动


[root@node1 data]# chkconfig heartbeat off

vi /etc/ha.d/haresources (注意不要换行,两个主节点都需要配置)

##heartbeat drbd配置
 node1 IPaddr::10.37.2.240/24/eth0 drbddisk::data Filesystem::/dev/drbd0::/data::ext3
 ##把drbd0设备以ext3方式挂载到/data 上。
##heartbeat nfs 配置
  node1 IPaddr::10.37.2.240/24/eth0 drbddisk::data Filesystem::/dev/drbd0::/data::ext3 rsdata

启动heartbeat,查看vip和drbd是否正常启动.

[root@node1 /]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO:  Resource is stopped
INFO:  Resource is stopped
Done.
[root@node1 data]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:50:f0:77 brd ff:ff:ff:ff:ff:ff
    inet 10.37.2.100/24 brd 10.37.2.255 scope global eth0
    inet 10.37.2.240/24 brd 10.37.2.255 scope global secondary eth0
    inet6 fe80::20c:29ff:fe50:f077/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:50:f0:81 brd ff:ff:ff:ff:ff:ff
    inet 192.168.52.100/24 brd 192.168.52.255 scope global eth1
    inet6 fe80::20c:29ff:fe50:f081/64 scope link 
       valid_lft forever preferred_lft forever 
[root@node1 data]# cat /proc/drbd 
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@node1, 2017-08-30 11:34:17
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:12 nr:8 dw:172 dr:8549339 al:3 bm:526 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
[root@node1 data]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_ams-lv_root
                       36G  5.1G   29G  15% /
tmpfs                 1.6G  224K  1.6G   1% /dev/shm
/dev/sda1             477M   32M  420M   8% /boot
/dev/sr0              4.4G  4.4G     0 100% /media/CentOS_6.6_Final
/dev/sr0              4.4G  4.4G     0 100% /mnt
/dev/drbd0             15G  166M   14G   2% /data   
heartbeat启动日志:
ep 01 11:31:27 node1 heartbeat: [24937]: info: Pacemaker support: false
Sep 01 11:31:27 node1 heartbeat: [24937]: WARN: Logging daemon is disabled --enabling logging daemon is recommended
Sep 01 11:31:27 node1 heartbeat: [24937]: info: **************************
Sep 01 11:31:27 node1 heartbeat: [24937]: info: Configuration validated. Starting heartbeat 3.0.4
Sep 01 11:31:27 node1 heartbeat: [24938]: info: heartbeat: version 3.0.4
Sep 01 11:31:27 node1 heartbeat: [24938]: info: Heartbeat generation: 1503900466
Sep 01 11:31:27 node1 heartbeat: [24938]: info: glib: UDP Broadcast heartbeat started on port 694 (694) interface eth1
Sep 01 11:31:27 node1 heartbeat: [24938]: info: glib: UDP Broadcast heartbeat closed on port 694 interface eth1 - Status: 1
Sep 01 11:31:27 node1 heartbeat: [24938]: info: glib: ucast: write socket priority set to IPTOS_LOWDELAY on eth0
Sep 01 11:31:27 node1 heartbeat: [24938]: info: glib: ucast: bound send socket to device: eth0
Sep 01 11:31:27 node1 heartbeat: [24938]: info: glib: ucast: set SO_REUSEPORT(w)
Sep 01 11:31:27 node1 heartbeat: [24938]: info: glib: ucast: bound receive socket to device: eth0
Sep 01 11:31:27 node1 heartbeat: [24938]: info: glib: ucast: set SO_REUSEPORT(w)
Sep 01 11:31:27 node1 heartbeat: [24938]: info: glib: ucast: started on port 694 interface eth0 to 192.168.52.103
Sep 01 11:31:27 node1 heartbeat: [24938]: info: glib: ping heartbeat started.
Sep 01 11:31:28 node1 heartbeat: [24938]: info: G_main_add_TriggerHandler: Added signal manual handler
Sep 01 11:31:28 node1 heartbeat: [24938]: info: G_main_add_TriggerHandler: Added signal manual handler
Sep 01 11:31:28 node1 heartbeat: [24938]: info: G_main_add_SignalHandler: Added signal handler for signal 17
Sep 01 11:31:28 node1 heartbeat: [24938]: info: Local status now set to: 'up'
Sep 01 11:31:28 node1 heartbeat: [24938]: info: Link node1:eth1 up.
Sep 01 11:32:26 node1 heartbeat: [24938]: info: Link node2:eth1 up.
Sep 01 11:32:26 node1 heartbeat: [24938]: info: Status update for node node2: status up
harc(default)[24951]:   2017/09/01_11:32:26 info: Running /etc/ha.d//rc.d/status status
Sep 01 11:33:28 node1 heartbeat: [24938]: WARN: node 192.168.52.103: is dead
harc(default)[24971]:   2017/09/01_11:33:28 info: Running /etc/ha.d//rc.d/status status
Sep 01 11:33:29 node1 heartbeat: [24938]: info: Comm_now_up(): updating status to active
Sep 01 11:33:29 node1 heartbeat: [24938]: info: Local status now set to: 'active'
Sep 01 11:34:27 node1 heartbeat: [24938]: info: Status update for node node2: status active
harc(default)[25001]:   2017/09/01_11:34:27 info: Running /etc/ha.d//rc.d/status status
Sep 01 11:34:37 node1 heartbeat: [24938]: info: remote resource transition completed.
Sep 01 11:34:37 node1 heartbeat: [24938]: info: remote resource transition completed.
Sep 01 11:34:37 node1 heartbeat: [24938]: info: Initial resource acquisition complete (T_RESOURCES(us))
/usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_10.37.2.240)[25055]:   2017/09/01_11:34:37 INFO:  Resource is stopped
Sep 01 11:34:37 node1 heartbeat: [25019]: info: Local Resource acquisition completed.
harc(default)[25136]:   2017/09/01_11:34:37 info: Running /etc/ha.d//rc.d/ip-request-resp ip-request-resp
ip-request-resp(default)[25136]:        2017/09/01_11:34:37 received ip-request-resp IPaddr::10.37.2.240/24/eth0 OK yes
ResourceManager(default)[25159]:        2017/09/01_11:34:37 info: Acquiring resource group: node1 IPaddr::10.37.2.240/24/eth0 drbddisk::data Filesystem::/dev/drbd0::/data::ext3
/usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_10.37.2<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值