Mysql-Replication

Mysql複製數據庫更新不起作用

  • February 24, 2014

我一直在嘗試在 MySQL 數據庫中開始複製。我按照 MySQL 手冊中的所有步驟來設置和配置複製。

http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html

我可以毫無困難地開始複製。新插入的數據已正確複製。但過了一會兒,我觀察到雖然 INSERT 正在工作,但 UPDATE 沒有複製。因此,我的複制數據庫包含第一次插入的數據。

我的主數據庫位於裝有 MySQL-5.1.56 的 UNIX 伺服器上。從站在 Windows 中使用帶有 MySQL 5.5.8 的 WAMP 包。我還嘗試了一個帶有 WAMP5 的低版本 MySQL 的從站,效果相同。

請分享您對此的想法和經驗。謝謝。

幾個月前我整理好了。問題是,我試圖只複製一個數據庫,並 在 master 中設置binlog_do_db和選項以僅選擇該數據庫。binlog-ignore-db但這遺漏了任何未通過 USE 數據庫選擇數據庫而執行的語句。在 slave 中使用replicate-ignore-dband選項會做同樣的事情。replicate-do-db所以我最終通過使用replicate-wild-do-table從站中的選項來修復它,在此處引用。在從伺服器的配置中添加了以下內容。

replicate-wild-do-table=mydb.%

在從站上,您應該執行命令SHOW SLAVE STATUS

它將提供有關失敗原因的資訊;

mysql> show slave status\G


*************************** 1. row ***************************
            Slave_IO_State: Waiting for master to send event
               Master_Host: master.db.sever
               Master_User: repl
               Master_Port: 3306
             Connect_Retry: 60
           Master_Log_File: mysql-bin.000154
       Read_Master_Log_Pos: 209998
            Relay_Log_File: mysqld-relay-bin.000480
             Relay_Log_Pos: 105395
     Relay_Master_Log_File: mysql-bin.000154
          Slave_IO_Running: Yes
         Slave_SQL_Running: Yes
           Replicate_Do_DB: 
       Replicate_Ignore_DB: mysql
        Replicate_Do_Table: 
    Replicate_Ignore_Table: 
   Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
                Last_Errno: 0         <-----here this value
                Last_Error:              <-----here this value
              Skip_Counter: 0
       Exec_Master_Log_Pos: 209998
           Relay_Log_Space: 105395
           Until_Condition: None
            Until_Log_File: 
             Until_Log_Pos: 0
        Master_SSL_Allowed: No
        Master_SSL_CA_File: 
        Master_SSL_CA_Path: 
           Master_SSL_Cert: 
         Master_SSL_Cipher: 
            Master_SSL_Key: 
     Seconds_Behind_Master: 0
1 row in set (0.00 sec)

你有興趣Last Errno,看看確實是0,最後的錯誤資訊內容。

大概您還可以檢查您的複制使用者是否對它應該複製到的表具有“插入”和“更新”權限。該資訊在mysql數據庫中,可以用SHOW GRANTS語句查看;

mysql> show grants for root@'someserver.com';
+---------------------------------------------------------------------------------------+
| Grants for root@someserver                                       |
+---------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'oomeserver  ' WITH GRANT OPTION | 
+---------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

引用自:https://serverfault.com/questions/363815