更新时间:2020-07-10 17:10
本文主要介绍如何使用RDS MySQL 5.6/5.7的物理备份文件,在ECS实例上搭建备库。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
yum localinstall mysql80-community-release-el7-1.noarch.rpm
说明:CentOS 6的操作系统需要下载并安装mysql80-community-release-el7-1.noarch.rpm源安装包。
yum -y install yum-utils
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql56-community
说明:
- 由于使用该Yum源默认安装的是8.0版本,因此需要执行以下命令,禁用默认安装8.0版本MySQL的Yum源。
yum-config-manager --disable mysql80-community- 若您需要配置安装是5.7版本MySQL的Yum源,则执行以下命令。
yum-config-manager --enable mysql57-community
yum -y install mysql-community-server
/etc/my.cnf
文件,将文件内容替换成如下所示。
说明:server-id不能与RDS实例相同。
[mysqld]
innodb_checksum_algorithm=crc32
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=524288000
innodb_undo_directory=/var/lib/mysql/
basedir=/usr datadir=/var/lib/mysql
innodb_undo_tablespaces=0
server-id=55555
log_bin=mysql-log
gtid_mode=on
enforce_gtid_consistency=on
log-slave-updates=1
relay_log=relay-log
sql_mode=''
binlog_format=row
skip-grant-tables=1
yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
yum update percona-release
yum list | grep percona
yum -y install percona-xtrabackup.x86_64
注意:
- 建议使用最新的物理备份文件,因为使用之前的物理备份文件,可能导致二进制日志已经被清理导致无法获取二进制日志,进而导致搭建RDS备库失败。
- 2019年2月20日后创建的RDS MySQL 5.6实例,数据备份文件的格式为xbstream文件包,即以qp.xb为后缀文件。
- 更多过于迁移物理备份文件的信息及操作,请参考RDS MySQL物理备份文件恢复到自建数据库。
wget -c '[$RDS_Backup]' -O bak_qp.xb
说明:
- [$RDS_Backup]为物理备份文件的下载地址。
- 若下载不成功,需要确认当前ECS的内网IP是否加入到RDS的白名单中。
- 下载地址必须使用单引号引起来,否则会报403错误。
cat bak_qp.xb | xbstream -x -v -C [$DIR]
说明:[$DIR]为自建数据库的数据目录绝对路径。
innobackupex --decompress --remove-original [$DIR]
innobackupex --defaults-file=[$DIR]/backup-my.cnf --apply-log [$DIR]
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
mysql
命令,进入MySQL命令行界面。user
为root
、host
为127.0.0.1
的用户。
说明:而MySQL 5.7版本需要确认存在aliyun_root账号。
select user,host from mysql.user;
UPDATE user SET password=PASSWORD("[$Password]") WHERE user='root' and host = '127.0.0.1';
说明:[$Password]为您自定义的密码。
flush privileges;
/etc/my.cnf
配置文件中的skip-grant-tables=1
参数。systemctl restart mysql
mysql -uroot -h127.0.0.1 -p[$Password]
use mysql;
drop table slave_master_info;
drop table slave_relay_log_info;
drop table slave_worker_info;
drop table innodb_index_stats;
drop table innodb_table_stats;
source /usr/share/mysql/mysql_system_tables.sql;
/var/lib/mysql/xtrabackup_slave_info
中的set global gtid_purged
语句。reset master;
SQL语句,然后执行上一步记录的set global gtid_purged
SQL语句。reset slave;
change master to master_host = '[$Host]', master_port = [$Port], master_user = '[$User]', master_password='[$Password]', master_auto_position = 1;
说明:
- [$Host]为RDS实例的地址。
- [$Port]为RDS实例的端口。
- [$User]为RDS实例的账号。
- [$Password]为RDS实例账号的密码。
start slave;系统显示类似如下。
show slave status\G
在文档使用中是否遇到以下问题
更多建议
匿名提交