阿里RDS配置本地从库

477 阅读2分钟

RDS配置从库

一、 版本要求:

因阿里RDS使用GTID特性,因此要求MySQL版本>=5.6

二、 配置主实例:

  1. 目标RDS创建只读账号,并授权数据库。
  2. 如有必要,将从实例的 IP 地址加入主实例的 IP 白名单中。
  3. 查询主实例的 server-id
mysql> show variables like '%server_id%';
+----------------+------------+
| Variable_name  | Value      |
+----------------+------------+
| server_id      | 2504883070 |
| server_id_bits | 32         |
+----------------+------------+
  1. 导出主实例数据
[root@server-4-241 scripts]# mysqldump -ucszjy -hcszjy-sql01.mysql.rds.aliyuncs.com -pr48T7HQp9eiNL99n --single-transaction --routines --triggers --master-data=2 --events --flush-logs --databases zjy > zjy.sql
  1. 记录导出SQL后使用的binlog文件名
mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.003223
         Position: 36631447
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 1fca3bbb-4870-11e8-a6ad-7cd30aeb7e5c:1-104974702,
a7d4ecd6-6edc-11e8-b0e1-7cd30aeb4598:1-140222642
1 row in set (0.03 sec)

三、配置从实例

  1. 安装mysql

  2. 修改mysql配置

    打开my.cnf,添加以下配置

server-id = 2504883071			# 不能与server端id相同
max_binlog_size = 100M
replicate-do-db = zjy			# 需要同步的数据库
replicate-ignore-db = mysql		# 不同步的数据库
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema

# GTID配置
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row				# 设置binlog为ROW
log-slave-updates=1

character_set_server = utf8
  1. 启动mysql-slave查看binlog_format
mysql> show variables like '%binlog_format%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
  1. 把导出的SQL文件导入从库
# 创建所需数据库
mysql> create database zjy;

# 导入SQL至zjy库
~]# mysql -uroot -hlocalhost -p zjy < zjy.sql
  1. 配置从库并启动
# 同步选项出错时,重置同步设置
mysql>  change master to master_auto_position=0;
Query OK, 0 rows affected (0.34 sec)

# 设置同步选项
mysql>  change master to master_host='cszjy-sql01.mysql.rds.aliyuncs.com', master_port = 3306, master_user = 'cszjy', master_password='r48T7HQp9eiNL99n',master_log_file='mysql-bin.003221',master_log_pos=4;
Query OK, 0 rows affected, 2 warnings (0.51 sec)

# 启动从实例
mysql> START SLAVE;
Query OK, 0 rows affected (0.08 sec)

# 查看实例状态
mysql> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: cszjy-sql01.mysql.rds.aliyuncs.com
                  Master_User: cszjy
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.003221
          Read_Master_Log_Pos: 8078916
               Relay_Log_File: server-4-241-relay-bin.000002
                Relay_Log_Pos: 4520068
        Relay_Master_Log_File: mysql-bin.003221
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes