前言
前两天还原阿里云数据库时遇到了一些问题,在这里做一个记录
文件名后缀 .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_PWD
和 MYSQL_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 &
后记
当时这个问题百度谷歌了很久都没找到解决方法,希望能帮助到需要的人