一、撰寫腳本,支持讓用戶自主選擇,使用mysqldump還是xtraback全量備份,
#!/bin/bash
. /etc/rc.d/init.d/functions
TIME=`date +%F_%H-%M-%S`
DIR=/data/dbbackup
PASS=123456
PS3="請輸入備份方法編號:"
MENU="
使用mysqldump全量備份
使用xtraback全量備份
退出
"
[ -d $DIR ] || mkdir -p $DIR
clear
which mysql&>/dev/null&&echo *****mysql資料庫備份*****||{ echo "本機未安裝mysql,無需備份,";exit; }
select M in $MENU ;do
case $REPLY in
1)
mysqldump -uroot -p"$PASS" -A -F -E -R --triggers --single-transaction --master-data=https://www.cnblogs.com/lele3721/archive/2021/01/04/1 --flush-privileges --default-character-set=utf8 --hex-blob | /
gzip > ${DIR}/${TIME}.sql.gz
[["0 0" == ${PIPESTATUS[*]} ]] && action "備份成功!" || action "備份失敗,請檢查!" /bin/false
exit
;;
2)
which xtrabackup &>/dev/null || { echo "本機未安裝xtraback工具,無法運行此功能,";exit; }
xtrabackup -uroot -p"$PASS" --backup --target-dir="${DIR}/${TIME}/" &>/dev/null && \
{ tar Pzcf ${DIR}/${TIME}.tar.gz ${DIR}/${TIME}/ && { action "備份成功!" ; rm -rf ${DIR}/${TIME}/; } || action "備份成功,未能打包!!!"; } ||\
action "備份失敗,請檢查!" /bin/false
exit
;;
3)
echo 您已退出!
exit
;;
*)
echo 輸入錯誤,請重新輸入!
;;
esac
done
二、配置Mysql主從同步,
1、安裝兩臺mysql服務器,安裝好資料庫軟體,均使用centos7上的mariadb,
2、開啟配置主服務器,開啟二進制日志并設定唯一server-id,
[root@master ~]#vim /etc/my.cnf.d/server.cnf
#添加以下內容:
[mysqld]
server-id=8
log-bin
3、重啟服務,
[root@master ~]#systemctl restart mariadb
4、創建賬戶,
MariaDB [(none)]> grant replication slave on *.* to repluser@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
5、查看二進制檔案和位置,
MariaDB [(none)]> SHOW MASTER LOGS;
+--------------------+-----------+
| Log_name | File_size |
+--------------------+-----------+
| mariadb-bin.000001 | 245 |
+--------------------+-----------+
6、開始配置從節點,設定唯一server-id,設定只讀,
[mysqld]
server_id=200 #為當前節點設定一個全域惟的ID號
log-bin
read_only=ON #設定資料庫只讀,針對supper user無效
7、重啟服務,
[root@slave ~]#systemctl restart mariadb
8、設定從節點,
[root@slave ~]#mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='10.0.0.242', MASTER_USER='repluser', MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=245;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
9、到此mysql的主從同步設定完成,
三、使用MHA實作Mysql高可用,
1、實作MHA高可用需要部署4臺服務器,
? 1臺管理端,不支持Centos8,
? 1臺資料庫主節點服務器,
? 2臺資料庫從節點服務器,
資料庫服務器均使用centos7上的mariadb,
2、管理節點安裝MHA,需要兩個包,特別注意,低版本的mariadb和myql不要使用0.58版的MHA,
[root@mha ~]#yum -y install mha4mysql-node-0.56-0.el6.centos.noarch.rpm
[root@mha ~]#yum -y install mha4mysql-manager-0.56-0.el6.centos.noarch.rpm
3、所有被管理節點需安裝mha4mysql-node,
[root@master ~]#yum -y install mha4mysql-node-0.56-0.el6.centos.noarch.rpm
[root@slave1 ~]#yum -y install mha4mysql-node-0.56-0.el6.centos.noarch.rpm
[root@slave2 ~]#yum -y install mha4mysql-node-0.56-0.el6.centos.noarch.rpm
4、 在所有節點實作相互之間ssh key驗證,
[root@master ~]#ssh-keygen
[root@master ~]#ssh-copy-id 10.0.0.242
[root@master ~]#ssh 10.0.0.243
[root@master ~]#ssh 10.0.0.77
[root@master ~]#ssh 10.0.0.17
5、管理節點配置MHA,
[root@mha ~]#mkdir /etc/mastermha/
[root@mha ~]#vim /etc/mastermha/app1.cnf
#添加以下內容:
[server default]
user=mhauser
password=123456
manager_workdir=/data/mastermha/app1/
manager_log=/data/mastermha/app1/manager.log
remote_workdir=/data/mastermha/app1/
ssh_user=root
repl_user=repluser
repl_password=123456
ping_interval=1
[server1]
hostname=10.0.0.242
candidate_master=1
[server2]
hostname=10.0.0.243
candidate_master=1
[server3]
hostname=10.0.0.77
6、配置資料庫主節點,完成后重啟資料庫服務,
[root@master ~]#vim /etc/my.cnf.d/server.cnf
[mysqld]
server_id=100
log-bin
skip_name_resolve=1
7、配置資料庫從節點,不同節點的server-id不能相同,完成后重啟資料庫服務,
[root@slave1 ~]#vim /etc/my.cnf.d/server.cnf
[mysqld]
server_id=200
log-bin
read_only
relay_log_purge=0
skip_name_resolve=1
[root@slave1 ~]#systemctl restart mariadb.service
8、資料庫主節點創建賬戶,要和MHA組態檔里設定的一致,
MariaDB [(none)]> grant replication slave on *.* to repluser@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all on *.* to mhauser@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
9、資料庫主節點完整備份資料庫,
[root@master ~]#mysqldump -A -F --single-transaction --master-data=https://www.cnblogs.com/lele3721/archive/2021/01/04/1 > db.sql
#編輯備份檔案,找到CHANGE MASTER TO開始的地方,改為以下內容:
[root@master ~]#vim db.sql
CHANGE MASTER TO
MASTER_HOST='10.0.0.242',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000008', MASTER_LOG_POS=245;
10、復制資料庫備份檔案到從節點并匯入,兩個從節點都要執行,
[root@master ~]#scp db.sql 10.0.0.77:/root
[root@master ~]#scp db.sql 10.0.0.243:/root
[root@slave1 ~]#mysql < db.sql
[root@slave2 ~]#mysql < db.sql
11、資料庫從節點啟動同步功能,兩個從節點都要執行,
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.0.242
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mariadb-bin.000010
Read_Master_Log_Pos: 340
Relay_Log_File: mariadb-relay-bin.000010
Relay_Log_Pos: 626
Relay_Master_Log_File: mariadb-bin.000010
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
......
12、檢查整個MHA環境是否正常,
[root@mha ~]#masterha_check_ssh --conf=/etc/mastermha/app1.cnf
[root@mha ~]#masterha_check_status --conf=/etc/mastermha/app1.cnf
#如果報以下錯誤,就是MHA的版本高了,使用0.56版即可,MySQL5.6(Mariadb10.1)以上版本才可使用MHA0.58版,
Checking if super_read_only is defined and turned on..DBD::mysql::st execute failed: Unknown system variable 'super_read_only' at /usr/share/perl5/vendor_perl/MHA/SlaveUtil.pm line 245.
Mon Jan 4 17:56:55 2021 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln208] Slaves settings check failed!
Mon Jan 4 17:56:55 2021 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln416] Slave configuration failed.
Mon Jan 4 17:56:55 2021 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln427] Error happened on checking configurations. at /usr/bin/masterha_check_repl line 48.
Mon Jan 4 17:56:55 2021 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln525] Error happened on monitoring servers.
Mon Jan 4 17:56:55 2021 - [info] Got exit code 1 (Not master dead).
12、管理節點啟動MHA即可監控資料庫,使用后臺執行,
[root@mha ~]#nohup masterha_manager --conf=/etc/mastermha/app1.cnf &> /dev/null
13、檢查MHA狀態,
[root@mha ~]#masterha_check_status --conf=/etc/mastermha/app1.cnf
app1 (pid:33866) is running(0:PING_OK), master:10.0.0.242
14、故障測驗,停掉主節點資料庫服務,
[root@master ~]#systemctl stop mariadb.service
#管理節點的masterha_manager已退出,
#查看自動升級的主節點:
MariaDB [(none)]> show slave status\G
Empty set (0.00 sec)
#查看另一臺從節點,資料庫主節點已自動變為10.0.0.243:
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.0.243
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mariadb-bin.000010
Read_Master_Log_Pos: 245
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 531
Relay_Master_Log_File: mariadb-bin.000010
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
......
15、刪掉已升級主節點mysql組態檔的read_only,否則新主節點資料庫服務重啟后會無法寫入資料,
16、將原主節點修復后,重新配置為從節點,修改MHA管理端配置即可重新使用MHA監控資料庫服務器,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/245619.html
標籤:其他
