2014年10月30日 星期四

[MySQL] Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

些前在阿里雲、AWS RDS 架設 MySQL Master-Master Replication 出現此問題 Orz 將兩邊設定為各是對方的 Master 如此達到資料跨國同步。然而,卻發現在阿里雲作為 Replication Slave 角色的出現這個問題 Orz 由於在阿里雲的 DB Server 偏向 Cache 角色,確認後資料屬性,決定解決的方案是將阿里雲機器清空再重 AWS RDS 匯入,筆記一下解決步驟:

  1. 兩邊都停下 slave 角色動作
    • ALiYun-DB> STOP SLAVE
    • AWS-RDB> CALL mysql.rds_stop_replication
  2. 從 AWS RDS 匯出資料、並查看 MASTER_LOG_FILE 和 MASTER_LOG_POS 資訊
  3. 匯入阿里雲 DB Server,並設定 Slave 角色資訊,啟動 Slave 工作
    • $ mysql -h AliYunDB < AWSRDBExport.sql
    • ALiYun-DB> CHANGE MASTER TO MASTER_LOG_FILE='aws-rdb-mysql-bin-changelog.#######', MASTER_LOG_POS=#####;
    • ALiYun-DB> START SLAVE
    • ALiYun-DB> SHOW SLAVE STATUS \G
  4. 查看阿里雲 MASTER_LOG_FILE 和 MASTER_LOG_POS,更新 AWS RDS Slave 角色資訊,重新啟動 AWS RDS Slave 工作
    • ALiYun-DB> SHOW MASTER STATUS \G
      • MASTER_LOG_FILE
      • MASTER_LOG_POS
    • AWS-RDB> CALL mysql.rds_reset_external_master;
    • AWS-RDB> CALL mysql.rds_set_external_master (
          'aliyun-db-server-ip',
          3306,
          'repl_account',
          'repl_password',
          'aliyun-db-MASTER_LOG_FILE',
          aliyun-db-MASTER_LOG_POS
      ,   0 )
    • AWS-RDB > CALL mysql.rds_start_replication;
    • AWS-RDS > CALL mysql.rds_set_configuration('binlog retention hours', 24*14);

沒有留言:

張貼留言