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