在ECS上輕鬆搭建RDS的從實例

場景

因爲一些特殊的緣由,某燃氣公司線下ECS上須要在ECS上搭建一套從庫,須要同步RDS數據庫的數據(mysql5.7版本)。mysql

實現RDS for mysql與線下ECS上自建數據庫數據實時同步,阿里雲官方推薦使用DTS方式進行。緣由有兩個:sql

一、mysql-bin正常狀況下,RDS在本地只保存18個小時數據庫

二、當RDS實例切換時,會影響自建ECS數據同步(這個通過測試能夠排除)vim

一方面考慮到使用DTS工具會產生很多的費用(長期使用),另外一方面,在數據庫中一個地區對應一個庫,後續業務沒法事先規劃好庫名,此時若是使用dts可能須要購買多個通道,進行配置,比較費時費力且費錢。基於這兩個緣由的考慮,某燃氣公司決定使用搭建主從複製方式來實現數據同步。如下是搭建RDS與ECS主從複製過程工具

操做步驟

配置RDS主實例

  1. 登陸 RDS 控制檯,選擇目標實例。測試

    .    配置從實例讀取數據使用的只讀帳號和受權數據庫。
    .    將ECS的從實例的 IP 地址加入主實例的 IP 白名單中
    .    登陸主實例
    .    查詢主實例的 server-id。
# show variables like 'server_id';

系統返回以下信息:
+-------------------------+-----------------+
| Variable_name           | Value           |
+-------------------------+-----------------+
| server_id               |678888899909      |
| server_id_bits          | 32              |
+-------------------------+-----------------+

配置ECS上從實例

  1. 安裝 MySQL 從實例。
    MySQL 安裝包和安裝方法,這裏略,這裏建議安裝percona版本的mysql。

中止從實例 mysql 服務。阿里雲

.    修改從實例 mysql 配置文件。

1)打開從實例 MySQL 配置文件。
vim /etc/my.cnfspa

.    配置從實例的 server-id 和要同步的數據庫。
server-id               =  123456789              
log_bin=/data/dbdata/mysql-bin 
expire_logs_days        =  7
max_binlog_size         =  100M
replicate-ignore-db     =  mysql                  #不須要同步的數據庫
replicate-ignore-db     =  information_schema     #不須要同步的數據庫
replicate-ignore-db     =  performance_schema     #不須要同步的數據庫
replicate-ignore-db     =  sys     #不須要同步的數據庫
  1. 配置 GTID 同步模式,binlog 格式爲 row,以兼容主實例。
#GTID
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row                             #設置 binlog 爲 row
log-slave-updates=1
  1. 執行以下命令,查看 binlog 配置結果。
# show variables like '%binlog_format%';
系統返回以下信息:
+-------------------------+-----------------+
| Variable_name           | Value           |
+-------------------------+-----------------+
| binlog_format           | ROW             |
+-------------------------+-----------------+
  1. 將主實例數據全量同步到從實例。
    方式一:經過dts進行數據實時同步

方式二:經過mysqldump進行導出數據庫及導入數據
注:這裏你們應該比較熟悉,就不詳細介紹日誌

.    登陸數據庫,設置同步選項。
mysql>change master to master_host = 'rds服務地扯', master_port = 3306, master_user = 'root', master_password='masterpassword', master_auto_position = 1;
  1. 啓動從實例。
mysql>slave start;
  1. 檢查同步結果。
mysql>show slave status\G
查看系統返回信息中 Slave_IO_Running 和 Slave_SQL_Running 的狀態是否爲 Yes,以下所示。
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes

注: Slave_IO_Running、Slave_SQL_Running兩個參數均爲yes,表示IO進程及SQL進程都正常,表示配置RDS主從實例成功。code

郵件告警功能

因爲mysql-binlog在RDS上正常狀況下只保存18個小時,此時必需要對從庫及主庫狀態進行控制,防止從庫沒有應用日誌,RDS主庫上的日誌就已經刪除,這節內容會在下一篇文章中描述。下面會配合lepus監控軟件實現郵件告警的功能。

via 卓見雲技術服務團隊

閱讀後請點擊

相關文章
相關標籤/搜索