云数据库MySQL版使用开源软件Percona Xtrabackup对数据库进行备份,所以您可以使用该软件将云数据库MySQL的备份文件恢复到自建数据库中,本文将介绍详细的操作步骤。

软件说明

  1. MySQL 5.6.41
  2. Percona XtraBackup 2.2.9
  3. rds_backup_extract.sh

解压数据库备份文件

1
2
unzip -P密码 mysql_data_backup.tar.gz.zip
bash rds_backup_extract -f mysql_data_backup.tar.gz -C /data/mysql/data

修改配置文件 backup-my.cnf 如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# This MySQL options file was generated by innobackupex.

# The MySQL server
[mysqld]
innodb_checksum_algorithm=innodb
# innodb_log_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1572864000
# innodb_fast_checksum=false
# innodb_page_size=16384
# innodb_log_block_size=512
innodb_undo_directory=.
innodb_undo_tablespaces=0


# rds_encrypt_data=false
# innodb_encrypt_algorithm=aes_128_ecb

修改文件属主

1
chown -R mysql:mysql /data/mysql/data

恢复数据文件

1
2
chmod 400 /data/mysql/data/backup-my.cnf
innobackupex --defaults-file=/data/mysql/data/backup-my.cnf --apply-log /data/mysql/data

启动数据库并登入验证

1
mysqld_safe --defaults-file=/data/mysql/data/backup-my.cnf --user=mysql --datadir=/data/mysql/data --skip-grant-tables &

新建用户

恢复完成后,表 mysql.user 中是不包含 RDS 中创建的用户,需要新建,新建用户前请执行如下 SQL:

1
2
3
4
5
delete from mysql.db where user<>'root' and char_length(user)>0;

delete from mysql.tables_priv where user<>'root' and char_length(user)>0;

flush privileges;

参考链接

阿里云数据备份/恢复

评论