mysql drbd pacemaker_corosync+pacemaker+mysql+drbd 实现mysql的高可用
# 接上版 鏈接:http://xiong51.blog.51cto.com/5239058/1929054
########### node1 mysql安裝開始 ##################
[root@node1 ~]# pcs cluster stop --all
[root@node1 ~]# systemctl ?start drbd
[root@node2 ~]# systemctl ?start drbd
# 將節(jié)點(diǎn)1設(shè)為主節(jié)點(diǎn)掛載磁盤配置mariadb
[root@node1 ~]# drbdadm primary mystore
[root@node1 ~]# drbd-overview
0:mystore/0 ?Connected Primary/Secondary UpToDate/UpToDate
[root@node1 ~]# groupadd -r -g 3000 mysql
[root@node1 ~]# useradd -r -g 3000 -u 3001 mysql
# 掛載drbd磁盤并創(chuàng)建目錄
[root@node1 ~]# mount /dev/drbd0 /mydata/
[root@node1 ~]# mkdir /mydata/mysql
# 設(shè)置目錄權(quán)限為mysql組,mysql用戶
[root@node1 ~]# chown mysql.mysql /mydata/mysql/ -R
# 解壓至/usr/local 并軟鏈成mysql目錄
[root@node1 ~]# tar xf mariadb-5.5.54-linux-x86_64.tar.gz -C /usr/local/
[root@node1 ~]# cd !$
[root@node1 local]# chown mysql.mysql mariadb-5.5.54-linux-x86_64/ -R
[root@node1 local]# ln -sv mariadb-5.5.54-linux-x86_64/ mysql
[root@node1 local]# cd mysql/
[root@node1 mysql]# cp support-files/my-large.cnf /etc/my.cnf
# 添加文件屬性,不檢查名稱,目錄 ? 添加如下幾行
[root@node1 mysql]# ?vim /etc/my.cnf
innodb_file_per_table = 1
skip_name_resolve = 1
datadir = /mydata/mysql
basedir = /usr/local/mysql
# 初始化數(shù)據(jù)庫(kù)
[root@node1 mysql]# ./scripts/mysql_install_db --user=mysql --group=mysql --basedir=/usr/local/mysql/ --datadir=/mydata/mysql/
# 復(fù)制啟動(dòng)腳本
[root@node1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@node1 mysql]# chmod +x ?/etc/init.d/mysqld
# 安裝完成 直接
[root@node1 mysql]# service mysqld start
Starting MySQL.170524 17:12:04 mysqld_safe Logging to '/mydata/mysql/node1.err'.
170524 17:12:04 mysqld_safe Starting mysqld daemon with databases from /mydata/mysql
.. SUCCESS!
# 設(shè)置環(huán)境變量
[root@node1 bin]# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
[root@node1 bin]# source !$
# 能直接登陸說(shuō)明安裝成功
[root@node1 bin]# mysql
Welcome to the MariaDB monitor. ?Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.54-MariaDB MariaDB Server
[root@node1 bin]# service mysqld stop
Shutting down MySQL...... SUCCESS!
# 卸載磁盤 注意上面那步停止mysql一定要做
[root@node1 mysql]# umount /mydata/
# 將node1設(shè)置為從節(jié)點(diǎn)
[root@node1 bin]# drbdadm secondary mystore
[root@node1 bin]# drbd-overview
0:mystore/0 ?Connected Secondary/Secondary UpToDate/UpToDate
# 復(fù)制配置至另一主機(jī)中
[root@node1 mysql]# scp /etc/my.cnf node2:/etc/
################## node1 mysql安裝完成 ###################
################## node2 mysql安裝開始 ###################
# 此處為節(jié)點(diǎn)2新建mysql用戶
[root@node2 ~]# groupadd -r -g 3000 mysql
[root@node2 ~]# useradd -r -g 3000 -u 3001 mysql
[root@node2 ~]# drbdadm primary mystore
[root@node2 ~]# drbd-overview
0:mystore/0 ?Connected Primary/Secondary UpToDate/UpToDate
# 掛載drbd磁盤并創(chuàng)建目錄
[root@node2 ~]# mount /dev/drbd0 /mydata/
# 解壓至/usr/local 并軟鏈成mysql目錄
[root@node2 ~]# tar xf mariadb-5.5.54-linux-x86_64.tar.gz -C /usr/local/
[root@node2 ~]# cd !$
[root@node2 local]# chown mysql.mysql mariadb-5.5.54-linux-x86_64/ -R
[root@node2 local]# ln -sv mariadb-5.5.54-linux-x86_64/ mysql
[root@node2 local]# cd mysql/
#無(wú)需初始化,配置啟動(dòng)文件
[root@node2 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@node2 mysql]# chmod +x ?/etc/init.d/mysqld
# 安裝完成 直接
[root@node2 mysql]# service mysqld start
Starting MySQL.170524 17:12:04 mysqld_safe Logging to '/mydata/mysql/node2.err'.
170524 17:12:04 mysqld_safe Starting mysqld daemon with databases from /mydata/mysql
.. SUCCESS!
# 設(shè)置環(huán)境變量
[root@node2 bin]# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
[root@node2 bin]# source !$
# 能直接登陸說(shuō)明安裝成功
[root@node1 bin]# service mysqld stop
Shutting down MySQL...... SUCCESS!
# 卸載磁盤 注意上面那步停止mysql一定要做
[root@node1 mysql]# umount /mydata/
# 將node1設(shè)置為從節(jié)點(diǎn)
[root@node1 bin]# drbdadm secondary mystore
[root@node1 bin]# drbd-overview
0:mystore/0 ?Connected Secondary/Secondary UpToDate/UpToDate
#################### node2 mysql安裝完成 #####################
# 配置高可用 必須停止drbd
[root@node1 ~]# systemctl ?stop drbd
[root@node2 ~]# systemctl ?stop drbd
[root@node1 ~]# pcs cluster start --all
# 定義一個(gè)虛擬IP地址
crm(live)configure# primitive mysqlip ocf:heartbeat:IPaddr2 params ip=200
# 定義mysql啟動(dòng)服務(wù)
crm(live)configure# primitive mysqlserver lsb:mysqld op monitor timeout=30s ?interval=20s
# Mandatory: 也可定義成inf
# 定義mysqlip必須跟mysqlserver一起
crm(live)configure# colocation mysqlip_with_mysqlserver inf: mysqlip mysqlserver
# 定義順序約束 主從啟動(dòng)后跟掛載,(排序約束中也有一條,定義的是mount必須跟drbd的主節(jié)點(diǎn)在一起)
crm(live)configure# order mount_after_ms_mydatas_master Mandatory: ms_mydatas:promote mount
# 順序約束大概如下意思 ? ? drbd(啟動(dòng)主節(jié)點(diǎn)時(shí)直接掛載) --> mysqlip --> ?mount --> mysqlserver
crm(live)configure# order mysqlip_after_mount Mandatory: mysqlip mount
crm(live)configure# order mysqlserver_after_mysqlip Mandatory: mysqlip mysqlserver
###################查看所有定義資源的信息####################
crm(live)# configure
crm(live)configure# show
node 1: node1
node 2: node2
primitive mount Filesystem \
params device="/dev/drbd0" directory="/mydata" fstype=ext4 \
op start timeout=60s interval=0 \
op stop timeout=60s interval=0
primitive mydatas ocf:linbit:drbd \
params drbd_resource=mystore \
op monitor role=Master interval=10s timeout=20s \
op monitor role=Slave interval=20s timeout=20s \
op start timeout=240s interval=0 \
op stop timeout=100s interval=0
primitive mysqlip IPaddr \
params ip=192.168.8.200 broadcast=192.168.8.255
primitive mysqlserver lsb:mysqld \
op monitor timeout=30s interval=20s
ms ms_mydatas mydatas \
meta clone-max=2 clone-node-max=1 master-max=1 master-node-max=1 notify=true
order mount_after_ms_mydatas_master inf: ms_mydatas:promote mount
colocation mount_with_ms_mydatas_master inf: mount ms_mydatas:Master
order mysqlip_after_mount Mandatory: mysqlip mount
colocation mysqlip_with_mysqlserver inf: mysqlip mysqlserver
order mysqlserver_after_mysqlip Mandatory: mysqlip mysqlserver
##################################################################
##############################狀態(tài)查看##############################
crm(live)# show
ERROR: show: No such command
crm(live)# status
Last updated: Fri May 26 11:51:42 2017
Last change: Fri May 26 11:43:38 2017 by root via cibadmin on node1
Stack: corosync
Current DC: node1 (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 5 resources configured
Online: [ node1 node2 ]
Full list of resources:
Master/Slave Set: ms_mydatas [mydatas]
Masters: [ node1 ]
Slaves: [ node2 ]
mount(ocf::heartbeat:Filesystem):Started node1
mysqlip(ocf::heartbeat:IPaddr):Started node1
mysqlserver(lsb:mysqld):Started node1
####################################################################
# 切換節(jié)點(diǎn),查看狀態(tài)是否能夠轉(zhuǎn)移
crm(live)# node
crm(live)node# standby node1
# 錯(cuò)誤提示
Master/Slave Set: ms_mydatas [mydatas]
Masters: [ node2 ]
Stopped: [ node1 ]
mount(ocf::heartbeat:Filesystem):Stopped
mysqlip(ocf::heartbeat:IPaddr):Stopped
mysqlserver(lsb:mysqld):Stopped
Failed Actions:
* mysqlserver_start_0 on node2 'unknown error' (1): call=216, status=complete, exitreason='none',
last-rc-change='Fri May 26 11:52:53 2017', queued=0ms, exec=1060ms
* mount_start_0 on node2 'unknown error' (1): call=215, status=complete, exitreason='Couldn't mount filesystem /dev/drbd0 on /mydata',
last-rc-change='Fri May 26 11:52:53 2017', queued=0ms, exec=349ms
# 解決方案:當(dāng)出現(xiàn)無(wú)法掛載之類的情況首先先清空一下?tīng)顟B(tài),可能是前一個(gè)節(jié)點(diǎn)信息還沒(méi)有傳遞到另一個(gè)節(jié)點(diǎn)
crm(live)node# clearstate node2
Do you really want to drop state for node node2 (y/n)? y
Waiting for 1 replies from the CRMd. OK
############清空之后再查看#############
crm(live)# status
Last updated: Fri May 26 11:54:28 2017
Last change: Fri May 26 11:52:47 2017 by root via crm_attribute on node1
Stack: corosync
Current DC: node1 (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 5 resources configured
Node node1: standby
Online: [ node2 ]
Full list of resources:
Master/Slave Set: ms_mydatas [mydatas]
Masters: [ node2 ]
Stopped: [ node1 ]
mount(ocf::heartbeat:Filesystem):Started node2
mysqlip(ocf::heartbeat:IPaddr):Started node2
mysqlserver(lsb:mysqld):Started node2
############成功切換至另一節(jié)點(diǎn)
# 避免node1恢復(fù)搶回,搶回可能也會(huì)導(dǎo)致服務(wù)無(wú)法正常使用,設(shè)置黏性
crm(live)configure# property default-resource-stickiness=100
# 然后將node1設(shè)置為online狀態(tài)
crm(live)node# online
# 再次查看服務(wù), node2依舊正常運(yùn)行
http://litaotao.blog.51cto.com/6224470/1303307
總結(jié)
以上是生活随笔為你收集整理的mysql drbd pacemaker_corosync+pacemaker+mysql+drbd 实现mysql的高可用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql binlo 抽取_使用mys
- 下一篇: mysql自连接分组查询最新_MySQL