MySQL 5.5主從同步排錯

來源:互聯網
上載者:User

MySQL 5.5主從同步排錯

Slave_SQL_Running: No mysql同步故障解決方案

Slave_SQL_Running: No mysql同步故障解決
今天檢查資料庫發現一台MySQL Slave未和主機同步,查看Slave狀態:
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: No
Last_Errno: 1062
....
Seconds_Behind_Master:NULL

原因:
1.程式可能在slave上進行了寫操作
2.也可能是slave機器重起後,交易回復造成的.
解決辦法I:
1.首先停掉Slave服務:slave stop
2.到主伺服器上查看主機狀態:
記錄File和Position對應的值。
mysql> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000020 | 135617781 | | |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)
3.到slave伺服器上執行手動同步:
mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='pwd',
> master_port=3307,
> master_log_file='mysql-bin.000020',
> master_log_pos=135617781;
1 row in set (0.00 sec)
mysql> slave start;
1 row in set (0.00 sec)
再次查看slave狀態發現:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Seconds_Behind_Master: 0
解決辦法II:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
 
自己的使用體會:方法一是強制性從某一個點開始同步,會有部分沒有同步的資料丟失,後續主伺服器上刪除記錄同步也會有一些錯誤資訊,不會影響使用.方法二不一定會有效果.
 
 
===========================

Ubuntu下Nginx做負載實現高效能WEB伺服器5---MySQL主主同步

生產環境MySQL主主同步主鍵衝突處理

MySQL主從失敗 錯誤Got fatal error 1236

MySQL主從複製,單台伺服器上實施

搭建MySQLProxy 伺服器實現讀寫分離+主從同步

MySQL 5.5 主從雙向同步

========================================]
1,主從不能同步:
show slave status;報錯:Error xxx dosn't exist
且show slave status\G:
Slave_SQL_Running: NO
Seconds_Behind_Master: NULL
解決方案:
stop slave;
set global sql_slave_skip_counter =1 ;
start slave;
之後Slave會和Master去同步 主要看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master是否為0,0就是已經同步了
2,還需要做的一些最佳化與監視:
show full processlist; //查看mysql當前同步線程號
skip-name-resolve      //跳過dns名稱查詢,有助於加快串連及同步的速度
max_connections=1000    //增大Mysql的串連數目,(預設100)
max_connect_errors=100 //增大Mysql的錯誤串連數目,(預設10)

查看日誌一些命令
1,  show master status\G;
          在這裡主要是看log-bin的檔案是否相同。
    show slave status\G;
    在這裡主要是看:
                  Slave_IO_Running=Yes
                  Slave_SQL_Running=Yes
  如果都是Yes,則說明配置成功.
2,在master上輸入show processlist\G;
    mysql> SHOW PROCESSLIST\G
    *************************** 1. row ***************************
      Id: 2
      User: root
      Host: localhost:32931
      db: NULL
      Command: Binlog Dump
      Time: 94
      State: Has sent all binlog to slave; waiting for binlog to
        be updated
      Info: NULL

如果出現Command: Binlog Dump,則說明配置成功.
 
stop slave    #停止同步
start slave    #開始同步,從日誌終止的位置開始更新。
SET SQL_LOG_BIN=0|1  #主機端運行,需要super許可權,用來開停日誌,隨意開停,會造成主機從機資料不一致,造成錯誤
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=n  # 用戶端運行,用來跳過幾個事件,只有當同步進程出現錯誤而停止的時候才可以執行。
RESET MASTER  #主機端運行,清除所有的日誌,這條命令就是原來的FLUSH MASTER
RESET SLAVE  #從機運行,清除日誌同步位置標誌,並重建master.info
雖然重建了master.info,但是並不起用,最好,將從機的mysql進程重啟一下,
LOAD TABLE tblname FROM MASTER #從機運行,從主機端重讀指定的表的資料,每次只能讀取一個,受timeout時間限制,需要調整timeout時間。執行這個命令需要同步帳號有 reload和super許可權。以及對相應的庫有select許可權。如果表比較大,要增加net_read_timeout 和 net_write_timeout的值
LOAD DATA FROM MASTER  #從機執行,從主機端重新讀入所有的資料。執行這個命令需要同步帳號有reload和super許可權。以及對相應的庫有select許可權。如果表比較大,要增加net_read_timeout 和 net_write_timeout的值
CHANGE MASTER TO master_def_list  #線上改變一些主機設定,多個用逗號間隔,比如
CHANGE MASTER TO
  MASTER_HOST='master2.mycompany.com',
  MASTER_USER='replication',
  MASTER_PASSWORD='bigs3cret'
MASTER_POS_WAIT() #從機運行
SHOW MASTER STATUS #主機運行,看日誌匯出資訊
SHOW SLAVE HOSTS #主機運行,看連入的從機的情況。
SHOW SLAVE STATUS (slave)
SHOW MASTER LOGS (master)
SHOW BINLOG EVENTS [ IN 'logname' ] [ FROM pos ] [ LIMIT [offset,] rows ]
PURGE [MASTER] LOGS TO 'logname' ; PURGE [MASTER] LOGS BEFORE 'date'

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.