在ECS上搭建阿里云数据库RDS的只读实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ECS上搭建阿里云数据库RDS的只读实例相关的知识,希望对你有一定的参考价值。

 

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服务器。

 

技术分享图片

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

技术分享图片

 

[[email protected] tmp]$ mkdir -p hins3120429_data_20180711012442

[[email protected] 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

添加或修改:

技术分享图片

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

技术分享图片

[[email protected] data]$ sudo service mysqld stop

Stopping mysqld: [ OK ]

[[email protected] data]$ sudo mv mysql mysql_bake

 

5.rds备份数据恢复到ecsmysql

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

技术分享图片

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

技术分享图片

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

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

技术分享图片

6.启动mysql

# sudo service mysqld start

技术分享图片

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.配置ecs服务器的MySQL实时同步rds数据库

技术分享图片

# 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数据库的同步:

技术分享图片

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 statusG;

技术分享图片

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


以上是关于在ECS上搭建阿里云数据库RDS的只读实例的主要内容,如果未能解决你的问题,请参考以下文章

RDS主库ECS自建mysql GTID 主从

阿里云RDS读写分离数据查询延迟解决

阿里云服务器的ECS和RDS和OSS和SLB是啥意思

阿里云便捷工具集

阿里云ECS服务器创建的数据库如何使远程服务器能连接?

阿里云rds 实例 存储空间 怎么选择