阿里云 RDS MySQL 物理备份文件恢复到自建数据库的一些问题
Fanx / 2020-05-27 / Linux / 阅读量 2917

前言

前两天还原阿里云数据库时遇到了一些问题,在这里做一个记录

文件名后缀 .tar.gz 、.xb.gz 或 qp.xb

初步 Debug

按照官方文档进行还原,在最后一步,启动mysql进程:

mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &

在这里一直起不来,于是使用 --log-error 参数进行一个初步的 debug

mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data --log-error=/var/log/mysqld-error.log

发现报错信息只有

[ERROR] Aborting

这就让人匪夷所思了,经过排查 Mysql 配置文件、数据库文件、SELinux 等均未解决

找到原因

最后使用 bash -x 启动 mysqld_safe 发现了问题所在
在前面读取 MY_PWDMYSQL_HOME 时出现了问题

++ pwd
+ MY_PWD=/
**** 省略 ****
+ MYSQL_HOME=/
+ export MYSQL_HOME

导致后面起服务时错误调用

++ nohup //sbin/mysqld *** 省略 *** --basedir=/ *** 省略 *** 

解决方法

这里有两种解决方法
方法一: 使用绝对路径启动 mysqld_safe 让程序可以读取到正确的路径

/usr/bin/mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &

方法二:指定正确的 basedir 参数
比如要指定到 /usr/sbin/mysqld 则参数为 --basedir=/usr

mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data --basedir=/usr &

后记

当时这个问题百度谷歌了很久都没找到解决方法,希望能帮助到需要的人

8 + 5 =
1 评论
    GuangranChrome 83Windows 10 / 11
    2020年05月27日 回复

    可以可以