明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

詳細說明MySQL的replication雙向備份設置

[摘要]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知識。