ecs上搭建阿里云数据库rds的只读实例

一、搭建环境

1. 阿里云的云数据库rds版,MySQL版本:MySQL 5.6.16,做主服务器,816G内存。

2. Ecs服务器一台:CentOS release 6.8,安装MySQL 5.6.40,做从服务器,Intel(R) Xeon(R) CPU 

    E5-2682 v4 @ 2.50GHz,两核4G内存。

二、目的

通过搭建只读实例(mysql主从),实时将数据从云数据库rds,复制到ecs上的MySQL从库,减少rds读取数据的压力。

三、步骤

1.rds数据库页面,选中“实例”-“备份恢复”-“下载”,进行“物理备份”文件的下载。然后将备份文件上传到ecs服务器。

 

1.png

2.ecs服务器上,将rds数据库的备份文件解压缩:

2.png

 

[devops@CN-Aliyun-HD2-C-1074 tmp]$ mkdir -p hins3120429_data_20180711012442

[devops@CN-Aliyun-HD2-C-1074 tmp]$ sudo tar -zxvf hins3120429_data_20180711012442.tar.gz -C ./hins3120429_data_20180711012442

ibdata1

mysql/slave_master_info.ibd

mysql/innodb_table_stats.ibd

mysql/innodb_index_stats.ibd

mysql/slave_relay_log_info.ibd

mysql/failover_info.ibd

mysql/ha_health_check.ibd

3.ecs服务器,修改mysql的配置文件,开启mysqlGTID模式:

# sudo vi /etc/my.cnf

添加或修改:

3.png

4.修改后停止msyql服务,备份ecsmysql数据库目录:

4.png

[devops@CN-Aliyun-HD2-C-1074 data]$ sudo service mysqld stop

Stopping mysqld: [ OK ]

[devops@CN-Aliyun-HD2-C-1074 data]$ sudo mv mysql mysql_bake

 

5.rds备份数据恢复到ecsmysql

# sudo /usr/bin/innobackupex --apply-log hins3120429_data_20180711012442

5.png

# sudo /usr/bin/innobackupex  --copy-back /tmp/hins3120429_data_20180711012442

6.png

修改ecsmysql数据存储目录的属主、属组:

# sudo chown -R mysql.mysql  /data/mysql

7.png

6.启动mysql

# sudo service mysqld start

8.png

7.通过修改配置文件,重置mysqlroot密码

# sudo vi /etc/my.cnf  [mysqld]添加skip-grant-tables

# sudo service mysqld restart

mysql> update mysql.user set password=password('******') where user='root';

# sudo vi /etc/my.cnf 去掉skip-grant-tables

# sudo service mysqld restart

8.在阿里云的rds数据库上,通过“实例”-“数据安全性”,添加ecs服务器IP

9.png

9.配置ecs服务器的MySQL实时同步rds数据库

10.png

# sudo cat xtrabackup_slave_filename_info

记录下MASTER_LOG_FILE='mysql-bin.001313', MASTER_LOG_POS='434565',以及rds的连接串,放入如下sql语句:

change master to master_host = 'rm-uf**********.mysql.rds.aliyuncs.com', master_port = 3306,master_user='***',master_password='******',MASTER_LOG_FILE='mysql-bin.001313', MASTER_LOG_POS=434565;

master_host rds的连接串

master_port数据库端口号

master_userrds的复制用户,需要有rdsreplication_slave,replication_client权限(rds经典模式为读写权限)。

master_password 为复制用户的密码

MASTER_LOG_FILE 从这个二进制文件的MASTER_LOG_POS位置点开始同步RDS数据库。启动只读实例与rds数据库的同步:

12.png

mysql> change master to marester_host = 'rm-uf6g45fw2y852kqb6.mysql.rds.aliyuncs.com', master_port=3306,master_user='***',master_password='******',MASTER_LOG_FILE='mysql-bin.001313', MASTER_LOG_POS=434565;

Query OK, 0 rows affected, 2 warnings (0.03 sec)

mysql> start slave;

Query OK, 0 rows affected (0.01 sec)

10.查看只读实例是否成功:

 Ecs上, MySQL>show slave status\G;

12.png

rds上创建test测试数据库,发现ecs上也同步创建,rds删除test库,rcs也同步删除。说明只读实例创建成功。