Mysql 單表主從同步


先配主從同步,后將主庫表老數據傳輸到從庫

說明:api-server的數據庫為主,其他harbor為從

1.master

  • 配置文件更改
[mysqld]

log-bin = mysql-bin
server-id = 1   //保證其他mysql不占用
  • 創建用戶
grant replication slave,replication client on *.* to slave@'*' identified by "123456";
  • 查看master二進制文件信息,並記錄file和position
show master status

 

2.slave

  • 配置文件修改
[mysqld]

server-id = 2
log-bin = mysql-bin
replicate-do-table = registry.user    //同步的數據庫名.表名
slave-skip-errors = all   #跳過所有的錯誤錯誤,繼續執行復制操作
  • 進如msyql命令行模式
CHANGE MASTER TO
-> MASTER_HOST='master_host_name',     //主數據庫地址
-> MASTER_USER='replication_user_name', //上面為同步創建的用戶
-> MASTER_PASSWORD='replication_password', //密碼
-> MASTER_LOG_FILE='recorded_log_file_name', // 上面查看二進制文件記錄的file
-> MASTER_LOG_POS='recorded_log_pos'; //上面查看的position

 

  • 啟動從模式 start slave;(啟動之前可以reset slave)

     

  •  show slave status\G;
    			Slave_IO_Running: Yes     
                Slave_SQL_Running: Yes    
                  Replicate_Do_DB:
              Replicate_Ignore_DB:
               Replicate_Do_Table: registry.user  //同步的表 例如:tenxcloud_2_0.tenx_users

     坑1:

     Last_IO_Errno: 1236
     Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from position > file size'

    從MySQL5.6開始引入了binlog_checksum全局變量,即MySQL會將event的CRC32校驗值也寫入binlog,顯然MariaDB在分析日志的時候不會考慮該信息,導致解析出錯。

    解決方法:關閉主庫的CRC校驗,修改全局變量

    在主庫中 1 show variables like '%binlog%'; 2 set global binlog_checksum=NONE;

    坑2:

    我之前使用的MySQL5.5與MariaDB10.2版本相差過大,導致設置同步的過程中一直出現“Relay log write failure: could not queue event from master”的問題,所以升級了MySQL,這個問題得到解決。

    解決這些問題就能實現MySQL到MariaDB的主從同步了,但是需要注意的是,主從同步的數據庫只能使用同種引擎,一般就是無腦InnoDB,本來想使用MariaDB的columnStore列存儲引擎,但由於主庫使用的InnoDB,結果數據並沒有同步。而兩者都是InnoDB則實現了同步。

  • 感謝避坑 https://blog.csdn.net/ysaicll/article/details/78765771

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM