美文网首页
阿里云RDS Mysql自建从库

阿里云RDS Mysql自建从库

作者: 牛亦非 | 来源:发表于2018-10-26 15:21 被阅读0次

阿里云RDS的价格较贵,想实现Mysql读写分离又想节约成本,可以考虑在阿里云ECS主机上自己搭建从库。以2核CPU+4G内存+200G SSD硬盘的配置为例,RDS一年的费用是6732,ECS一年是4335,可以节省1/3的费用,可以考虑用作离线统计等非用户实时数据需求。


shanku.png
  1. 备份数据库
    参考备份 RDS 数据

  2. 恢复数据
    参考恢复云数据库MySQL的备份文件到自建数据库
    补充:
    安装和RDS相同版本的Mysql(Mysql下载地址),可用select version()查看。
    安装步骤(以CentOS6 Mysql5.6.16为例):
    rpm安装

tar -xvf MySQL-5.6.16-1.el6.x86_64.rpm-bundle.tar -C mysql5.6.16
cd mysql5.6.16/
rpm -ivh MySQL-server-5.6.16-1.el6.x86_64.rpm
rpm -ivh MySQL-devel-5.6.16-1.el6.x86_64.rpm
rpm -ivh MySQL-client-5.6.16-1.el6.x86_64.rpm

yum安装
repo库地址

sudo yum localinstall mysql-community-release-el6-*.noarch.rpm
sudo yum install mysql-community-server

安装3个包即可,分别是服务端,客户端,开发相关库文件

如果ECS上已经安装其它版本Mysql,手动卸载:
yum方式安装的Mysql:
查看安装

yum list installed|grep mysql

卸载:

yum remove ...

删除相关文件:

rm -rf /var/lib/mysql
rm /etc/my.cnf
...

rpm方式安装的Mysql:
查看安装:

rpm -qa|grep mysql
chkconfig --list | grep -i mysql
whereis mysql

卸载:

rpm -e ...
chkconfig --del mysql

删除相关文件:

rm -rf /var/lib/mysql
rm -rf /usr/share/mysql
rm /etc/my.cnf
...

推荐使用yum安装数据恢复工具Percona XtraBackup

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm
rpm -ivH percona-release-0.1-6.noarch.rpm
yum install percona-xtrabackup-24

进入RDS管理后台下载备份文件,执行wget -c '<下载地址>' -O <自定义文件名>.tar.gz (复制的下载地址需要加单引号)
解压工具rds_backup_extract.sh解压备份文件:

bash rds_backup_extract.sh -f <数据备份文件名>.tar.gz -C /home/mysql/data

恢复备份文件:

innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
chown -R mysql:mysql /home/mysql/data

自定义配置文件/etc/my.cnf:

[mysqld]
# 指定数据路径
datadir = /mysql/data
port = 3306
server_id = 2
socket = /mysql/data/mysqld.sock
max_allowed_packet=32M
log-error = /mysql/logs/error.log
master-info-repository=file
relay-log-info_repository=file
binlog-format=ROW
gtid-mode=on
enforce_gtid_consistency=1
# 从库写自己的binlog
log_slave_updates=1
# 其它参数需要和主库保持一致 主库配置文件:/mysql/data/backup-my.cnf
lower_case_table_names=1
character_set_server=utf8mb4
innodb_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1572864000

登陆Mysql客户端(默认没有密码),清理复制关系表数据

RESET MASTER;
RESET SLAVE;
TRUNCATE TABLE mysql.slave_relay_log_info;
TRUNCATE TABLE mysql.slave_master_info;
TRUNCATE TABLE mysql.slave_worker_info;
TRUNCATE TABLE mysql.slave_relay_log_info;
TRUNCATE TABLE mysql.slave_master_info;

查看解压目录下xtrabackup_slave_info文件中同步配置信息;在RDS管理后台创建同步账户

STOP SLAVE;
SET GLOBAL gtid_purged='...';
CHANGE MASTER TO MASTER_HOST='RDS地址', MASTER_PORT=3306, MASTER_USER='...', MASTER_PASSWORD='...', MASTER_AUTO_POSITION=1;
START SLAVE;

相关文章

网友评论

      本文标题:阿里云RDS Mysql自建从库

      本文链接:https://www.haomeiwen.com/subject/sdnibftx.html