在ecs上搭建阿里云数据库rds的只读实例
一、搭建环境
1. 阿里云的云数据库rds版,MySQL版本:MySQL 5.6.16,做主服务器,8核16G内存。
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的配置文件,开启mysql的GTID模式:
# sudo vi /etc/my.cnf
添加或修改:
4.修改后停止msyql服务,备份ecs的mysql数据库目录:
[[email protected] data]$ sudo service mysqld stop
Stopping mysqld: [ OK ]
[[email protected] data]$ sudo mv mysql mysql_bake
5.将rds备份数据恢复到ecs的mysql:
# sudo /usr/bin/innobackupex --apply-log hins3120429_data_20180711012442
# sudo /usr/bin/innobackupex --copy-back /tmp/hins3120429_data_20180711012442
修改ecs的mysql数据存储目录的属主、属组:
# sudo chown -R mysql.mysql /data/mysql
6.启动mysql
# sudo service mysqld start
7.通过修改配置文件,重置mysql的root密码
# 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_user为rds的复制用户,需要有rds的replication_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 status\G;
在rds上创建test测试数据库,发现ecs上也同步创建,rds删除test库,rcs也同步删除。说明只读实例创建成功。
原文地址:http://blog.51cto.com/9285090/2147565