Mysql+Corosync+Pacemaker+DRBD

来源:互联网 发布:淘宝开网店的程序 编辑:程序博客网 时间:2024/05/17 00:03

1、环境介绍
OS:centos 6.5
kernel:2.6.32-431.11.2.el6.x86_64
node1:nginxha001 10.0.15.31 Master
node2:nginxha002 10.0.15.32 Slave
vip:10.0.15.30
说明:本例主要以drbd为主,涉及到mysql,corosync,pacemaker程序的安装请参考其他资料。程序两台都要安装,定义drbd资源可在一台上配置完毕复制到另外一台,创建磁盘需两台都创建,定义corosync资源只需在一台上配置即可,他会自动同步到另外一台。若程序连接mysql用虚拟ip即vip连接,最好是把程序也部署在drbd磁盘上,这样程序配置为localhost即可。

2、安装依赖包
yum -y install gcc rpm-build kernel-devel kernel-headers flex ncurses-devel

wget http://elrepo.org/linux/elrepo/el5/x86_64/RPMS/drbd84-utils-8.4.3-1.el5.elrepo.x86_64.rpm
wget http://elrepo.org/linux/elrepo/el6/x86_64/RPMS/kmod-drbd84-8.4.3-1.el6_4.elrepo.x86_64.rpm
yum -y install drbd84-utils-8.4.3-1.el5.elrepo.x86_64.rpm
yum install -y kmod-drbd84-8.4.3-1.el6_4.elrepo.x86_64.rpm

3、定义drbd资源
vi /etc/drbd.d/mysql.res  #定义mysql资源,效果一样 
resource mysql { 
protocol C;
  device /dev/drbd0;
  disk /dev/sdc1;
  meta-disk internal;
  on nginxha001 { 
  address 10.0.15.31:7789; 
 } 
  on nginxha002 { 
  address 10.0.15.32:7789; 
 } 
}


4、启动服务,并格式化磁盘
创建drbd数据同步所需的分区,两台电脑的空间要一样大
fdisk /dev/sdc
drbdadm create-md mysql
service drbd start

设置为主几点,仅在主节点上操作
drbdadm -- --overwrite-data-of-peer primary mysql
创建文件系统
mkfs -t ext4 /dev/drbd0

5、配置corosync资源
crm(live)# configure
property stonith-enabled=false
property no-quorum-policy=ignore
定义Mysql服务资源
primitive Mysqld lsb:mysqld
配置DRBD主从资源
primitive Drbd ocf:linbit:drbd params drbd_resource="mysql" op start interval="0" timeout="240" op stop interval="0" timeout="100"
master My_Drbd Drbd meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
定义一个文件系统资源
primitive FileSys ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/mysqldata" fstype="ext4" op start timeout="60s" op stop timeout="60s"
定将资源之间的位置和启动顺序约束
 #让文件系统与DRBD主节点运行在一起
colocation FileSys_on_My_Drbd inf: FileSys My_Drbd
  #让DRBD服务比文件系统先启动
order FileSys_after_My_Drbd inf: My_Drbd:promote FileSys:start
 #让Mysql服务与文件系统运行在一起
colocation Mysqld_on_FileSys inf: Mysqld FileSys
 #让文件系统比Mysql服务先运行
order Mysqld_after_FileSys inf: FileSys Mysqld:start
 #让虚拟IP与Mysql服务运行在一起
colocation vip_on_Mysqld inf: vip Mysqld

执行完毕后,最后的配置文件如下:
node nginxha001 \
        attributes standby="off"
node nginxha002 \
        attributes standby="off"
primitive Drbd ocf:linbit:drbd \
        params drbd_resource="mysql" \
        op monitor interval="10s" role="Master" \
        op monitor interval="20s" role="Slave" \
        op start timeout="240s" interval="0" \
        op stop timeout="100" interval="0"
primitive FileSys ocf:heartbeat:Filesystem \
        params device="/dev/drbd0" directory="/mysqldata" fstype="ext4" \
        op start timeout="60s" interval="0" \
        op stop timeout="60s" interval="0"
primitive Mysqld lsb:mysqld
primitive vip ocf:heartbeat:IPaddr \
        params ip="10.1.15.30" nic="eth0" cidr_netmask="24" \
        op monitor interval="10s"
ms My_Drbd Drbd \
        meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
colocation FileSys_on_My_Drbd inf: FileSys My_Drbd:Master
colocation Mysqld_on_FileSys inf: Mysqld FileSys
colocation vip_on_Mysqld inf: vip Mysqld
order FileSys_after_My_Drbd inf: My_Drbd:promote FileSys:start
order Mysqld_after_FileSys inf: FileSys Mysqld:start
property $id="cib-bootstrap-options" \
        dc-version="1.1.10-14.el6_5.2-368c726" \
        cluster-infrastructure="classic openais (with plugin)" \
        expected-quorum-votes="4" \
        stonith-enabled="false" \
        no-quorum-policy="ignore" \
        last-lrm-refresh="1396576217"
rsc_defaults $id="rsc-options" \
        resource-stickiness="100"
#vim:set syntax=pcmk


若有有错误,执行如下命令清除错误即可
crm resource cleanup Mysqld
crm resource cleanup vip
crm resource cleanup FileSys

6、其他命令
挂载drbdo
mount /dev/drbd0 /mysqldata/
卸载
umount /mysqldata/
设置drbd为主,只有设置为主的才能挂载磁盘
drbdadm primary mysql
设置drbd为备用
drbdadm secondary mysql

watch -n1 'drbd-overview'  观察数据同步情况,ctrl+c退出。
drbd-overview  #查看状态,当为下面内容时,进行下一步操作 
cat /proc/drbd 查看同步进度

7、修改my.cnf配置,主要更改数据目录为drbd的目录
vi /etc/my.cnf

[mysqld]
datadir=/mysqldata
socket=/mysqldata/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/mysqldata/mysqld.log
pid-file=/mysqldata/mysqld.pid
[client]
socket=/mysqldata/mysql.sock

0 0
原创粉丝点击