更新时间:2024-01-09
功能说明
通过DMP 备份下载的文件,在异机恢复 MySQL 数据库。
下面将使用 RPM 安装版本进行演示。
前提条件
- 已下载 MySQL 数据库备份。
- 已部署 MySQL 环境,并与 RDS for MySQL 版本一致。
- 已安装 Xtrabackup(MySQL 5.7 • 2.4版本;MySQL 8.0 • 8.0版本) 软件。
- 已安装 qpress。
注意事项
- MySQL 版本建议一致,起码要保证大版本一致;如 MySQL 5.7.30 可以在 MySQL 5.7.32 上恢复。
- 不可以降级恢复,如 MySQL 8.0 在 MySQL 5.7 中恢复。
- 建议按实际数据库大小的 3倍 准备磁盘空间。
- “#”为Linux命令;“mysql> ”为SQL命令。
操作步骤
- 在目标服务器创建临时目录。
# mkdir -p /root/back/data
- 将下载的备份文件,上传至目录:/root/back
- 解压备份文件
# tar -zxvf E13E5BB0AC514C8986FE434A5FD9AC43.tar.gz
# chmod -R 775 /root/back/full_3_1
# cd /root/back
# xbstream -x --parallel=4 -C ./data < ./full_3_1/backup.xbstream
# xtrabackup --decompress --remove-original --parallel=4 --target-dir=./data
- 关闭MySQL
# systemctl stop mysqld
# systemctl status mysqld
- 准备目录
# cd /var/lib/
# mv mysql mysql_back
# mkdir mysql
- 执行恢复操作
# xtrabackup --defaults-file=/etc/my.cnf --prepare --parallel=4 --target-dir=/root/back/data
…….
# 修改(或添加)my.cnf文件中[mysqld]标签参数innodb_undo_tablespaces为如下命令查出的值
# grep "innodb_undo_tablespaces" /root/back/data/backup-my.cnf
# echo 'innodb_undo_tablespaces=3' >> /etc/my.cnf
# --datadir参数指定的目录必须为空文件夹(Linux系统中检查是否有隐藏文件)
# xtrabackup --defaults-file=/etc/my.cnf --copy-back --parallel=4 --datadir=/var/lib/mysql --target-dir=/root/back/data
……
- 修改目录权限
# chown -R mysql:mysql /var/lib/mysql
# ll /var/lib/mysql
- 启动MySQL,并登录测试
# systemctl disable --now firewalld
# echo 'selinux=disabled' > /etc/selinux/config
# setenforce 0
# systemctl start mysqld
# mysql -uroot -p -S/var/lib/mysql/mysql.sock
mysql> show databases;
** 注:如果要使用DMP DTS功能迁移至RDS。需先清除数据库中用户名为“sangforroot”打头的用户。