您好,登錄后才能下訂單哦!
這篇文章主要介紹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 "#"
#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/Secondary ds: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/0Connected Secondary/Secondary UpToDate/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/0Connected Primary/Secondary UpToDate/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 ] Successfully readmain 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/0Connected Primary/Secondary UpToDate/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/24 brd 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 -h272.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 -h272.16.100.119 -e "SHOW DATABASES"
[root@node2~]# crm
crm(live)# configure
crm(live)configure# show
nodenode1.huhu.com \
attributes standby=off
nodenode2.huhu.com \
attributes standby=off
primitive myipIPaddr \
params ip=172.16.100.119 nic=eth0 cidr_netmask=24
primitive mysql_drbdocf:linbit:drbd \
params drbd_resource=mydrbd \
op start timeout=240 interval=0 \
op stop timeout=100 interval=0 \
op monitor role=Masterinterval=50s timeout=30s \
op monitor role=Slaveinterval=60s timeout=30s
primitive mysqldlsb:mysqld
primitive mystoreFilesystem \
params device="/dev/drbd0" directory="/mydata" fstype=ext3 \
op start timeout=60 interval=0 \
op stop timeout=60 interval=0
msMS_mysql_drbd mysql_drbd \
meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
colocationmyip_with_MS_mysql_drbd inf: MS_mysql_drbd:Master myip
colocationmysqld_with_mystore inf: mysqld mystore
colocationmystore_with_MS_mysql_drbd inf: mystore MS_mysql_drbd:Master
ordermysqld_after_mystore Mandatory: mystore mysqld
ordermystore_after_MS_mysql_drbd Mandatory: MS_mysql_drbd:promote mystore:start
property cib-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_defaults rsc-options: \
resource-stickiness=100
crm(live)configure#
以上是“CoroSync+Drbd+MySQL如何實現MySQL的高可用集群”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。