首先应认真看下阿里云官方文档:RDS MySQL 物理备份文件恢复到自建数据库
本人实践的数据库版本是 5.6,恢复数据的 Ubuntu 版本是 14.04 和 16.04 两个版本,这两个版本默认数据库都不是 5.6,需要单独安装;
另外Percona Xtrabackup
的版本也请按照阿里云的提示下载对应版本。我使用的是2.3.7
apt-get install software-properties-common
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'
sudo apt-get update
sudo apt install mysql-server-5.6
# 建议这里直接安装 5.6.36+ 版本,可能需要通过源码,或者去 mysql 官方下载 Ubuntu 安装包,官方没有 Ubuntu 16.04 的包,可以选择 Ubuntu 14 的预编译包
前面步骤如阿里云官方文档所示即可,但是在恢复数据库时遇到了问题
- 关闭 selinux
setenforce 0
- 调整 apparmor 对 mysql 目录限制
## vim /etc/apparmor.d/usr.sbin.mysqld
/root/mysql/data/ r,
/root/mysql/data/** rwk,
## 增加数据目录权限即可,如果安装了 5.6.36 可能要调整配置文件目录权限,看错误提示操作即可
/etc/mysql/mysql.conf.d/ r,
/etc/mysql/mysql.conf.d/* r,
在启动过程中,可能会遇到某些未知问题,可以通过添加 innodb_force_recovery = 6
参数来尝试修复,如果仍然出现下面错误,请升级 mysql 版本:
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 338332 K bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0 thread_stack 0x40000
这个问题,在 mysql 后续版本中解决掉了,保证你的 mysql 版本在 5.6.36+ 以上,我是升级到 5.6.44 解决的问题
之后启动后,即可导出相关数据即可!