2021-01-06

mysql备份和MHA高可用

一、编写脚本,支持让用户自主选择,使用mysqldump还是xtraback全量备份。

#!/bin/bash. /etc/rc.d/init.d/functionsTIME=`date +%F_%H-%M-%S`DIR=/data/dbbackupPASS=123456[ -d $DIR ] || mkdir -p $DIRPS3="请输入备份方法编号:"MENU="使用mysqldump全量备份使用xtraback全量备份退出"clearwhich 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=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 备份失败,请检查! /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=8log-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-binread_only=ON #设置数据库只读,针对supper user无效

7、重启服务。

[root@slave ~]#systemctl restart mariadb

8、设置从节点。

[root@slave ~]#mysqlWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 4Server version: 5.5.68-MariaDB MariaDB ServerCopyright (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=mhauserpassword=123456manager_workdir=/data/mastermha/app1/manager_log=/data/mastermha/app1/manager.logremote_workdir=/data/mastermha/app1/ssh_user=rootrepl_user=repluserrepl_password=123456ping_interval=1[server1]hostname=10.0.0.242candidate_master=1    [server2]hostname=10.0.0.243candidate_master=1[server3]hostname=10.0.0.77

6、配置数据库主节点,完成后重启数据库服务。

[root@master ~]#vim /etc/my.cnf.d/server.cnf[mysqld]server_id=100log-binskip_name_resolve=1

7、配置数据库从节点,不同节点的server-id不能相同,完成后重启数据库服务。

[root@slave1 ~]#vim /etc/my.cnf.d/server.cnf[mysqld]server_id=200log-binread_onlyrelay_log_purge=0skip_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=1 > db.sql#编辑备份文件,找到CHANGE MASTER TO开始的地方,改为以下内容:[root@master ~]#vim db.sqlCHANGE MASTER TOMASTER_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\GEmpty 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监控数据库服务器。









原文转载:http://www.shaoqun.com/a/505996.html

跨境电商:https://www.ikjzd.com/

f2c:https://www.ikjzd.com/w/1242

ask me:https://www.ikjzd.com/w/2459


一、编写脚本,支持让用户自主选择,使用mysqldump还是xtraback全量备份。#!/bin/bash./etc/rc.d/init.d/functionsTIME=`date+%F_%H-%M-%S`DIR=/data/dbbackupPASS=123456[-d$DIR]||mkdir-p$DIRPS3="请输入备份方法编号:"MENU="使用mysqldu
asinseed:asinseed
达方物流:达方物流
VC跟卖霸道横行!养的小白菜又要被拱了?:VC跟卖霸道横行!养的小白菜又要被拱了?
9月份去三亚旅游怎么样:9月份去三亚旅游怎么样
VC账号现在免费送了?姐夫为何"白送"VC?:VC账号现在免费送了?姐夫为何"白送"VC?

No comments:

Post a Comment