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

注:自己试验xtrabackup版本为2.4.12版本,可直接使用 xtrabackup工具实现全量备份

编辑脚本如下:vim backup.sh

#!/bin/bash
pass='10086'
time=date "+%Y-%m-%d %H:%M:%S"
echo '1、使用mysqldump备份 2、使用xtraback备份'
read -p "请输入选项:" num
case $num in
1) mysqldump -A -u root -p$pass > /data/mysqlbackup."$time".sql; echo '已使用mysqldump工具备份完成' ;;
2) xtrabackup --user=root --password=$pass --backup --target-dir=/data/backup &> /dev/null; echo '已使用xtraback工具备份完成' ;;
esac

编辑完成后给脚本加可执行权限执行验证: chmod +x backup.sh

2、配置Mysql主从同步

需要两台服务器一台主、一台从

(1)、在同网段两台主从机器上分别安装数据库服务
yum install mariadb-server -y

(2)、在主节点服务器上的配置
vim /etc/my.cnf
server_id=1 #为当前节点设置一个全局惟一的ID号
log_bin=/PATH/BIN_LOG_FILE #启用二进制日志,并指定主服务器二进制日志文件存放路径

第十六周_第1张图片

systemctl start mariadb启动数据库后可使用show master logs命令查看当前二进制日志文件大小,而后再新建一个或者导入一个库后再使用此命令观察二进制日志文件可发现日志文件增加;

MariaDB [mysql]> GRANT REPLICATION SLAVE ON . TO 'repluser'@'HOST' IDENTIFIED BY 'replpass'; #在主服务上创建一个有复制权限的用户账号,以便后面从节点拉取同步数据
例:MariaDB [mysql]> grant replication slave on . to eryuan@'192.168.37.%' identified by '10086';
第十六周

MariaDB [mysql]> show master logs; #查询二进制和每个日志的文件大小以及分析规划从节点复制主节点的二进制日志的起始位置,对应MASTER_LOG_FILE=' mariadb-bin.xxxxxx', MASTER_LOG_POS=#;
第十六周_第2张图片

(3)、在从节点服务器上的配置
vim /etc/my.cnf
server_id=2 #为当前节点设置一个全局惟的ID号
read_only=ON #设置数据库只读

第十六周_第3张图片

mysql> CHANGE MASTER TO MASTER_HOST='host', MASTER_USER='repluser', MASTER_PASSWORD='replpass', MASTER_LOG_FILE=' mariadb-bin.xxxxxx', MASTER_LOG_POS=#; (可使用 help change master to 查看帮助对应格式粘贴填写相关对应值)
例:CHANGE MASTER TO MASTER_HOST='192.168.37.101', MASTER_USER='eryuan', MASTER_PASSWORD='10086', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=245;

MariaDB [(none)]> slave start; #开启主从同步
第十六周_第4张图片

MariaDB [(none)]> show slave status\G; #查看主从同步状态
第十六周_第5张图片

3、使用MHA实现Mysql高可用。

需要四台机器实现:一台配置MHA管理监控节点、一台配置主数据库服务器、两台配置从数据库服务器,监控节点如果发现主节点宕机后自动提升从节点为主节点,从而实现mysql的高可用性。

(1)、在管理节点上安装两个包 (yum和epel源中都没这两个包,需自己事先下载相关rpm包准备)
mha4mysql-manager
mha4mysql-node
在被管理节点安装
mha4mysql-node

(2)、在管理节点建立配置文件

vim /etc/mastermha/app1.cnf
[server default]
user=eryuan #主服务器上创建的具体所以权限的账号
password=10086 # 账号对应的密码
manager_workdir=/data/mastermha/app1/ #指定mastermha工作目录
manager_log=/data/mastermha/app1/manager.log #指定mastermha日志文件
remote_workdir=/data/mastermha/app1/
ssh_user=root #指定管理节点ssh远程登录被管理节点用户
repl_user=repluser # 主从同步用户账号
repl_password=10086 #账号对应的密码
ping_interval=1 #监控节点实时ping主节点的频率,单位秒
[server1]
hostname=被管理主节点主机地址
candidate_master=1
[server2]
hostname=被管理从节点主机地址
candidate_master=1 #主节点宕机后从节点提升为主节点的优先级
[server3]
hostname=被管理从节点主机地址

(3)、在主节点上配置
vim /etc/my.cnf
[mysqld]
log-bin
server_id=1 #不同节点此值各不相同
skip_name_resolve=1
mysql>show master logs
mysql>grant replication slave on . to repluser@'192.168.37.%' identified by ‘magedu';
mysql>grant all on . to eryuan@'192.168.37.%’identified by‘magedu';

(4)、在从节点上配置
vim /etc/my.cnf
[mysqld]
server_id=2 #不同节点此值各不相同
log-bin
read_only
relay_log_purge=0
skip_name_resolve=1
mysql>CHANGE MASTER TO MASTER_HOST=‘MASTER_IP', MASTER_USER='repluser', MASTER_PASSWORD=‘magedu', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=245;

(5)、在所有节点实现相互之间ssh key验证(先将公钥复制到自己本机一份,然后再将本机.ssh目录复制到所有其他需要免密登录的主机实现免密登录)
ssh-copy-id -i .ssh/id_rsa.pub 127.0.0.1
scp -r /root/.ssh 192.168.37.102:/root/
scp -r /root/.ssh 192.168.37.105:/root/

(6)、Mha验证和启动
所有节点实现相互之间ssh key验证:masterha_check_ssh --conf=/etc/mastermha/app1.cnf
第十六周_第6张图片
mysql集群检查检查:masterha_check_repl --conf=/etc/mastermha/app1.cnf
第十六周_第7张图片
开启实时监控:masterha_manager --conf=/etc/mastermha/app1.cnf
第十六周

(7)、模拟宕机:关闭主服务器验证结果
systemctl stop mariadb
第十六周