Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节
2013-07-02 22:09:25
标签:MySQL高可用方案 生产搭建过程
1、Heartbeat+DRBD+MySQL安装部署
(1)、架构拓扑
(2)、系统环境
(3)、部署环境
(4)、主库服务器数据分区信息
2、heartbeat安装部署
(1)、配置服务器间心跳连接路由
| 1 2 | [root@master1 ~]# route add -host 172.16.4.3 dev eth2<==到对端的心跳路由[root@master1 ~]# route add -host 172.168.4.3 dev eth3<==到对端的DRBD数据路由 | 
| 1 2 | [root@master2 ~]# route add -host 172.16.4.2 dev eth2[root@master2 ~]# route add -host 172.168.4.2 dev eth3 | 
(2)、安装heartbeat
| 1 2 3 | [root@master1 ~]# yum install heartbeat -y[root@master1 ~]# yum install heartbeat -y提示:需要执行两遍安装heartbeat操作 | 
(3)、配置heartbeat
1)、ha.cf
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@master1 ~]# vim /etc/ha.d/ha.cf#log configuredebugfile /var/log/ha-debuglogfile /var/log/ha-loglogfacility local1#options configurekeepalive 2deadtime 30warntime 10initdead 120#bcast  eth2mcast eth2 225.0.0.7 694 1 0#node configureauto_failback onnode    master1     <==主节点主机名node    master2     <==备节点主机名crm no | 
2)、配置authkeys
| 1 2 3 | [root@master1 ~]# vim /etc/ha.d/authkeysauth 11 sha1 47e9336850f1db6fa58bc470bc9b7810eb397f04 | 
3)、配置haresources
| 1 2 3 4 5 6 7 | [root@master1 ~]# vim /etc/ha.d/haresourcesmaster1 IPaddr::192.168.4.1/16/eth1#master1 IPaddr::192.168.4.1/16/eth1 drbddisk::data Filesystem::/dev/drbd1::/data::ext3 mysqld说明:drbddisk::data      <==启动drbd data资源,相当于执行/etc/ha.d/resource.d/drbddisk data stop/start操作Filesystem::/dev/drbd1::/data::ext3     <==drbd分区挂载到/data目录,相当于执行/etc/ha.d/resource.d/Filesystem /dev/drbd1 /data ext3 stop/start        <==相当于系统中执行mount /dev/drbd1 /datamysql               <==启动mysql服务脚本,相当于/etc/init.d/mysql stop/start | 
(4)、启动heartbeat
| 1 2 3 | [root@master1 ~]# /etc/init.d/heartbeat start[root@master1 ~]# chkconfig heartbeat off说明:关闭开机自启动,当服务器重启时,需要人工去启动 | 
(5)、测试heartbeat
| 1 2 3 4 5 6 7 8 | [root@master1 ~]# ip addr|grep eth13: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000inet 192.168.4.2/16brd 192.168.255.255 scope global eth1inet 192.168.4.1/16brd 192.168.255.255 scope global secondary eth1:0[root@master2 ~]# ip addr|grep eth13: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000inet 192.168.4.3/16brd 192.168.255.255 scope global eth1说明:master1节点拥有vip地址,master2节点没有 | 
| 1 2 3 4 5 6 | [root@master1 ~]# /etc/init.d/heartbeat stop[root@master2 ~]# ip addr|grep eth13: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000inet 192.168.4.3/16brd 192.168.255.255 scope global eth1inet 192.168.4.1/16brd 192.168.255.255 scope global secondary eth1:0说明:master1宕机后,vip地址漂移到master2节点上,master2成为主节点 | 
| 1 2 3 4 5 6 | [root@master1 ~]# /etc/init.d/heartbeat start[root@master1 ~]# ip addr|grep eth13: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000inet 192.168.4.2/16brd 192.168.255.255 scope global eth1inet 192.168.4.1/16brd 192.168.255.255 scope global secondary eth1:0说明:master1抢占vip资源 | 
3、DRBD安装部署
(1)、新添加硬盘
| 1 2 3 4 5 6 7 | [root@master1 ~]# fdisk /dev/sdb说明:sdb磁盘分两个分区sdb1和sdb2[root@master1 ~]# partprobe[root@master1 ~]# mkfs.ext3 /dev/sdb1说明:sdb2分区为meta data分区,不需要格式化操作[root@master1 ~]# tune2fs -c -1 /dev/sdb1说明:设置最大挂载数为-1 | 
(2)、安装DRBD
| 1 2 3 | [root@master1 ~]# yum install kmod-drbd83 drbd83 -y[root@master1 ~]# modprobe drbd注意:不要设置echo'modprobe drbd'>>/etc/rc.loca开机自动加载drbd模块,如果drbd服务是开机自启动的,会先启动drbd服务在加载drbd的顺序,导致drbd启动不了出现的问题 | 
(3)、配置DRBD
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | [root@master1 ~]# cat /etc/drbd.confglobal {# minor-count 64;# dialog-refresh 5; # 5 seconds# disable-ip-verification;usage-count no;}common {protocol C;disk {on-io-error   detach;#size 454G;no-disk-flushes;no-md-flushes;}net {sndbuf-size 512k;# timeout       60;    #  6 seconds  (unit = 0.1 seconds)# connect-int   10;    # 10 seconds  (unit = 1 second)# ping-int      10;    # 10 seconds  (unit = 1 second)# ping-timeout   5;    # 500 ms (unit = 0.1 seconds)max-buffers     8000;unplug-watermark   1024;max-epoch-size  8000;# ko-count 4;# allow-two-primaries;cram-hmac-alg "sha1";shared-secret "hdhwXes23sYEhart8t";after-sb-0pri disconnect;after-sb-1pri disconnect;after-sb-2pri disconnect;rr-conflict disconnect;# data-integrity-alg "md5";# no-tcp-cork;}syncer {rate 120M;al-extents 517;}}resource data {on master1 {device     /dev/drbd1;disk       /dev/sdb1;address    192.168.4.2:7788;meta-disk  /dev/sdb2[0];}on master2 {device     /dev/drbd1;disk       /dev/sdb1;address    192.168.4.3:7788;meta-disk  /dev/sdb2[0];}} | 
(4)、初始化meta分区
| 1 2 3 4 5 | [root@master1 ~]# drbdadm create-md dataWriting meta data...initializing activity logNOT initialized bitmapNew drbd meta data block successfully created. | 
(5)、初始化设备同步(覆盖备节点,保持数据一致)
| 1 | [root@master1 ~]# drbdadm -- --overwrite-data-of-peer primary data | 
(6)、启动drbd
| 1 2 | [root@master1 ~]# drbdadm up all[root@master1 ~]# chkconfig drbd off | 
(7)、挂载drbd分区到data数据目录
| 1 2 3 | [root@master1 ~]# drbdadm primary all[root@master1 ~]# mount /dev/drbd1 /data说明:/data目录为数据库的数据目录 | 
(8)、测试DRBD
| 1 2 3 4 5 6 7 8 9 10 11 | [root@master1 ~]# cat /proc/drbdversion: 8.3.13 (api:88/proto:86-96)GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:361: cs:Connected ro:Primary/Secondaryds:UpToDate/UpToDateC r-----ns:497984 nr:0 dw:1 dr:498116 al:1 bm:31 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0[root@master2 ~]# cat /proc/drbdversion: 8.3.13 (api:88/proto:86-96)GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:361: cs:Connected ro:Secondary/Primaryds:UpToDate/UpToDateC r-----ns:0 nr:497984 dw:497984 dr:0 al:0 bm:30 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0说明:master1为主节点,master为备节点 | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@master1 ~]# umount /dev/drbd1[root@master1 ~]# drbdadm down all[root@master2 ~]# cat /proc/drbdversion: 8.3.13(api:88/proto:86-96)GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-0711:56:361: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r-----ns:0nr:497985dw:497985dr:0al:0bm:30lo:0pe:0ua:0ap:0ep:1wo:b oos:0[root@master2 ~]# drbdadm primary all[root@master2 ~]# mount /dev/drbd1 /data[root@master2 ~]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/sda3              19G  5.1G   13G  29% //dev/sda1             190M   18M  163M  10% /boottmpfs                  60M     060M   0% /dev/shm/dev/drbd1            471M   11M  437M   3% /data说明:master1宕机后,master2可以升级为主节点,可挂载drbd分区继续使用 | 
4、MySQL安装部署
(1)、解决perl编译问题
| 1 2 | echo'export LC_ALL=C'>> /etc/profilesource/etc/profile | 
(2)、安装CAMKE
| 1 2 3 4 5 6 | cd/home/xu/toolswget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gztarzxf cmake-2.8.4.tar.gzcdcmake-2.8.4./configuremake& makeinstall | 
(3)、创建用户
| 1 2 | groupadd mysqluseradd-g mysql mysql | 
(4)、编译安装mysql
| 1 2 3 4 5 6 7 8 9 10 11 12 | wget http://mysql.ntu.edu.tw/Downloads/MySQL-5.5/mysql-5.5.27.tar.gztarzxf mysql-5.5.27.tar.gzcdmysql-5.5.27cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql\-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_EXTRA_CHARSETS=complex \-DWITH_READLINE=1 \-DENABLED_LOCAL_INFILE=1make-j 4makeinstall | 
(5)、设置mysql环境变量
| 1 2 | [root@master1 ~]# echo 'PATH=$PATH:/usr/local/mysql/bin' >>/etc/profile[root@master1 ~]# source /etc/profile | 
(6)、初始化数据库
| 1 2 3 4 | [root@master1 ~]# mount /dev/drbd1 /data说明:数据库存放数据的目录是drbd分区[root@master1 ~]# cd /usr/local/mysql/[root@master1 ~]# ./scripts/mysql_install_db --datadir=/data/ --user=mysql | 
(7)、启动数据库
| 1 2 3 4 5 | [root@master1 ~]# vim /etc/init.d/mysqlddatadir=/data说明:修改mysql启动脚本,指定数据库的目录为/data[root@master1 ~]# /etc/init.d/mysqld start[root@master1 ~]# chkconfig mysqld off | 
(8)、测试数据库
| 1 2 3 4 5 6 7 8 | [root@master1 ~]# mysql -uroot -e "show databases;"+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema |+--------------------+ | 
5、故障切换测试
(1)、架构正常状态
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@master1 ~]# ip addr|grep eth13: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000inet 192.168.4.2/16brd 192.168.255.255 scope global eth1inet 192.168.4.1/16brd 192.168.255.255 scope global secondary eth1:0[root@master1 ~]# cat /proc/drbdversion: 8.3.13 (api:88/proto:86-96)GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:361: cs:Connected ro:Primary/Secondaryds:UpToDate/UpToDateC r-----ns:39558 nr:12 dw:39570 dr:151 al:16 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0[root@master1 ~]# mysql -uroot -e "create database coral;"[root@master1 ~]# mysql -uroot -e "show databases like 'coral';"+------------------+| Database (coral) |+------------------+| coral            |+------------------+说明:master1为主节点,拥有VIP地址,为drbd的主节点 | 
| 1 2 3 4 5 6 7 8 9 | [root@master2 ~]# ip addr|grep eth13: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000inet 192.168.4.3/16brd 192.168.255.255 scope global eth1[root@master2 ~]# cat /proc/drbdversion: 8.3.13 (api:88/proto:86-96)GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:361: cs:Connected ro:Secondary/Primaryds:UpToDate/UpToDateC r-----ns:0 nr:48 dw:48 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0说明:master2备节点没有VIP地址,为drbd备节点 | 
(2)、模拟master1宕机故障状态
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | [root@master1 ~]# /etc/init.d/heartbeat stop    <==模拟master1故障宕机[root@master2 ~]# tailf /var/log/ha-log         <==查看备节点接管日志heartbeat[13209]: 2013/01/23_04:09:36 info: Received shutdownnotice from 'master1'.heartbeat[13209]: 2013/01/23_04:09:36 info: Resources being acquired from master1.heartbeat[15293]: 2013/01/23_04:09:36 info: acquire localHA resources (standby).heartbeat[15294]: 2013/01/23_04:09:37 info: No localresources [/usr/share/heartbeat/ResourceManagerlistkeys master2] to acquire.heartbeat[15293]: 2013/01/23_04:09:37 info: localHA resource acquisition completed (standby).heartbeat[13209]: 2013/01/23_04:09:37 info: Standby resource acquisition done[foreign].harc[15319]:    2013/01/23_04:09:37 info: Running /etc/ha.d/rc.d/statusstatusmach_down[15335]:       2013/01/23_04:09:37 info: Taking over resource group IPaddr::192.168.4.1/16/eth1ResourceManager[15361]: 2013/01/23_04:09:37 info: Acquiring resource group: master1 IPaddr::192.168.4.1/16/eth1drbddisk::data Filesystem::/dev/drbd1::/data::ext3 mysqldIPaddr[15388]:  2013/01/23_04:09:37 INFO:  Resource is stoppedResourceManager[15361]: 2013/01/23_04:09:37 info: Running /etc/ha.d/resource.d/IPaddr192.168.4.1/16/eth1startIPaddr[15486]:  2013/01/23_04:09:38 INFO: Using calculated netmask for192.168.4.1: 255.255.0.0IPaddr[15486]:  2013/01/23_04:09:38 INFO: evalifconfigeth1:0 192.168.4.1 netmask 255.255.0.0 broadcast 192.168.255.255IPaddr[15457]:  2013/01/23_04:09:38 INFO:  SuccessResourceManager[15361]: 2013/01/23_04:09:38 info: Running /etc/ha.d/resource.d/drbddiskdata startFilesystem[15636]:      2013/01/23_04:09:39 INFO:  Resource is stoppedResourceManager[15361]: 2013/01/23_04:09:39 info: Running /etc/ha.d/resource.d/Filesystem/dev/drbd1/dataext3 startFilesystem[15717]:      2013/01/23_04:09:39 INFO: Running start for/dev/drbd1on /dataFilesystem[15706]:      2013/01/23_04:09:39 INFO:  SuccessResourceManager[15361]: 2013/01/23_04:09:40 info: Running /etc/init.d/mysqldstartmach_down[15335]:       2013/01/23_04:09:44 info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquiredmach_down[15335]:       2013/01/23_04:09:44 info: mach_down takeover complete fornode master1.heartbeat[13209]: 2013/01/23_04:09:44 info: mach_down takeover complete.heartbeat[13209]: 2013/01/23_04:10:09 WARN: node master1: is deadheartbeat[13209]: 2013/01/23_04:10:09 info: Dead node master1 gave up resources.heartbeat[13209]: 2013/01/23_04:10:09 info: Link master1:eth2 dead.说明:当备节点无法检测到主节点的心跳时,自动接管资源,启动VIP地址、drbd服务,自动挂载drbd,启动mysqld服务,备节点接管后,数据依然存在,检测启动的服务如下:[root@master2 ~]# ip addr|grep eth13: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000inet 192.168.4.3/16brd 192.168.255.255 scope global eth1inet 192.168.4.1/16brd 192.168.255.255 scope global secondary eth1:0[root@master2 ~]# cat /proc/drbdversion: 8.3.13 (api:88/proto:86-96)GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:361: cs:Connected ro:Primary/Secondaryds:UpToDate/UpToDateC r-----ns:3 nr:95 dw:98 dr:10 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0[root@master2 ~]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/sda319G  4.7G   14G  26% //dev/sda1190M   18M  163M  10% /boottmpfs                  60M     0   60M   0% /dev/shm/dev/drbd1471M   40M  408M   9% /data[root@master2 ~]# mysql -uroot -e "show databases like 'coral';"+------------------+| Database (coral) |+------------------+| coral            |+------------------+ | 
(3)、模拟master1宕机恢复状态
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | [root@master1 ~]# /etc/init.d/heartbeat start[root@master1 ~]# tailf /var/log/ha-logheartbeat[27970]: 2013/01/09_17:34:14 info: Version 2 support: noheartbeat[27970]: 2013/01/09_17:34:14 WARN: Logging daemon is disabled --enabling logging daemon is recommendedheartbeat[27970]: 2013/01/09_17:34:14 info: **************************heartbeat[27970]: 2013/01/09_17:34:14 info: Configuration validated. Starting heartbeat 2.1.3heartbeat[27971]: 2013/01/09_17:34:14 info: heartbeat: version 2.1.3heartbeat[27971]: 2013/01/09_17:34:14 info: Heartbeat generation: 1351554533heartbeat[27971]: 2013/01/09_17:34:14 info: glib: UDP multicast heartbeat started forgroup 225.0.0.7 port 694 interface eth2 (ttl=1 loop=0)heartbeat[27971]: 2013/01/09_17:34:14 info: G_main_add_TriggerHandler: Added signal manual handlerheartbeat[27971]: 2013/01/09_17:34:14 info: G_main_add_TriggerHandler: Added signal manual handlerheartbeat[27971]: 2013/01/09_17:34:14 info: G_main_add_SignalHandler: Added signal handler forsignal 17heartbeat[27971]: 2013/01/09_17:34:14 info: Local status now setto: 'up'heartbeat[27971]: 2013/01/09_17:34:16 info: Link master2:eth2 up.heartbeat[27971]: 2013/01/09_17:34:16 info: Status update fornode master2: status activeharc[27978]:    2013/01/09_17:34:16 info: Running /etc/ha.d/rc.d/statusstatusheartbeat[27971]: 2013/01/09_17:34:17 info: Comm_now_up(): updating status to activeheartbeat[27971]: 2013/01/09_17:34:17 info: Local status now setto: 'active'heartbeat[27971]: 2013/01/09_17:34:17 info: remote resource transition completed.heartbeat[27971]: 2013/01/09_17:34:17 info: remote resource transition completed.heartbeat[27971]: 2013/01/09_17:34:17 info: Local Resource acquisition completed. (none)heartbeat[27971]: 2013/01/09_17:34:18 info: master2 wants to go standby [foreign]heartbeat[27971]: 2013/01/09_17:34:20 info: standby: acquire [foreign] resources from master2heartbeat[27997]: 2013/01/09_17:34:20 info: acquire localHA resources (standby).ResourceManager[28010]: 2013/01/09_17:34:20 info: Acquiring resource group: master1 IPaddr::192.168.4.1/16/eth1drbddisk::data Filesystem::/dev/drbd1::/data::ext3 mysqldIPaddr[28037]:  2013/01/09_17:34:21 INFO:  Resource is stoppedResourceManager[28010]: 2013/01/09_17:34:21 info: Running /etc/ha.d/resource.d/IPaddr192.168.4.1/16/eth1startIPaddr[28135]:  2013/01/09_17:34:21 INFO: Using calculated netmask for192.168.4.1: 255.255.0.0IPaddr[28135]:  2013/01/09_17:34:21 INFO: evalifconfigeth1:0 192.168.4.1 netmask 255.255.0.0 broadcast 192.168.255.255IPaddr[28106]:  2013/01/09_17:34:21 INFO:  SuccessResourceManager[28010]: 2013/01/09_17:34:21 info: Running /etc/ha.d/resource.d/drbddiskdata startFilesystem[28286]:      2013/01/09_17:34:21 INFO:  Resource is stoppedResourceManager[28010]: 2013/01/09_17:34:21 info: Running /etc/ha.d/resource.d/Filesystem/dev/drbd1/dataext3 startFilesystem[28367]:      2013/01/09_17:34:21 INFO: Running start for/dev/drbd1on /dataFilesystem[28356]:      2013/01/09_17:34:21 INFO:  SuccessResourceManager[28010]: 2013/01/09_17:34:22 info: Running /etc/init.d/mysqldstartheartbeat[27997]: 2013/01/09_17:34:25 info: localHA resource acquisition completed (standby).heartbeat[27971]: 2013/01/09_17:34:25 info: Standby resource acquisition done[foreign].heartbeat[27971]: 2013/01/09_17:34:25 info: Initial resource acquisition complete (auto_failback)heartbeat[27971]: 2013/01/09_17:34:25 info: remote resource transition completed. | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | [root@master2 ~]# tailf /var/log/ha-logheartbeat[13209]: 2013/01/23_04:26:53 info: Heartbeat restart on node master1heartbeat[13209]: 2013/01/23_04:26:53 info: Link master1:eth2 up.heartbeat[13209]: 2013/01/23_04:26:53 info: Status update fornode master1: status initheartbeat[13209]: 2013/01/23_04:26:53 info: Status update fornode master1: status upharc[16151]:    2013/01/23_04:26:53 info: Running /etc/ha.d/rc.d/statusstatusharc[16167]:    2013/01/23_04:26:53 info: Running /etc/ha.d/rc.d/statusstatusheartbeat[13209]: 2013/01/23_04:26:53 info: all clients are now pausedheartbeat[13209]: 2013/01/23_04:26:55 info: Status update fornode master1: status activeharc[16183]:    2013/01/23_04:26:55 info: Running /etc/ha.d/rc.d/statusstatusheartbeat[13209]: 2013/01/23_04:26:55 info: all clients are now resumedheartbeat[13209]: 2013/01/23_04:26:55 info: remote resource transition completed.heartbeat[13209]: 2013/01/23_04:26:55 info: master2 wants to go standby [foreign]heartbeat[13209]: 2013/01/23_04:26:55 info: standby: master1 can take our foreign resourcesheartbeat[16199]: 2013/01/23_04:26:55 info: give up foreign HA resources (standby).ResourceManager[16212]: 2013/01/23_04:26:55 info: Releasing resource group: master1 IPaddr::192.168.4.1/16/eth1drbddisk::data Filesystem::/dev/drbd1::/data::ext3 mysqldResourceManager[16212]: 2013/01/23_04:26:55 info: Running /etc/init.d/mysqldstopResourceManager[16212]: 2013/01/23_04:26:57 info: Running /etc/ha.d/resource.d/Filesystem/dev/drbd1/dataext3 stopFilesystem[16297]:      2013/01/23_04:26:57 INFO: Running stop for/dev/drbd1on /dataFilesystem[16297]:      2013/01/23_04:26:57 INFO: Trying to unmount /dataFilesystem[16297]:      2013/01/23_04:26:57 INFO: unmounted /datasuccessfullyFilesystem[16286]:      2013/01/23_04:26:57 INFO:  SuccessResourceManager[16212]: 2013/01/23_04:26:57 info: Running /etc/ha.d/resource.d/drbddiskdata stopResourceManager[16212]: 2013/01/23_04:26:57 info: Running /etc/ha.d/resource.d/IPaddr192.168.4.1/16/eth1stopIPaddr[16445]:  2013/01/23_04:26:58 INFO: ifconfigeth1:0 downIPaddr[16416]:  2013/01/23_04:26:58 INFO:  Successheartbeat[16199]: 2013/01/23_04:26:58 info: foreign HA resource release completed (standby).heartbeat[13209]: 2013/01/23_04:26:58 info: Local standby process completed [foreign].heartbeat[13209]: 2013/01/23_04:27:02 WARN: 1 lost packet(s) for[master1] [15:17]heartbeat[13209]: 2013/01/23_04:27:02 info: remote resource transition completed.heartbeat[13209]: 2013/01/23_04:27:02 info: No pkts missing from master1!heartbeat[13209]: 2013/01/23_04:27:02 info: Other node completed standby takeover of foreign resources. | 
6、从库同VIP同步
(1)、master配置
1)、设置server-id值并开启Binlog参数
| 1 2 3 4 5 | [root@master1 ~]# vim /etc/my.cnflog-bin=/usr/local/mysql/mysql-binserver-id= 3[root@master1 ~]# /etc/init.d/mysqld restart注意:只有master1有重启操作,master2无需重启操作,因为备节点的mysql是未启动状态,备节点只有heartbeat才能启动mysql | 
2)、授权并建立同步账户rep
| 1 2 | [root@master1 ~]# mysql -uroot -pmysql> GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168.4.%'IDENTIFIED BY 'rep'; | 
(2)、slave配置
1)、设置server-id值并关闭binlog设置
| 1 2 3 4 5 | [root@slave1 ~]# vim /etc/my.cnf#log-bin=mysql-binserver-id= 4[root@slave1 ~]# /etc/init.d/mysqld restart说明:从库无需开启binlog日志功能,除非有需求做级联复制架构或对mysql增量备份操作才开启 | 
2)、配置同步参数
| 1 2 3 4 5 6 7 8 | [root@Slave ~]# mysql -urootCHANGE MASTER TOMASTER_HOST='192.168.4.1',MASTER_PORT=3306,MASTER_USER='rep',MASTER_PASSWORD='rep',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=0; | 
3)、检查是否主从同步
| 1 2 3 4 5 6 | [root@Slave ~]# mysql -urootmysql> show slave status\G...Slave_IO_Running: YesSlave_SQL_Running: Yes... | 
(3)、模拟高可用宕机切换是否影响从库同步
1)、主从正常状态
| 1 2 3 4 5 6 7 8 9 10 11 12 | [root@master1 ~]# mysql -urootmysql> create database coral1;Query OK, 1 row affected (0.02 sec)[root@slave1 ~]# mysql -uroot -e "show slave status\G"|egrep "Slave_IO_Running|Slave_SQL_Running"Slave_IO_Running: YesSlave_SQL_Running: Yes[root@slave1 ~]# mysql -uroot -e "show databases like 'coral%';"+-------------------+| Database (coral%) |+-------------------+| coral1            |+-------------------+ | 
2)、模拟高可用主节点宕机
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | [root@master1 ~]# /etc/init.d/heartbeat stop说明:模拟主节点宕机[root@master2 ~]# ip addr|grep eth13: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000inet 192.168.4.3/16brd 192.168.255.255 scope global eth1inet 192.168.4.1/16brd 192.168.255.255 scope global secondary eth1:0[root@master2 ~]# mysql -urootmysql> create database coral2;Query OK, 1 row affected (0.08 sec)说明:VIP地址已经漂移到master2上面[root@slave1 ~]# mysql -uroot -e "show slave status\G"|egrep "Slave_IO_Running|Slave_SQL_Running"Slave_IO_Running: YesSlave_SQL_Running: Yes[root@slave1 ~]# mysql -uroot -e "show databases like 'coral%'"+-------------------+| Database (coral%) |+-------------------+| coral1            || coral2            |+-------------------+注意:高可用主备节点切换过程中,会有一段时间从库才能连接上,大于在60秒内说明:此时主从同步是正常的 | 
3)、模拟高可用主节点宕机恢复
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@master1 ~]# /etc/init.d/heartbeat start[root@master1 ~]# mysql -urootmysql> create database coral3;[root@slave1 ~]# mysql -uroot -e "show slave status\G"|egrep "Slave_IO_Running|Slave_SQL_Running"Slave_IO_Running: YesSlave_SQL_Running: Yes[root@slave1 ~]# mysql -uroot -e "show databases like 'coral%'"+-------------------+| Database (coral%) |+-------------------+| coral1            || coral2            || coral3            |+-------------------+说明:高可用主节点故障恢复后也不影响主从库的同步 | 
6、高可用脑裂问题及解决方案
(1)、导致裂脑发生的原因
(2)、防止裂脑一些方案
        作者:wangkaiok —— 小菜鸟111
        
        出处:http://www.cnblogs.com/wangkaiok/
        
        本文版权归作者和博客园共有,但未经作者同意禁止转载,转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    



 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号