使用RDS和本地mysql做主從同步,實現多服務器數據同步

MySQL 技術 埃米特福來 2017-04-11

最近有個項目要做多服務器數據同步,我設計的方案是使用RDS做主數據庫,各服務器上mysql做從數據庫,同步RDS上的數據。讀寫分離,所有數據寫全部寫到RDS裡,數據讀取從本地mysql中讀,這樣通過同步就能保證各個服務器上讀取的數據一致了。具體的配置步驟入下:

1、進入本地服務器,先關閉mysql數據庫

service mysql stop

2、修改/ect/my.cnf中的配置信息

server-id = 10001 #保持id唯一

#GTID:

gtid_mode=on

enforce_gtid_consistency=on

#binlog

log_bin= /alidata/log/mysql/slave-binlog.log

log-slave-updates=1

binlog_format=mixed

#relay log

skip_slave_start=1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

expire_logs_days = 10

max_binlog_size = 100M

replicate-do-db = test #需要同步的數據庫

replicate-ignore-db = mysql #不需要同步的數據庫

replicate-ignore-db = information_schema #不需要同步的數據庫

replicate-ignore-db = performance_schema #不需要同步的數據庫

slave-skip-errors = 1032 #因為同步時有個1032錯誤導致同步終止,所以我就跳過了這個錯誤

3、重啟本地mysql數據庫

service mysql start

4、鏈接RDS數據庫,將RDS中的數據庫導入到本地數據庫中,

(1)、先鎖RDS表,禁止寫入操作

flush tables with read lock;

(2)、從RDS導出:mysqldump -uroot -ptest -hmasterhost.mysql.rds.aliyuncs.com> /tmp/test.sql

(3)、再導入到本地: mysql -uroot -p test < /tmp/test.sql ,記得需要先建庫test

5、進入本地數據庫設定主庫信息

mysql>change master to master_host = 'masterhost.mysql.rds.aliyuncs.com', master_port = 3306, master_user = 'catest', master_password='masterpassword', master_auto_position = 1;

6、start slave

7、show slave status \G

查看系統返回信息中 Slave_IO_Running 和 Slave_SQL_Running 的狀態是否為 Yes,如下所示。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

兩個都是yes 表示成功

8、 所有的服務器配置完畢後,將RDS上的表解鎖

unlock tables;

相關推薦

推薦中...