您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
基于drbd+corosync的高可用mysql
发布时间:2019-05-12 09:19:03编辑:雪饮阅读()
上回实现了drbd+corosync的高可用,这次来实现基于drbd+corosync的高可用mysql
配置drbd的ha主从资源
[root@node1 ~]# service corosync start
Starting Corosync Cluster Engine (corosync): [ OK ]
[root@node1 ~]# ssh node2 'service corosync start'
Starting Corosync Cluster Engine (corosync): [ OK ]
配置drbd的ha资源
[root@node1 ~]# crm
crm(live)# configure
crm(live)configure# primitive mysqldrbd ocf:heartbeat:drbd params drbd_resource=mydrbd op start timeout=240 op stop timeout=100 op monitor role=Master interval=20 timeout=30 op monitor role=Slave interval=30 timeout=30
crm(live)configure# ms ms_mysqldrbd mysqldrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
crm(live)configure# commit
测试主从情况:
当前状态
[root@node1 ~]# crm status
============
Last updated: Tue May 7 17:16:52 2019
Stack: openais
Current DC: node1.magedu.com - partition with quorum
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f
2 Nodes configured, 2 expected votes
3 Resources configured.
============
Online: [ node1.magedu.com node2.magedu.com ]
webip (ocf::heartbeat:IPaddr): Started node1.magedu.com
httpd (lsb:httpd): Started node1.magedu.com
Master/Slave Set: ms_mysqldrbd [mysqldrbd]
Slaves: [ node2.magedu.com node1.magedu.com ]
下线当前节点后
[root@node1 ~]# crm node standby
[root@node1 ~]# crm status
============
Last updated: Tue May 7 17:19:08 2019
Stack: openais
Current DC: node1.magedu.com - partition with quorum
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f
2 Nodes configured, 2 expected votes
3 Resources configured.
============
Node node1.magedu.com: standby
Online: [ node2.magedu.com ]
webip (ocf::heartbeat:IPaddr): Started node2.magedu.com
httpd (lsb:httpd): Started node2.magedu.com
Master/Slave Set: ms_mysqldrbd [mysqldrbd]
Masters: [ node2.magedu.com ]
Stopped: [ mysqldrbd:1 ]
当前节点重新上线后
[root@node1 ~]# crm node online
[root@node1 ~]# crm status
============
Last updated: Tue May 7 17:19:47 2019
Stack: openais
Current DC: node1.magedu.com - partition with quorum
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f
2 Nodes configured, 2 expected votes
3 Resources configured.
============
Online: [ node1.magedu.com node2.magedu.com ]
webip (ocf::heartbeat:IPaddr): Started node2.magedu.com
httpd (lsb:httpd): Started node2.magedu.com
Master/Slave Set: ms_mysqldrbd [mysqldrbd]
Masters: [ node2.magedu.com ]
Slaves: [ node1.magedu.com ]
[root@node1 ~]# drbd-overview
0:mydrbd Connected Secondary/Primary UpToDate/UpToDate C r-----
配置drbd的ha资源挂载及排列、顺序约束
crm(live)configure# primitive mystore ocf:heartbeat:Filesystem params device=/dev/drbd0 directory=/mydata fstype=ext3 op start timeout=60 op stop timeout=60
crm(live)configure# colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master
crm(live)configure# order mystore_after_ms_mysqldrbd mandatory: ms_mysqldrbd:promote mystore:start
测试drbd的ha资源主从挂载情况
当前挂载情况
[root@node1 ~]# crm status
============
Last updated: Tue May 7 17:34:50 2019
Stack: openais
Current DC: node1.magedu.com - partition with quorum
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f
2 Nodes configured, 2 expected votes
4 Resources configured.
============
Online: [ node1.magedu.com node2.magedu.com ]
webip (ocf::heartbeat:IPaddr): Started node2.magedu.com
httpd (lsb:httpd): Started node2.magedu.com
Master/Slave Set: ms_mysqldrbd [mysqldrbd]
Masters: [ node2.magedu.com ]
Slaves: [ node1.magedu.com ]
mystore (ocf::heartbeat:Filesystem): Started node2.magedu.com
将当前drbd的ha资源挂载所在节点下线后
[root@node1 ~]# crm node standby node2.magedu.com
[root@node1 ~]# crm status
============
Last updated: Tue May 7 17:40:19 2019
Stack: openais
Current DC: node1.magedu.com - partition with quorum
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f
2 Nodes configured, 2 expected votes
4 Resources configured.
============
Node node2.magedu.com: standby
Online: [ node1.magedu.com ]
webip (ocf::heartbeat:IPaddr): Started node1.magedu.com
httpd (lsb:httpd): Started node1.magedu.com
Master/Slave Set: ms_mysqldrbd [mysqldrbd]
Masters: [ node1.magedu.com ]
Stopped: [ mysqldrbd:0 ]
mystore (ocf::heartbeat:Filesystem): Started node1.magedu.com
准备mysql
上面已经将drbd的ha资源主从挂载配置好,并且最后挂载点停留在节点1上
接下来我们要在各个节点准备mysql服务。
首先就是要在当前挂载节点上完成mysql安装与初始化,测试服务没有问题后就去从节点上安装mysql,和挂载节点配置一样,只是不用初始化。
安装mysql
[root@node1 ~]# groupadd -g 3306 mysql
[root@node1 ~]# useradd -u 3306 -g mysql -s /sbin/nologin -M mysql
[root@node1 ~]# mkdir /mydata/data
You have new mail in /var/spool/mail/root
[root@node1 ~]# chown -R mysql.mysql /mydata/data/
[root@node1 ~]# tar zxvf /usr/local/src/mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local
[root@node1 ~]# ln -sv /usr/local/mysql-5.5.28-linux2.6-i686 /usr/local/mysql
create symbolic link `/usr/local/mysql' to `/usr/local/mysql-5.5.28-linux2.6-i686'
[root@node1 ~]# chown -R root:mysql /usr/local/mysql/*
[root@node1 ~]# cd /usr/local/mysql
[root@node1 mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
[root@node1 mysql]# cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
打开文件/etc/my.cnf将其中“thread_concurrency = 8”下面插入:
datadir = /mydata/data
innodb_file_per_table = 1
其中“innodb_file_per_table = 1”意思是让每个表独立一个文件作为表空间
[root@node1 mysql]#cp /usr/local/mysql/support-files/support-files/mysql.server /etc/init.d/mysqld
[root@node1 mysql]# chkconfig --add mysqld
[root@node1 mysql]# chkconfig mysqld off
[root@node1 mysql]# service mysqld start
配置远程访问(该步骤在生产环境中慎用,或者结合其它策略用,这里为了方便测试)
为了要测试mysql集群的节点主从切换后照样能访问,所以这里为了方便测试就直接开启了远程访问
[root@node1 mysql]# /usr/local/mysql/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.28-log MySQL Community Server (GPL)
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> grant all on *.* to 'root'@'%' identified by 'root';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
接下来关闭当前节点的mysql服务将当前节点切换为从节点,然后进入新的主节点上安装mysql,不用初始化数据,只需要配置文件相同即可,新的主节点上测试mysqld服务没有问题后也关闭mysqld服务。
定义mysql资源及约束
[root@node2 ~]# crm
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# verify
crm(live)configure# order mysqld_after_mystore mandatory: mystore mysqld
crm(live)configure# verify
crm(live)configure# commit
然后在数据库中创建些数据并进行主从节点切换测试是否数据一致,若是一致则ok。
配置vip
如果之前有httpd、vip的资源和相关排列约束与顺序约束,则都先清理掉,防止有冲突。
[root@node1 mysql]# crm configure
crm(live)configure# primitive myip ocf:heartbeat:IPaddr params ip=192.168.2.139 nic=eth0 cidr_netmask=255.255.0.0
crm(live)configure# verify
crm(live)configure# colocation myip_with_ms_mysqldrbd inf: ms_mysqldrbd:Master myip
crm(live)configure# verify
crm(live)configure# commit
然后通过一个mysql客户端连接vip访问mysql服务,并进行主从切换测试。
关键字词:drbd,mysql,高可用,corosync
上一篇:分布式复制块设备drbd
下一篇:RHCS集群配置