日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql drbd pacemaker_corosync+pacemaker+mysql+drbd 实现mysql的高可用

發布時間:2023/12/19 数据库 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

# 將節點1設為主節點掛載磁盤配置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磁盤并創建目錄

[root@node1 ~]# mount /dev/drbd0 /mydata/

[root@node1 ~]# mkdir /mydata/mysql

# 設置目錄權限為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

# 初始化數據庫

[root@node1 mysql]# ./scripts/mysql_install_db --user=mysql --group=mysql --basedir=/usr/local/mysql/ --datadir=/mydata/mysql/

# 復制啟動腳本

[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!

# 設置環境變量

[root@node1 bin]# vim /etc/profile.d/mysql.sh

export PATH=/usr/local/mysql/bin:$PATH

[root@node1 bin]# source !$

# 能直接登陸說明安裝成功

[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設置為從節點

[root@node1 bin]# drbdadm secondary mystore

[root@node1 bin]# drbd-overview

0:mystore/0 ?Connected Secondary/Secondary UpToDate/UpToDate

# 復制配置至另一主機中

[root@node1 mysql]# scp /etc/my.cnf node2:/etc/

################## node1 mysql安裝完成 ###################

################## node2 mysql安裝開始 ###################

# 此處為節點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磁盤并創建目錄

[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/

#無需初始化,配置啟動文件

[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!

# 設置環境變量

[root@node2 bin]# vim /etc/profile.d/mysql.sh

export PATH=/usr/local/mysql/bin:$PATH

[root@node2 bin]# source !$

# 能直接登陸說明安裝成功

[root@node1 bin]# service mysqld stop

Shutting down MySQL...... SUCCESS!

# 卸載磁盤 注意上面那步停止mysql一定要做

[root@node1 mysql]# umount /mydata/

# 將node1設置為從節點

[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

# 定義一個虛擬IP地址

crm(live)configure# primitive mysqlip ocf:heartbeat:IPaddr2 params ip=200

# 定義mysql啟動服務

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

# 定義順序約束 主從啟動后跟掛載,(排序約束中也有一條,定義的是mount必須跟drbd的主節點在一起)

crm(live)configure# order mount_after_ms_mydatas_master Mandatory: ms_mydatas:promote mount

# 順序約束大概如下意思 ? ? drbd(啟動主節點時直接掛載) --> 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

##################################################################

##############################狀態查看##############################

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

####################################################################

# 切換節點,查看狀態是否能夠轉移

crm(live)# node

crm(live)node# standby node1

# 錯誤提示

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

# 解決方案:當出現無法掛載之類的情況首先先清空一下狀態,可能是前一個節點信息還沒有傳遞到另一個節點

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

############成功切換至另一節點

# 避免node1恢復搶回,搶回可能也會導致服務無法正常使用,設置黏性

crm(live)configure# property default-resource-stickiness=100

# 然后將node1設置為online狀態

crm(live)node# online

# 再次查看服務, node2依舊正常運行

http://litaotao.blog.51cto.com/6224470/1303307

總結

以上是生活随笔為你收集整理的mysql drbd pacemaker_corosync+pacemaker+mysql+drbd 实现mysql的高可用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。