通过Pacemaker+corosync+DRBD配置Mysql的高可用集群.docx
- 文档编号:11758303
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:29
- 大小:25.13KB
通过Pacemaker+corosync+DRBD配置Mysql的高可用集群.docx
《通过Pacemaker+corosync+DRBD配置Mysql的高可用集群.docx》由会员分享,可在线阅读,更多相关《通过Pacemaker+corosync+DRBD配置Mysql的高可用集群.docx(29页珍藏版)》请在冰豆网上搜索。
通过Pacemaker+corosync+DRBD配置Mysql的高可用集群
通过Pacemaker+corosync+DRBD配置Mysql的高可用集群
平台环境和节点信息:
hostnameip环境
s1192.168.122.10CentOS6.3Linux2.6.32-279.el6.x86_64
s2192.168.122.11CentOS6.3Linux2.6.32-279.el6.x86_64
vip192.168.122.12
=====系统配置(两个节点)=====
vi/etc/hosts
192.168.122.10s1
192.168.122.11s2
[root@s1~]#cat/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=s1
[root@s2~]#cat/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=s2
[root@s1~]#hostnames1
[root@s2~]#hostnames2
关闭iptables(两个节点)
[root@s1~]#serviceiptablesstop
[root@s1~]#chkconfigiptablesoff
关闭selinux
[root@s1~]#setenforce0
[root@s2~]#setenforce0
[root@s1~]#vi/etc/sysconfig/selinux
SELINUX=permissive
ssh信任
[root@s1~]#ssh-keygen
[root@s1~]#ssh-copy-id-i.ssh/id_rsa.pubroot@192.168.122.11
然后再反过来做
同步时间
[root@s1~]#yuminstallntp
[root@s1~]#chkconfigntpdon
[root@s1~]#ntpdatepool.ntp.org
[root@s1~]#servicentpdstart
将新增的512M磁盘分区
[root@s1~]#fdisk-cu/dev/sdb
n/p/1/enter/enter/w
[root@s2~]#fdisk-cu/dev/sdb
n/p/1/enter/enter/w
=====安装所需软件(两个节点)=====
epel源
[root@s1~]#rpm-ivh
[root@s2~]#rpm-ivh
安装pacemaker/corosync
[root@s1~]#yuminstallpacemakercorosync-y
[root@s2~]#yuminstallpacemakercorosync-y
安装drbd
[root@s1~]#rpm-ivhhttp:
//elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm
[root@s1~]#rpm-ivhhttp:
//elrepo.org/linux/elrepo/el6/x86_64/RPMS/drbd84-utils-8.4.1-2.el6.elrepo.x86_64.rpm
[root@s1~]#rpm-ivhhttp:
//elrepo.org/linux/elrepo/el6/x86_64/RPMS/kmod-drbd84-8.4.1-2.el6.elrepo.x86_64.rpm
[root@s2~]#rpm-ivhhttp:
//elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm
[root@s2~]#rpm-ivhhttp:
//elrepo.org/linux/elrepo/el6/x86_64/RPMS/drbd84-utils-8.4.1-2.el6.elrepo.x86_64.rpm
[root@s2~]#rpm-ivhhttp:
//elrepo.org/linux/elrepo/el6/x86_64/RPMS/kmod-drbd84-8.4.1-2.el6.elrepo.x86_64.rpm
[root@s1~]#rpm-qa|grep-ecorosync-epacemaker-edrbd
corosync-1.4.1-7.el6.x86_64
pacemaker-libs-1.1.7-6.el6.x86_64
pacemaker-cluster-libs-1.1.7-6.el6.x86_64
pacemaker-1.1.7-6.el6.x86_64
drbd84-utils-8.4.1-2.el6.elrepo.x86_64
corosynclib-1.4.1-7.el6.x86_64
pacemaker-cli-1.1.7-6.el6.x86_64
kmod-drbd84-8.4.1-2.el6.elrepo.x86_64
=====配置DRBD(仅在s1)=====
[root@s1~]#lsmod|grepdrbd
drbd3069000
libcrc32c12461drbd
可以看到在安装完drbd后,drbd模块已经被内核加载了。
修改drbd的配置文件
[root@s1drbd.d]#vi/etc/drbd.d/global_common.conf
global{
usage-countyes;
#minor-countdialog-refreshdisable-ip-verification
}
common{
handlers{
pri-on-incon-degr"/usr/lib/drbd/notify-pri-on-incon-degr.sh;/usr/lib/drbd/notify-emergency-reboot.sh;echob>/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;echob>/proc/sysrq-trigger;reboot-f";
local-io-error"/usr/lib/drbd/notify-io-error.sh;/usr/lib/drbd/notify-emergency-shutdown.sh;echoo>/proc/sysrq-trigger;halt-f";
#fence-peer"/usr/lib/drbd/crm-fence-peer.sh";
#split-brain"/usr/lib/drbd/notify-split-brain.shroot";
#out-of-sync"/usr/lib/drbd/notify-out-of-sync.shroot";
#before-resync-target"/usr/lib/drbd/snapshot-resync-target-lvm.sh-p15---c16k";
#after-resync-target/usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
}
startup{
#wfc-timeoutdegr-wfc-timeoutoutdated-wfc-timeoutwait-after-sb
}
options{
#cpu-maskon-no-data-accessible
}
disk{
#sizemax-bio-bvecson-io-errorfencingdisk-barrierdisk-flushes
#disk-drainmd-flushesresync-rateresync-afteral-extents
#c-plan-aheadc-delay-targetc-fill-targetc-max-rate
#c-min-ratedisk-timeout
}
net{
#protocoltimeoutmax-epoch-sizemax-buffersunplug-watermark
#connect-intping-intsndbuf-sizercvbuf-sizeko-count
#allow-two-primariescram-hmac-algshared-secretafter-sb-0pri
#after-sb-1priafter-sb-2prialways-asbprr-conflict
#ping-timeoutdata-integrity-algtcp-corkon-congestion
#congestion-fillcongestion-extentscsums-algverify-alg
#use-rle
protocolC;
}
}
[root@s1drbd.d]#vi/etc/drbd.d/mysql.res
resourcemysql{
ons1{
device/dev/drbd0;
disk/dev/sdb1;
address192.168.122.10:
7789;
meta-diskinternal;
}
ons2{
device/dev/drbd0;
disk/dev/sdb1;
address192.168.122.11:
7789;
meta-diskinternal;
}
}
复制drbd的配置文件到s2上
[root@s1drbd.d]#scp/etc/drbd.d/*192.168.122.11:
/etc/drbd.d/
global_common.conf100%16641.6KB/s00:
00
mysql.res100%2670.3KB/s00:
00
创建mysql.res中定义的资源(两个节点)
[root@s1drbd.d]#drbdadmcreate-mdmysql
Writingmetadata...
initializingactivitylog
NOTinitializingbitmap
Newdrbdmetadatablocksuccessfullycreated.
success
[root@s1drbd.d]#drbdadmadjustmysql
[root@s1drbd.d]#ll/dev/drbd0
brw-rw----.1rootdisk147,09月316:
09/dev/drbd0
[root@s2drbd.d]#drbdadmcreate-mdmysql
Writingmetadata...
initializingactivitylog
NOTinitializingbitmap
Newdrbdmetadatablocksuccessfullycreated.
success
[root@s2drbd.d]#drbdadmadjustmysql
[root@s2drbd.d]#ll/dev/drbd0
brw-rw----.1rootdisk147,09月316:
11/dev/drbd0
=====启动drbd,查看drbd状态(两个节点)=====
[root@s1~]#servicedrbdstart
[root@s2~]#servicedrbdstart
[root@s1~]#servicedrbdstatus
drbddriverloadedOK;devicestatus:
version:
8.4.1(api:
1/proto:
86-100)
GIT-hash:
91b4c048c1a0e06777b5f65d312b38d47abaea80buildbyphil@Build64R6,2012-04-1711:
28:
08
m:
rescsrodspmountedfstype
0:
mysqlConnectedSecondary/SecondaryInconsistent/InconsistentC
[root@s1~]#drbd-overview
0:
mysql/0ConnectedSecondary/SecondaryInconsistent/InconsistentCr-----
=====设置drbd的主节点(仅s1)=====
[root@s1~]#drbd-overview
0:
mysql/0ConnectedSecondary/SecondaryInconsistent/InconsistentCr-----
[root@s1~]#drbdadmprimarymysql
0:
Statechangefailed:
(-2)NeedaccesstoUpToDatedata
Command'drbdsetupprimary0'terminatedwithexitcode17
[root@s1~]#drbdadmprimary--forcemysql
[root@s1~]#drbd-overview
0:
mysql/0SyncSourcePrimary/SecondaryUpToDate/InconsistentCr-----
[>...................]sync'ed:
5.5%(496588/523212)K
[root@s1~]#drbd-overview
0:
mysql/0ConnectedPrimary/SecondaryUpToDate/UpToDateCr-----
=====创建文件系统(仅在primary)=====
[root@s1~]#mkfs.ext4/dev/drbd0
[root@s1~]#mkdir/data
[root@s1~]#ssh192.168.122.11'mkdir/data'
[root@s1~]#mount/dev/drbd0/data/
[root@s1~]#echo"123">/data/test1
[root@s1~]#echo"456">/data/test2
[root@s1~]#ls/data/
lost+foundtest1test2
=====降级s1为备机/升级s2为主机=====
[root@s1~]#drbd-overview
0:
mysql/0ConnectedPrimary/SecondaryUpToDate/UpToDateCr-----/dataext4495M11M459M3%
[root@s1~]#umount/data/
[root@s1~]#ls/data/
[root@s1~]#drbdadmsecondarymysql
[root@s1~]#drbd-overview
0:
mysql/0ConnectedSecondary/SecondaryUpToDate/UpToDateCr-----
[root@s1~]#
[root@s2~]#drbd-overview
0:
mysql/0ConnectedSecondary/SecondaryUpToDate/UpToDateCr-----
[root@s2~]#drbdadmprimarymysql
[root@s2~]#drbd-overview
0:
mysql/0ConnectedPrimary/SecondaryUpToDate/UpToDateCr-----
[root@s2~]#mount/dev/drbd0/data/
[root@s2~]#ls/data/
lost+foundtest1test2
[root@s2~]#cat/data/test1
123
[root@s2~]#cat/data/test2
456
确认没问题,将s1升级为primary,s2降级为secondary
[root@s2~]#umount/data/
[root@s2~]#drbdadmsecondarymysql
[root@s2~]#drbd-overview
0:
mysql/0ConnectedSecondary/SecondaryUpToDate/UpToDateCr-----
[root@s1~]#drbdadmprimarymysql
[root@s1~]#mount/dev/drbd0/data/
[root@s1~]#ls/data/
lost+foundtest1test2
=====下面开始安装配置mysql=====
这里使用yum安装mysql来做测试
[root@s1~]#drbd-overview//确保s1是主设备
0:
mysql/0ConnectedPrimary/SecondaryUpToDate/UpToDateCr-----/dataext4495M32M439M7%
[root@s1~]#yuminstallmysql-server-y
[root@s1~]#mkdir/data/mysql//做为mysql的数据目录
[root@s1~]#chown-Rmysql:
mysql/data/mysql
[root@s1~]#mysql_install_db--user=mysql--datadir=/data/mysql//只在primary上做初始化
[root@s1~]#vi/etc/f
[mysqld]
#datadir=/var/lib/mysql
datadir=/data/mysql
#socket=/var/lib/mysql/mysql.sock
socket=/data/mysql/mysql.sock
user=mysql
#Disablingsymbolic-linksisrecommendedtopreventassortedsecurityrisks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]//确保有这个,否则mysql客户端工具连接时候又要找/var/lib/mysql/mysql.sock了
socket=/data/mysql/mysql.sock
[root@s1~]#vi/etc/init.d/mysqld
修改
#get_mysql_optionmysqlddatadir"/var/lib/mysql"
get_mysql_optionmysqlddatadir"/data/mysql"
[root@s1~]#servicemysqldstart
[root@s1~]#scp/etc/f192.168.122.11:
/etc
[root@s1~]#scp/etc/init.d/mysqld192.168.122.11:
/etc/init.d
在s2上安装mysql
先升级s2为primary,然后在s2上挂载drbd0到/data/mysql
[root@s1~]#drbdadmsecondarymysql
[root@s1~]#servicemysqldstop
[root@s1~]#umount/data
[root@s2~]#drbdadmprimarymysql
[root@s2~]#mount/dev/drbd0/data/
[root@s2~]#yuminstallmysql-server-y
[root@s2~]#servicemysqldstart//注意这里不要执行mysql_install_db,直接start即可,之前要查看/etc/f是否和s1的相同
完成后再恢复s1为primary,s2为secondary
[root@s2~]#servicemysqldstop
[root@s2~]#umount/data/
[root@s2~]#drbdadmsecondarymysql
[root@s1~]#drbdadmprimarymysql
[root@s1~]#mount/dev/drbd0/data/
[root@s1~]#servicemysqldstart
此处我在s1的mysql上新建一个库,然后把s1降级,s2升级后,可以在s2上看到新建的库。
注意:
在s2为备节点,没有升级为主节点的时候,不要在s2上启动mysql,否则会进行系统库的安装。
=====安装配置corosync和pacemaker=====
主节点创建corosync密钥,并复制到备用节点
[root@s1~]#corosync-keygen
[root@s1~]#chmod0400/etc/corosync/authkey
[root@s1~]#scp/etc/corosync/authkey192.168.122.11:
/etc/corosync/
主节点修改corosync.conf文件,并复制到备用节点
[root@s1~]#cp/etc/corosync/corosync.conf.example/etc/corosync/corosync.conf
[root@s1~]#vi/etc/corosync/coro
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通过 Pacemaker corosync DRBD 配置 Mysql 可用 集群