CoroSync + Drbd + MySQL 实现MySQL的高可用集群_MySQL
Mysql集群 Corosync + DRBD + MySQL构建高可用MySQL集群 节点规划: node1.huhu.com172.16.100.103 node2.huhu.com172.16.100.104 资源名称规划 资源名称:可以是除了空白字符外的任意ACSII码字符 DRBD设备:在双节点上,此DRBD设备文件,一般为/dev/drbdN,主设备号147 磁盘:在双方节点上,各自提供存储设备 网络配置:双方数据同步所使用的网络属性 DRBD从Linux内核2.6.33起已经整合进内核 1.配置双击互信(基于秘钥认证),HOSTS文件,时间同步 1)所有节点的主机名称和对应的IP地址解析服务可以正常工作,且每个节点的主机名称需要跟"uname -n“命令的结果保持一致;因此,需要保证两个节点上的/etc/hosts文件均为下面的内容: 172.16.100.103node1.huhu.com node1 172.16.100.104node2.huhu.com node2 Node1: #sed -i 's@/(HOSTNAME=/).*@/1node1.huhu.com@g' /etc/sysconfig/network #hostname node1.huhu.com Node2: #sed -i 's@/(HOSTNAME=/).*@/1node2.huhu.com@g' /etc/sysconfig/network #hostname node2.huhu.com 2)设定两个节点可以基于密钥进行ssh通信,这可以通过类似如下的命令实现: #yum install openssh-clients Node1: #ssh-keygen -t rsa #ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2 Node2: #ssh-keygen -t rsa #ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1 配置时间同步: */5* * * * root /usr/sbin/ntpdate ntp.api.bz & > /dev/null 2.创建和配置DRBD Node1上执行: #rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm #ssh node2 'rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm' #yum update -y #ssh node2 'yum update -y' #yum install drbd84-utils kmod-drbd84 -y #ssh node2 'yum install drbd84-utils kmod-drbd84 -y' 加载模块到内核: #/sbin/modprobe drbd #ssh node2 '/sbin/modprobe drbd' DRBD的配置文件: /etc/drbd.conf /etc/drbd.d/global_common.conf /etc/drbd.d/resource.d/ #yum -y install parted #ssh node2 'yum -y install parted' #fdisk /dev/sdb n新建分区 p主分区 1分区号,两车回车按照默认大小选择 wq保存退出 #partprobe /dev/sdb1 资源规划: 资源名称:mydrbd DRBD设备:/dev/drbd0 磁盘:/dev/sdb1 网络配置:100M #cat /etc/drbd.d/global_common.conf | grep -v "#" global{ usage-countyes; } common{ handlers{ pri-on-incon-degr"/usr/lib/drbd/notify-pri-on-incon-degr.sh;/usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ;reboot -f"; pri-lost-after-sb"/usr/lib/drbd/notify-pri-lost-after-sb.sh;/usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ;reboot -f"; local-io-error"/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh;echo o > /proc/sysrq-trigger ; halt -f"; } startup{ } options{ } disk{ on-io-errordetach; } net{ cram-hmac-alg "sha1"; shared-secret "1q2w3e4r5t6y"; } syncer{ rate 200M; } } #cat mydrbd.res resourcemydrbd { device/dev/drbd0; disk/dev/sdb1; meta-diskinternal; onnode1.huhu.com { address172.16.100.103:7789; } onnode1.huhu.com { address172.16.100.104:7789; } } 复制配置文件到node2节点 scp-r /etc/drbd.* node2:/etc/ 在两个节点上,初始化已定义的资源,并启动服务 #drbdadm create-md mydrbd #ssh node2 'drbdadm create-md mydrbd' #/etc/init.d/drbd start #ssh node2 '/etc/init.d/drbd start' 查看DRBD设备的状态: #cat /proc/drbd version:8.4.4 (api:1/proto:86-101) GIT-hash:599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-1415:33:06 0:cs:Connected ro:Secondary/Secondaryds:Inconsistent/Inconsistent C r----- ns:0nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2096348 目前两个节点都处于secondary状态,手动让其node1成为主节点: #drbdadm -- --overwrite-data-of-peer primary mydrbd #cat /proc/drbd version:8.4.4 (api:1/proto:86-101) GIT-hash:599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-1415:33:06 0:cs:Connected ro:Primary/Secondaryds:UpToDate/UpToDateC r----- ns:2096348nr:0 dw:0 dr:2097012 al:0 bm:128 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 在primary节点上进行格式化drbd分区然后挂载 #mke2fs -j /dev/drbd0 #mkdir /mydata #mount /dev/drbd0 /mydata/ #cp /etc/inittab /mydata/ #ls -lh /mydata/ total20K -rw-r--r--.1 root root 884 Jul 8 17:24 inittab drwx------.2 root root 16K Jul 8 17:23 lost+found 到此drbd分区已经可以正常使用了 DRBD分区的主备切换 primary节点上执行: #umount /mydata/ # drbdadm secondary mydrbd #drbd-overview 0:mydrbd/0ConnectedSecondary/SecondaryUpToDate/UpToDateC r----- secondary上执行 #drbd-overview确保两者的状态都有secondary状态 #drbdadm primary mydrbd #mkdir -p /mydata # mount /dev/drbd0 /mydata/ #ls -lh /mydata/ total20K -rw-r--r--.1 root root 884 Jul 8 17:24 inittab drwx------.2 root root 16K Jul 8 17:23 lost+found #drbd-overview 0:mydrbd/0ConnectedPrimary/SecondaryUpToDate/UpToDate Cr----- /mydata ext3 2.0G 36M 1.9G 2% 状态已经改变,primary /secondary 3.配置coresync服务 各个节点上停止掉drbd服务,并且关闭开机启动 #/etc/init.d/drbd stop #ssh node2 '/etc/init.d/drbd stop' #chkconfig drbd off #ssh node2 'chkconfig drbd off' #chkconfig --list | grep drbd #ssh node2 'chkconfig --list | grep drbd' drbd0:off 1:off 2:off 3:off 4:off 5:off 6:off 安装corosync #yum install libibverbs librdmacm lm_sensors libtool-ltdl openhpi-libs openhpiperl-TimeDate #yum install corosync pacemaker #ssh node2 '# yum install libibverbs librdmacm lm_sensors libtool-ltdlopenhpi-libs openhpi perl-TimeDate' wgethttp://ftp5.gwdg.de/pub/opensuse/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/x86_64/crmsh-2.1-1.1.x86_64.rpm&& wgethttp://ftp5.gwdg.de/pub/opensuse/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/x86_64/pssh-2.3.1-4.1.x86_64.rpm #ssh node2 'wget http://ftp5.gwdg.de/pub/opensuse/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/x86_64/crmsh-2.1-1.1.x86_64.rpm&& wgethttp://ftp5.gwdg.de/pub/opensuse/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/x86_64/pssh-2.3.1-4.1.x86_64.rpm' yum--nogpgcheck localinstall crmsh-2.1-1.1.x86_64.rpm pssh-2.3.1-4.1.x86_64.rpm 如果安装失败,请添加以下源 #vim /etc/yum.repos.d/ha-clustering.repo [haclustering] name=HAClustering baseurl=http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/ enabled=1 gpgcheck=0 #yum --nogpgcheck localinstall crmsh-2.1-1.1.x86_64.rpmpssh-2.3.1-4.1.x86_64.rpm node2上同样执行以上 配置corosync #cd /etc/corosync/ #cp corosync.conf.example corosync.conf #cat corosync.conf | grep -v "^#" | sed -e'/^$/d' compatibility: whitetank totem { version: 2 secauth: on threads: 2 interface { ringnumber: 0 bindnetaddr: 172.16.100.0 mcastaddr: 226.94.8.9 mcastport: 5405 ttl: 1 } } logging { fileline: off to_stderr: no to_logfile: yes to_syslog: no logfile: /var/log/cluster/corosync.log debug: off timestamp: on logger_subsys { subsys: AMF debug: off } } service { ver: 0 name: pacemaker # use_mgmtd: yes } aisexec { user: root group: root } amf { mode: disabled } 生成秘钥 #corosync-keygen #scp -p authkey corosync.conf node2:/etc/corosync/ 创建日志文件目录 #mkdir -p /var/log/cluster/ -pv # ssh node2 'mkdir -p /var/log/cluster/ -pv' 启动corosync服务 #service corosync start #ssh node2 'service corosync start' 检查corosync引擎是否已经启动 #grep -e "Corosync Cluster Engine" -e "configuration file"/var/log/cluster/corosync.log Jul09 10:28:14 corosync [MAIN ] Corosync Cluster Engine ('1.4.1'): started andready to provide service. Jul09 10:28:14 corosync [MAIN ]Successfullyreadmain configuration file '/etc/corosync/corosync.conf'. 查看节点成员之间通信是否正常 #grep TOTEM /var/log/cluster/corosync.log Jul09 10:28:14 corosync [TOTEM ] Initializing transport (UDP/IP Multicast). Jul09 10:28:14 corosync [TOTEM ] Initializing transmit/receive security:libtomcrypt SOBER128/SHA1HMAC (mode 0). Jul09 10:28:14 corosync [TOTEM ]The network interface[172.16.100.103] is now up. Jul09 10:28:14 corosync [TOTEM ] A processor joined or left the membership and anew membership was formed. Jul09 10:28:29 corosync [TOTEM ] A processor joined or left the membership and anew membership was formed. 检查pacemaker启动是否正常 #grep pcmk_startup /var/log/cluster/corosync.log Jul09 10:28:14 corosync [pcmk ] info: pcmk_startup: CRM: Initialized Jul09 10:28:14 corosync [pcmk ] Logging: Initialized pcmk_startup Jul09 10:28:14 corosync [pcmk ]info: pcmk_startup:Maximum core file size is:18446744073709551615 Jul09 10:28:14 corosync [pcmk ] info: pcmk_startup: Service: 9 Jul09 10:28:14 corosync [pcmk ] info: pcmk_startup: Local hostname: node1.huhu.com 查看错误信息 #grep ERROR /var/log/cluster/corosync.log | grep -v unpack_resources Jul09 10:28:14 corosync [pcmk ] ERROR: process_ais_conf: You have configured acluster using the Pacemaker plugin for Corosync. The plugin is not supported inthis environment and will be removed very soon. Jul09 10:28:14 corosync [pcmk ] ERROR: process_ais_conf: Please see Chapter 8 of'Clusters from Scratch' (http://www.clusterlabs.org/doc) for details on usingPacemaker with CMAN Jul09 10:28:35 [1373] node1.huhu.com pengine: notice: process_pe_message:Configuration ERRORs found during PE processing. Please run "crm_verify-L" to identify issues. 注意:这里因为没有使用stonith设备,因此错误可以忽略 #crm status Lastupdated: Wed Jul 9 10:49:53 2014 Lastchange: Wed Jul 9 10:19:07 2014 via crmd on node1.huhu.com Stack:classic openais (with plugin) CurrentDC: node1.huhu.com - partition with quorum Version:1.1.10-14.el6_5.3-368c726 2Nodes configured, 2 expected votes 0Resources configured Online:[ node1.huhu.com node2.huhu.com ] 以上说明corosync配置启动正常。 关闭stonith设备,并验证提交 crm(live)#configure crm(live)configure#property stonith-enabled=false crm(live)configure#verify crm(live)configure#commit 关闭不具备法定票数的时候,不能关闭集群服务 crm(live)configure#property no-quorum-policy=ignore crm(live)configure#verify crm(live)configure#commit 配置资源粘性,更倾向于当前节点 crm(live)configure#rsc_defaults resource-stickiness=100 crm(live)configure#verify crm(live)configure#commit 查看当前的配置 crm(live)configure#show nodenode1.huhu.com nodenode2.huhu.com propertycib-bootstrap-options: / dc-version=1.1.10-14.el6_5.3-368c726/ cluster-infrastructure="classicopenais (with plugin)" / expected-quorum-votes=2/ stonith-enabled=false/ no-quorum-policy=ignore rsc_defaultsrsc-options: / resource-stickiness=100 crm(live)configure# 查看drbd的资源代理 crm(live)configure#cd .. crm(live)#ra crm(live)ra#providers drbd linbit 注意:这里只有linbit没有beartbeat,corosync1.4以前的版本有heartbeat。 查看原数据 crm(live)ra#meta ocf:linbit:drbd 定义资源: crm(live)configure#primitive mysql_drbd ocf:linbit:drbd paramsdrbd_resource=mydrbd op start timeout=240 op stop timeout=100 op monitorrole=Master interval=50s timeout=30s op monitor role=Slave interval=60s timeout=30s 定义群集资源: crm(live)configure#master MS_mysql_drbd mysql_drbd metamaster-max="1" master-node-max="1" clone-max="2"clone-node-max="1" notify="true" crm(live)configure#show mysql_drbd primitivemysql_drbd ocf:linbit:drbd / paramsdrbd_resource=mydrbd / opstart timeout=240 interval=0 / opstop timeout=100 interval=0 / opmonitor role=Master interval=50s timeout=30s / opmonitor role=Slave interval=60s timeout=30s crm(live)configure#show MS_mysql_drbd msMS_mysql_drbd mysql_drbd / metamaster-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true crm(live)configure#verify crm(live)configure#commit crm(live)configure#cd crm(live)#status Lastupdated: Wed Jul 9 11:54:30 2014 Lastchange: Wed Jul 9 11:54:17 2014 via cibadmin on node1.huhu.com Stack:classic openais (with plugin) CurrentDC: node2.huhu.com - partition with quorum Version:1.1.10-14.el6_5.3-368c726 2Nodes configured, 2 expected votes 2Resources configured Online:[ node1.huhu.com node2.huhu.com ] Master/Slave Set: MS_mysql_drbd [mysql_drbd] Masters: [ node1.huhu.com ] Slaves: [ node2.huhu.com ] crm(live)# 主从资源已经定义完成 [root@node1corosync]# drbd-overview 0:mydrbd/0Connected Primary/Secondary UpToDate/UpToDate C r----- [root@node1corosync]# 此时当前节点已经成为主资源了 手动做一次主从切换: #crm node standby #crm status Lastupdated: Wed Jul 9 12:01:44 2014 Lastchange: Wed Jul 9 12:01:29 2014 via crm_attribute on node1.huhu.com Stack:classic openais (with plugin) CurrentDC: node2.huhu.com - partition with quorum Version:1.1.10-14.el6_5.3-368c726 2Nodes configured, 2 expected votes 2Resources configured Nodenode1.huhu.com: standby Online:[ node2.huhu.com ] Master/SlaveSet: MS_mysql_drbd [mysql_drbd] Masters:[ node2.huhu.com ] Stopped:[ node1.huhu.com ] #crm node online #crm status Lastupdated: Wed Jul 9 12:02:46 2014 Lastchange: Wed Jul 9 12:02:43 2014 via crm_attribute on node1.huhu.com Stack:classic openais (with plugin) CurrentDC: node2.huhu.com - partition with quorum Version:1.1.10-14.el6_5.3-368c726 2Nodes configured, 2 expected votes 2Resources configured Online:[ node1.huhu.com node2.huhu.com ] Master/SlaveSet: MS_mysql_drbd [mysql_drbd] Masters:[ node2.huhu.com ] Slaves:[ node1.huhu.com ] #drbd-overview 0:mydrbd/0Connected Secondary/Primary UpToDate/UpToDate C r----- [root@node1corosync]# 当前节点就切换为从节点了 此时保证了资源可以主从切换,但是文件系统是没有挂载 因此必须定义文件系统 crm(live)configure#primitive mystore ocf:heartbeat:Filesystem paramsdevice=/dev/drbd0 directory=/mydata fstype=ext3 op start timeout=60 op stoptimeout=60 crm(live)configure#verify 注意:这里千万不要提交,因为必须保证文件系统跟主节点在一起,定义排列约束 crm(live)configure#colocation mystore_with_MS_mysql_drbd inf: mystoreMS_mysql_drbd:Master 定义存储资源必须和资源的主节点在一起 crm(live)configure#order mystore_after_MS_mysql_drbd mandatory:MS_mysql_drbd:promote mystore:start 定义存储资源必须在主节点启动后进行挂载 crm(live)configure#verify crm(live)configure#commit crm(live)configure#cd .. crm(live)#status Lastupdated: Wed Jul 9 12:25:25 2014 Lastchange: Wed Jul 9 12:22:30 2014 via cibadmin on node1.huhu.com Stack:classic openais (with plugin) CurrentDC: node2.huhu.com - partition with quorum Version:1.1.10-14.el6_5.3-368c726 2Nodes configured, 2 expected votes 3Resources configured Online:[ node1.huhu.com node2.huhu.com ] Master/SlaveSet: MS_mysql_drbd [mysql_drbd] Masters:[ node1.huhu.com ] Slaves:[ node2.huhu.com ] mystore(ocf::heartbeat:Filesystem): Started node1.huhu.com crm(live)# 可以看到Master在node1上,mystore就启动在node1上 [root@node1~]# ls -lh /mydata/ total20K -rw-r--r--.1 root root 884 Jul 8 17:24 inittab drwx------2 root root 16K Jul 8 17:23 lost+found [root@node1~]# 手动模拟一次切换 [root@node1corosync]# crm node standby [root@node1corosync]# crm status Lastupdated: Wed Jul 9 12:28:55 2014 Lastchange: Wed Jul 9 12:28:49 2014 via crm_attribute on node1.huhu.com Stack:classic openais (with plugin) CurrentDC: node2.huhu.com - partition with quorum Version:1.1.10-14.el6_5.3-368c726 2Nodes configured, 2 expected votes 3Resources configured Nodenode1.huhu.com: standby Online:[ node2.huhu.com ] Master/SlaveSet: MS_mysql_drbd [mysql_drbd] Masters:[ node2.huhu.com ] Stopped:[ node1.huhu.com ] mystore(ocf::heartbeat:Filesystem): Started node2.huhu.com [root@node1corosync]# [root@node2~]# ls -lh /mydata/ total20K -rw-r--r--.1 root root 884 Jul 8 17:24 inittab drwx------2 root root 16K Jul 8 17:23 lost+found Youhave new mail in /var/spool/mail/root [root@node2~]# 这样就切换到node2节点上。 4.配置MySQL结合DRBD和corosync 分别在node1节点上创建MySQL用户和组 #groupadd -g 3306 mysql #useradd -u 3306 -g mysql -s /sbin/nologin -M mysql #id mysql uid=3306(mysql)gid=3306(mysql) groups=3306(mysql) #ssh node2 'groupadd -g 3306 mysql' #ssh node2 'useradd -u 3306 -g mysql -s /sbin/nologin -M mysql' #wgethttp://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.38-linux2.6-x86_64.tar.gz #tar zxvf mysql-5.5.38-linux2.6-x86_64.tar.gz -C /usr/local/ #cd /usr/local/ #ln -s mysql-5.5.38-linux2.6-x86_64/ mysql #cd mysql #chown root:mysql -R . #cp support-files/my-huge.cnf /etc/my.cnf #cp support-files/mysql.server /etc/init.d/mysqld #[ -x /etc/init.d/mysqld ] && echo "ok" || echo "NO" 确保当前在主节点上操作 #drbd-overview 0:mydrbd/0ConnectedPrimary/SecondaryUpToDate/UpToDate Cr----- /mydata ext3 2.0G 36M 1.9G 2% #mkdir -p /mydata/data #chown -R mysql:mysql /mydata/data/ #scripts/mysql_install_db --user=mysql--datadir=/mydata/data vim/etc/my.cnf datadir=/mydata/data #chkconfig --add mysqld #chkconfig mysqld off #service mysqld start 确保启动OK #/usr/local/mysql/bin/mysql -uroot -e "CREATE DATABASE mydb" [root@node1mysql]# /usr/local/mysql/bin/mysql -uroot -e "SHOW DATABASES" +--------------------+ |Database | +--------------------+ |information_schema | |mydb| |mysql | |performance_schema | |test | +-------------------- #service mysqld stop #chkconfig --list | grep 3:off | grep mysql mysqld0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@node1mysql]# 将存储资源切换到node2上,在node2MySQL配置好 #crm node standby [root@node1mysql]# crm status Lastupdated: Wed Jul 9 14:45:36 2014 Lastchange: Wed Jul 9 14:45:29 2014 via crm_attribute on node1.huhu.com Stack:classic openais (with plugin) CurrentDC: node2.huhu.com - partition with quorum Version:1.1.10-14.el6_5.3-368c726 2Nodes configured, 2 expected votes 3Resources configure Nodenode1.huhu.com: standby Online:[ node2.huhu.com ] Master/SlaveSet: MS_mysql_drbd [mysql_drbd] Masters: [ node2.huhu.com ] Stopped:[ node1.huhu.com ] mystore (ocf::heartbeat:Filesystem): Started node2.huhu.com [root@node1mysql]# crm node online [root@node1mysql]# crm status Lastupdated: Wed Jul 9 14:45:52 2014 Lastchange: Wed Jul 9 14:45:49 2014 via crm_attribute on node1.huhu.com Stack:classic openais (with plugin) CurrentDC: node2.huhu.com - partition with quorum Version:1.1.10-14.el6_5.3-368c726 2Nodes configured, 2 expected votes 3Resources configure Online:[ node1.huhu.com node2.huhu.com ] Master/SlaveSet: MS_mysql_drbd [mysql_drbd] Masters: [ node2.huhu.com ] Slaves:[ node1.huhu.com ] mystore (ocf::heartbeat:Filesystem): Started node2.huhu.com [root@node1mysql]# # scp /root/mysql-5.5.38-linux2.6-x86_64.tar.gz node2:/root/ # scp /etc/my.cnf node2:/etc/my.cnf # scp /etc/init.d/mysqld node2:/etc/init.d/mysqld 在node2上安装MySQL #tar zxvf mysql-5.5.38-linux2.6-x86_64.tar.gz -C /usr/local/ #cd /usr/local/ #ln -s mysql-5.5.38-linux2.6-x86_64/ mysql #cd mysql #chown root:mysql -R . 注意:千万不要手动创建/mydata/data,否则会导致文件损坏 缺少相关库文件# yum install libaio #service mysqld start #/usr/local/mysql/bin/mysql -uroot -e "SHOW DATABASES" +--------------------+ |Database | +--------------------+ |information_schema | |mydb| |mysql | |performance_schema | |test | +--------------------+ [root@node2mydata]# #service mysqld stop #chkconfig mysqld off 配置MySQL成为集群资源 crm(live)#configure crm(live)configure#primitive mysqld lsb:mysqld crm(live)configure#verify crm(live)configure#colocation mysqld_with_mystore inf: mysqld mystore crm(live)configure#show xml <rsc_colocation id="mysqld_with_mystore"score="INFINITY" rsc="mysqld" with-rsc="mystore"/> MySQL服务一定是跟MySQL存储资源在一起 crm(live)configure#order mysqld_after_mystore mandatory: mystore mysqld crm(live)configure#verify MySQL服务一定是在MySQ存储转移之后的,因此定义顺序约束 crm(live)#status Lastupdated: Wed Jul 9 16:18:27 2014 Lastchange: Wed Jul 9 16:18:16 2014 via cibadmin on node2.huhu.com Stack:classic openais (with plugin) CurrentDC: node2.huhu.com - partition with quorum Version:1.1.10-14.el6_5.3-368c726 2Nodes configured, 2 expected votes 4Resources configured Online:[ node1.huhu.com node2.huhu.com ] Master/SlaveSet: MS_mysql_drbd [mysql_drbd] Masters: [ node2.huhu.com ] Slaves:[ node1.huhu.com ] mystore (ocf::heartbeat:Filesystem): Started node2.huhu.com mysqld (lsb:mysqld): Started node2.huhu.com crm(live)# 因此登录node2节点 #/usr/local/mysql/bin/mysql -uroot -e "SHOW DATABASES" +--------------------+ |Database | +--------------------+ |information_schema | | mydb| |mysql | |performance_schema | |test | +--------------------+ #/usr/local/mysql/bin/mysql -uroot -e "DROP DATABASE mydb" #/usr/local/mysql/bin/mysql -uroot -e "CREATE DATABASE testdb" 这里再次进行主从节切换 #crm node standby #crm status Masters:[ node1.huhu.com ] Stopped:[ node2.huhu.com ] mystore(ocf::heartbeat:Filesystem): Started node1.huhu.com mysqld(lsb:mysqld): Started node1.huhu.com #crm node online Master/SlaveSet: MS_mysql_drbd [mysql_drbd] Masters: [ node1.huhu.com ] Slaves:[ node2.huhu.com ] mystore (ocf::heartbeat:Filesystem): Started node1.huhu.com mysqld (lsb:mysqld): Started node1.huhu.com 在node1节点上 #/usr/local/mysql/bin/mysql -uroot -e "SHOW DATABASES" +--------------------+ |Database | +--------------------+ |information_schema | |mysql | |performance_schema | |test | |testdb| +-------------------- testdb正常显示 最后给MySQL定义一个虚拟IP资源 crm(live)configure#primitive myip ocf:heartbeat:IPaddr paramsip=172.16.100.119 nic=eth0 cidr_netmask=24 crm(live)configure#verify crm(live)configure#colocation myip_with_MS_mysql_drbd inf:MS_mysql_drbd:Master myip crm(live)configure#verify crm(live)configure#show xml crm(live)configure#commit crm(live)configure#cd .. crm(live)#status Lastupdated: Wed Jul 9 16:46:27 2014 Lastchange: Wed Jul 9 16:46:20 2014 via cibadmin on node1.huhu.com Stack:classic openais (with plugin) CurrentDC: node2.huhu.com - partition with quorum Version:1.1.10-14.el6_5.3-368c726 2Nodes configured, 2 expected votes 5Resources configured Online:[ node1.huhu.com node2.huhu.com ] Master/SlaveSet: MS_mysql_drbd [mysql_drbd] Masters: [ node1.huhu.com ] Slaves:[ node2.huhu.com ] mystore (ocf::heartbeat:Filesystem): Started node1.huhu.com mysqld (lsb:mysqld): Started node1.huhu.com myip (ocf::heartbeat:IPaddr): Started node1.huhu.com crm(live) 可以看到myip已经在node1启动。 #ip addr 1:lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00 inet127.0.0.1/8 scope host lo inet6::1/128 scope host valid_lftforever preferred_lft forever 2:eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast stateUP qlen 1000 link/ether00:0c:29:a9:86:42 brd ff:ff:ff:ff:ff:ff inet172.16.100.103/24 brd 172.16.100.255 scope global eth0 inet172.16.100.119/24brd 172.16.100.255 scopeglobal secondary eth0 inet6fe80::20c:29ff:fea9:8642/64 scope link valid_lftforever preferred_lft forever 5.在其节点上进行MySQL登录验证 登录MySQL创建用户 #/usr/local/mysql/bin/mysql -uroot -e "GRANT ALL ON *.* TO root@'%'IDENTIFIED BY '123.com';FLUSH PRIVILEGES" #mysql -uroot -p123.com -h172.16.100.119 -e "SHOW DATABASES" +--------------------+ |Database | +--------------------+ |information_schema | |mysql | |performance_schema | |test | | testdb | +--------------------+ [root@localhost~]# 在模拟主从节点切换: #crm node standby #crm node online #crm status Online:[ node1.huhu.com node2.huhu.com ] Master/SlaveSet: MS_mysql_drbd [mysql_drbd] Masters: [ node2.huhu.com ] Slaves:[ node1.huhu.com ] mystore (ocf::heartbeat:Filesystem): Started node2.huhu.com mysqld (lsb:mysqld): Started node2.huhu.com myip (ocf::heartbeat:IPaddr): Started node2.huhu.com #mysql -uroot -p123.com -h172.16.100.119 -e "SHOW DATABASES" [root@node2~]# crm crm(live)#configure crm(live)configure#show nodenode1.huhu.com / attributesstandby=off nodenode2.huhu.com / attributesstandby=off primitivemyipIPaddr / paramsip=172.16.100.119nic=eth0cidr_netmask=24 primitivemysql_drbdocf:linbit:drbd / paramsdrbd_resource=mydrbd/ opstarttimeout=240interval=0/ opstoptimeout=100interval=0/ opmonitorrole=Masterinterval=50stimeout=30s/ opmonitorrole=Slaveinterval=60stimeout=30s primitivemysqldlsb:mysqld primitivemystoreFilesystem / paramsdevice="/dev/drbd0"directory="/mydata"fstype=ext3/ opstarttimeout=60interval=0/ opstoptimeout=60interval=0 msMS_mysql_drbd mysql_drbd / metamaster-max=1master-node-max=1clone-max=2clone-node-max=1notify=true colocationmyip_with_MS_mysql_drbdinf:MS_mysql_drbd:Mastermyip colocationmysqld_with_mystoreinf:mysqldmystore colocationmystore_with_MS_mysql_drbdinf:mystoreMS_mysql_drbd:Master ordermysqld_after_mystoreMandatory:mystore mysqld ordermystore_after_MS_mysql_drbdMandatory:MS_mysql_drbd:promote mystore:start propertycib-bootstrap-options:/ dc-version=1.1.10-14.el6_5.3-368c726/ cluster-infrastructure="classic openais (with plugin)" / expected-quorum-votes=2/ stonith-enabled=false/ no-quorum-policy=ignore rsc_defaultsrsc-options: / resource-stickiness=100 crm(live)configure# |