先配主從同步,後將主庫表老數據傳輸到從庫
mysql
說明:api-server的數據庫爲主,其餘harbor爲從sql
[mysqld] log-bin = mysql-bin server-id = 1 //保證其餘mysql不佔用 |
grant replication slave,replication client on *.* to slave@'*' identified by "123456"; |
show master status |
[mysqld] server-id = 2 log-bin = mysql-bin replicate-do-table = registry.user //同步的數據庫名.表名 slave-skip-errors = all #跳過全部的錯誤錯誤,繼續執行復制操做 |
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'api
從MySQL5.6開始引入了binlog_checksum全局變量,即MySQL會將event的CRC32校驗值也寫入binlog,顯然MariaDB在分析日誌的時候不會考慮該信息,致使解析出錯。markdown
解決方法:關閉主庫的CRC校驗,修改全局變量ide
在主庫中 1 show variables like '%binlog%'; 2 set global binlog_checksum=NONE;url
坑2:spa
我以前使用的MySQL5.5與MariaDB10.2版本相差過大,致使設置同步的過程當中一直出現「Relay log write failure: could not queue event from master」的問題,因此升級了MySQL,這個問題獲得解決。.net
解決這些問題就能實現MySQL到MariaDB的主從同步了,可是須要注意的是,主從同步的數據庫只能使用同種引擎,通常就是無腦InnoDB,原本想使用MariaDB的columnStore列存儲引擎,但因爲主庫使用的InnoDB,結果數據並無同步。而二者都是InnoDB則實現了同步。命令行