詳細說明MySQL的replication雙向備份設置
發(fā)表時間:2023-08-31 來源:明輝站整理相關軟件相關文章人氣:
[摘要]MySQL的replication雙向備份配置,分享如下。一、 設置A服務器編輯/usr/local/mysql/etc/my.cnf文件,在mysqld塊里添加如下內容:log-bin=/jongo/mysql/logs/mysql-binserver-id = 2binlog-do...
MySQL的replication雙向備份配置,分享如下。
一、 設置A服務器
編輯/usr/local/mysql/etc/my.cnf文件,在mysqld塊里添加如下內容:
log-bin=/jongo/mysql/logs/mysql-bin
server-id = 2
binlog-do-db=bbscs8 這里的binlog-do-db是用來設置可以被slave服務器同步的數(shù)據(jù)
庫名稱
binlog-do-db=bdt
binlog-do-db=adsense
binlog-do-db=bdt_bbs
binlog-do-db=bdt_help
master-host = 192.168.2. 備份192.168.2.7上的數(shù)據(jù)庫,即這臺做為備機的需要備份的數(shù)據(jù)庫的主機器地址
master-user = backup 上面機器上設置的,用來同步的用戶名勝古跡
master-password = 17buybackup@#$ 要用主服務器上同步過來的數(shù)據(jù)庫的名稱
log-slave-updates
grant replication slave on *.* to 'backup'@'192.168.2.%' identified by 'bdtbackup@#$';
給同步添加一個用戶
二、 設置B服務器
server-id = 1
binlog-do-db= jongo17buy 這里的binlog-do-db是用來設置可以被slave服務器同步的數(shù)據(jù)
庫名稱
master-host = 192.168.2.5 備份192.168.2.7上的數(shù)據(jù)庫,即這臺做為備機的需要備份的數(shù)據(jù)庫的主機器地址
master-user = backup 上面機器上設置的,用來同步的用戶名勝古跡
master-password = bdtbackup@#$ 要用主服務器上同步過來的數(shù)據(jù)庫的名稱
grant replication slave on *.* to 'backup'@'192.168.2.%' identified by '17buybackup@#$';
三、 兩個服務器上
在兩個服務器上,將要同步的數(shù)據(jù)庫分別在各的備機手工同步或重新導入一下。
然后,分別啟動 mysql> start slave
四、 同步監(jiān)控腳本
mysql_monitor.sh文件
#!/bin/bash
. /root/.bash_profile
. /jongo/shell/contact_config.sh
MYSQL_PASSWD="admin8*"
IO_RUNING=`echo "show slave status \G;" mysql -uroot -p$MYSQL_PASSWD grep "Slave_IO_Running" awk -F ":" '{ print $2 }'`
SQL_RUNING=`echo "show slave status \G;" mysql -uroot -p$MYSQL_PASSWD grep "Slave_SQL_Running" awk -F ":" '{ print $2 }'`
SQL_ERROR=`echo "show slave status \G;" mysql -uroot -p$MYSQL_PASSWD grep "Last_SQL_Error" awk -F ":" '{ print $2 }'`
echo "io_status=\"$IO_RUNING\"" >/jongo/shell/tmp.txt
echo "sql_status=\"$SQL_RUNING\"">>/jongo/shell/tmp.txt
echo "sql_error=\"$SQL_ERROR\"">>/jongo/shell/tmp.txt
. /jongo/shell/tmp.txt
if [ "$io_status" != " Yes" -o "$sql_status" != " Yes" ]
then
echo "17buy的mysql數(shù)據(jù)庫的slave(203.156.192.29) 于"`date "+%Y-%m-%d %H:%m:%S"`"發(fā)生錯誤:">/jongo/shell/mysql_monitor.log
echo "請立即檢查,謝謝!" >>/jongo/shell/mysql_monitor.log
echo "slave 服務器的狀態(tài)如下:">>/jongo/shell/mysql_monitor.log
echo "show slave status \G;" mysql -uroot -p$MYSQL_PASSWD >>/jongo/shell/mysql_monitor.log
for email in $contact_email
do
mail -s "mysql slave on 17buy was false" $email /shell/mysql_monitor.log
done
fi
contact_config.sh文件
contact_email=wayne.wang@jongogroup.com
五、 常見問題
a. 出現(xiàn)Error initializing relay log position: Could not find target log during relay log initialization,Error_code: 1593錯誤
~ 這個一般是由于在mysql數(shù)據(jù)庫的數(shù)據(jù)目錄下找不到localhost-relay-bin.***文件導致的,可以用類似下列語句來調整:
CHANGE MASTER TO
-> MASTER_HOST='192.168.2.5’,
-> MASTER_USER='backup',
-> MASTER_PASSWORD='./bdtbackup@#$',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='master2-bin.001',
-> MASTER_LOG_POS=4,
-> MASTER_CONNECT_RETRY=10,CHANGE MASTER TO
-> RELAY_LOG_FILE='./slave-relay-bin.006',
-> RELAY_LOG_POS=4025;
注意:
這里指定的文件路徑是絕對路徑,如果要用相對路徑一定要用./filename形式,否報找不到對應的文件錯誤;
b. 出現(xiàn)Slave I/O: error connecting to master 'backup@192.168.2.5:3306' - retry-time: 60 retries: 86400, Error_code: 1045 錯誤:
出現(xiàn)這個錯誤可能有:
1) 用戶的權限不對;
2) 主服務器不上連接,如防火墻沒有打開相應的端口;
3) 從服務器上的RELAY_LOG_POS的值不對,可以用上面的CHANGE MASTER TO語句來調整
c. 同步出錯處理
當服務器同步出錯了,可以有以下兩種方法來處理它:
(a) 如果只是數(shù)據(jù)更新或者插入錯誤,而且對將來的影響不是很大,這個數(shù)據(jù)可以不要時,可以:
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1:
將這條出錯的查詢跳掉就可以了,然后:
start slave; 重啟同步過程就可以了
(b) 另外的方法是 :當服務器出現(xiàn)嚴重的問題時可以:
stop slave
然后用其他軟件手動同步一下,然后再主機上:
show master status;
查到master_log_file和master_log_pos,然后再從機器上:
change master to master_log_file='mysql-bin.000007',master_log_pos=261836644 ;
start slave
就有可以同步了
以上就是詳解MySQL的replication雙向備份配置的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。