詳解MySQL的replication雙向備份配置

mysql的replication雙向備份配置,分享如下。

一、?設(shè)置A服務(wù)器

編輯/usr/local/mysql/etc/my.cnf文件,在mysqld塊里添加如下內(nèi)容:

log-bin=/jongo/mysql/logs/mysql-bin  server-id???????=?2  binlog-do-db=bbscs8????這里的binlog-do-db是用來設(shè)置可以被slave服務(wù)器同步的數(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ù)庫,即這臺做為備機(jī)的需要備份的數(shù)據(jù)庫的主機(jī)器地址

master-user?????=??backup?????上面機(jī)器上設(shè)置的,用來同步的用戶名勝古跡

master-password?=?17buybackup@#$???要用主服務(wù)器上同步過來的數(shù)據(jù)庫的名稱

log-slave-updates

grant?replication?slave?on?*.*?to?‘backup’@’192.168.2.%’?identified?by?‘bdtbackup@#$’;?

給同步添加一個(gè)用戶

二、?設(shè)置B服務(wù)器

server-id???????=?1

binlog-do-db=?jongo17buy?這里的binlog-do-db是用來設(shè)置可以被slave服務(wù)器同步的數(shù)據(jù)

庫名稱

master-host?????=???192.168.2.5???備份192.168.2.7上的數(shù)據(jù)庫,即這臺做為備機(jī)的需要備份的數(shù)據(jù)庫的主機(jī)器地址

master-user?????=??backup?????上面機(jī)器上設(shè)置的,用來同步的用戶名勝古跡

master-password?=?bdtbackup@#$??要用主服務(wù)器上同步過來的數(shù)據(jù)庫的名稱

grant?replication?slave?on?*.*?to?‘backup’@’192.168.2.%’?identified?by?’17buybackup@#$’;

三、?兩個(gè)服務(wù)器上

在兩個(gè)服務(wù)器上,將要同步的數(shù)據(jù)庫分別在各的備機(jī)手工同步或重新導(dǎo)入一下。

然后,分別啟動(dòng)?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ā)生錯(cuò)誤:">/jongo/shell/mysql_monitor.log  ?????echo?"請立即檢查,謝謝!"?>>/jongo/shell/mysql_monitor.log  ?????echo?"slave?服務(wù)器的狀態(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錯(cuò)誤

~??這個(gè)一般是由于在mysql數(shù)據(jù)庫的數(shù)據(jù)目錄下找不到localhost-relay-bin.***文件導(dǎo)致的,可以用類似下列語句來調(diào)整:

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ào)找不到對應(yīng)的文件錯(cuò)誤;

b.?出現(xiàn)Slave?I/O:?error?connecting?to?master?‘backup@192.168.2.5:3306’?–?retry-time:?60??retries:?86400,?Error_code:?1045?錯(cuò)誤:

出現(xiàn)這個(gè)錯(cuò)誤可能有:

1)?用戶的權(quán)限不對;

2)?主服務(wù)器不上連接,如防火墻沒有打開相應(yīng)的端口;

3)?從服務(wù)器上的RELAY_LOG_POS的值不對,可以用上面的CHANGE?MASTER?TO語句來調(diào)整

c.?同步出錯(cuò)處理

當(dāng)服務(wù)器同步出錯(cuò)了,可以有以下兩種方法來處理它:

(a)?如果只是數(shù)據(jù)更新或者插入錯(cuò)誤,而且對將來的影響不是很大,這個(gè)數(shù)據(jù)可以不要時(shí),可以:

stop?slave;  SET?GLOBAL?SQL_SLAVE_SKIP_COUNTER=1:

將這條出錯(cuò)的查詢跳掉就可以了,然后:
start?slave;?重啟同步過程就可以了

(b)?另外的方法是?:當(dāng)服務(wù)器出現(xiàn)嚴(yán)重的問題時(shí)可以:
stop?slave?
然后用其他軟件手動(dòng)同步一下,然后再主機(jī)上:

show?master?status;

查到master_log_file和master_log_pos,然后再從機(jī)器上:

change?master?to?master_log_file='mysql-bin.000007',master_log_pos=261836644?;  start?slave

就有可以同步了

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享