主庫IP:192.168.8.129 hostname:master
從庫IP:192.168.8.130 hostname:slave
一、說明:此腳本針對上一篇文章《CentOS7.X安裝部署mysql5.7主從環境》搭建完成後的主從隨時同步使用https://blog.51cto.com/8355320/2448056
二、MySQL主從同步會出現如網絡延遲等多種緣由,形成主從環境不一樣步,當須要從新同步主從環境時,須要等到業務不繁忙的晚上或週末來進行,而使用腳本備份,有了全庫備份,有了binlog日誌偏移記錄值,咱們就能夠實現隨時進行主從同步操做
三、主庫備份腳本:mysql
[root@master]# cat auto_mysql_masterbak.shsql
#!/bin/bash
#Author Danrtsey
#function: 主庫備份全部庫,並記錄master status,用於作主從同步恢復時使用
BACKUP_FOLDERNAME=/data/masterbak
DB_USERNAME="root"
DB_PASSWORD="密碼"bash
LOG_FILE=${BACKUPFOLDERNAME}/mysqllogsdate +%F
.log
DATA_FILE=${BACKUP_FOLDERNAME}/mysqlbackupdate +%F
.sql.gz網絡
MYSQL_CMD="/bin/mysql -u$DB_USERNAME -p$DB_PASSWORD"
MYSQL_DUMP="/bin/mysqldump --set-gtid-purged=off -u$DB_USERNAME -p$DB_PASSWORD -A -B --flush-logs --single-transaction -e"ide
#鎖表--全庫備份--查看主庫狀態並記錄--解瑣表
$MYSQL_CMD -e "flush tables with read lock;"
echo "-----show master status result-----" >>$LOG_FILE
$MYSQL_CMD -e "show master status;" >>$LOG_FILE
${MYSQL_DUMP} | gzip > $DATA_FILE
$MYSQL_CMD -e "unlock tables;"
#保留10份備份文件
find ${BACKUP_FOLDERNAME} -mtime +10 -name ".sql.gz" -exec rm -rf {} \;
find ${BACKUP_FOLDERNAME} -mtime +10 -name ".log" -exec rm -rf {} \;
四、從庫同步腳本日誌
[root@slave]# cat auto_mysql_slavebak.sh
#!/bin/bash
#Author Danrtsey
#function: 從庫使用主庫/data/masterbak的備份
#查看/data/masterbak下面的mysqllogs記錄的主庫master status信息
#從庫同步時填寫相關信息,實現從庫隨時同步使用code
#注意更改MASTER_LOG_FILE對應的數值及MASTER_LOG_POS的數值,舉例以下
#MASTER_LOG_FILE='mysql-bin.000002',
#MASTER_LOG_POS=342;blog
BACKUP_FOLDERNAME=/data/slavebak
DB_USERNAME="root"
DB_PASSWORD="密碼"ip
LOG_FILE=${BACKUPFOLDERNAME}/mysqllogsdate +%F
.log
DATA_FILE=${BACKUP_FOLDERNAME}/mysqlbackupdate +%F
.sql.gz部署
MYSQL_CMD="/bin/mysql -u$DB_USERNAME -p$DB_PASSWORD"
#recover
cd ${BACKUP_FOLDERNAME}
gzip -d mysqlbackupdate +%F
.sql.gz
$MYSQL_CMD < mysqlbackupdate +%F
.sql
$MYSQL_CMD -e "stop slave;"
#config slave
$MYSQL_CMD -e "CHANGE MASTER TO MASTER_HOST='192.168.8.129',MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='密碼',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=342;"
$MYSQL_CMD -e "start slave;"
$MYSQL_CMD -e "show slave status\G"|egrep "IO_Running|SQL_Running" >$LOG_FILE
cat $LOG_FILE
從庫同步時,查看日誌顯示有兩個yes表示從庫同步成功