原理和需求就不多說了 直接說實作步驟。
1.登入RDS,增加賬号并于賬号賦予資料庫相應權限,
-
RDS資料庫和ECS自建資料庫主從複制,資料同步
2.登入需要複制的資料庫,執行 show master status 檢視file和postion的值
3.配置你要複制到的從庫資料通路權限(資料安全性-添加白名單,就是把你從庫的伺服器ip添加到白名單)
導出一份資料主庫資料 導入到從庫上,保持主從庫的資料庫名稱和表及資料一緻。
4.登入從庫伺服器,以centos 7為例,設定 vim /etc/my.cnf 檔案
log-error=/var/log/mysqld.log
pid-file=/var/lib/mysql/mysqld.pid
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
group_concat_max_len=2000000
server_id=211 #伺服器id,不要和主庫重複
read_only = 1
replicate-do-db = yiside_bi #需要同步的資料庫
replicate-ignore-db = mysql #不需要同步的資料庫
replicate-ignore-db = information_schema #不需要同步的資料庫
replicate-ignore-db = performance_schema #不需要同步的資料庫
binlog_format = ROW
log-bin = mysql-bin #開啟二進制日志功能,binlog資料位置
log-bin-index = mysql-bin.index
relay-log = relay-log #relay-log日志記錄的是從伺服器I/O線程将主伺服器的二進制日志讀取過來記錄到從伺服器本地檔案#然後SQL線程會讀取relay-log日志的内容并應用到從伺服器
relay_log_index = relay-log.index
gtid_mode=on
enforce_gtid_consistency=on #隻記錄對基于GTID的複制安全
log-slave-updates = 1 #允許下端接入slave
max_allowed_packet=16M
5.重新啟動mysql , service mysqld start (啟動方法有很多,隻要能重新啟動就行)
-
登入從庫 建立使用者
change master to MASTER_HOST='rm-2ze1lm67a...', #主庫位址
master_user='yiside_bi', #設定的授權的主庫賬戶
master_password='Yiside_bi', #設定的授權的主庫密碼
MASTER_LOG_FILE='mysql-bin.000783', #主庫的file
MASTER_LOG_POS=636125; #主庫的postion
7.指令行登入mysql,mysqld -uroot -p 資料密碼
-
執行start slave;啟動
9.在執行show slave statusG; 檢視狀态
- Slave_IO_Running: Yes
Slave_SQL_Running: Yes 表示設定成功