上个周末上新项目 迁移数据库30个G的库 迁移了2次耗时1天.感觉效率太低,想用xtrabackup恢复,发现之前mysql5.6和mysql8.0的文章写得潦草.自己一时半会也有点看不懂了.于是重写一遍5.7的
这边使用内存1G 差不多1个小时就恢复30G的数据,使用dump恢复需要至少4小时半天
首先安装Percona XtraBackup
安装yum 源
Mysql5.7 安装2.4 版本。
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install -y percona-xtrabackup-24.x86_64
本地服务器安装mysql5.7.x版本
安装过程省略
1普通恢复 备份本地自建数据库数据并恢复
通过percona xtrabackup备份原有数据
mkdir /home/bak
innobackupex --defaults-file=/etc/my.cnf --user=root --password='Hangzhou@123' /home/bak/
停止mysql 并 备份原有data文件夹
service mysqld stop
mv /usr/local/mysql/data /usr/local/mysql/data_bak
创建新的数据文件夹
mkdir /usr/local/mysql/data
/home/bak 文件夹里会生成一个以时间命名的文件夹,里面时备份出来的数据。
应用日志
innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log /home/bak/2019-12-09_03-41-59
拷贝数据
innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /home/bak/2019-12-09_03-41-59
修改权限并启动数据库
chown -R mysql:mysql /usr/local/mysql/data
service mysqld start
2阿里云RDS恢复到本地数据库
备份原有数据文件夹并停止mysql
mv /usr/local/mysql/data /u sr/local/mysql/data2
service mysqld stop
创建数据存放的文件夹 并将阿里云上下载的全量备份文件上传到服务器的/tmp
cd /tmp
mkdir /tmp/back
tar zxvf hins8229191_data_20191129231524.tar -C back
应用日志 可以使用内存加速 这边使用内存1G 差不多1个小时就恢复30G的数据
innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log --use-memory=1G /tmp/back/
拷贝数据
innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /tmp/back
授权并重新启动mysql
chown -R mysql:mysql /usr/local/mysql/data
service mysqld start
用原来数据库的账号密码 登陆数据库即可。
可参考下面这个写的比较清晰的博客
https://blog.51cto.com/niubdada/2380250
来源:CSDN
作者:爷来辣
链接:https://blog.csdn.net/xujiamin0022016/article/details/103484550