Ubuntu16.04LTS上的MySQL 5.7
数据库在我认为是不正确的系统关闭后被破坏了,最糟糕的时间试图恢复它。以前的系统管理员没有最近的备份,有些必要的是,我试着尽我所能来修复/恢复数据库。
MySQL服务器仅与:innodb_force_recovery=6一起运行
mysqldump给出了以下错误:
无法执行像‘gtid_mode’这样的显示变量:表'performance_schema.session_variables‘不存在(1146)
无法使用mysql_upgrade运行innodb_force_recovery=6
如果你有任何相关的问题,请问。
发布于 2017-04-05 16:32:40
此时,唯一的选择是从转储中提取数据并重新创建InnoDB数据库。
当MySQL在任何页面中遇到损坏时,它通常会崩溃,所以最好是逐个转储表。
下面是一个单独转储表的脚本,您可以根据具体情况调整这些表。如果崩溃,它将重新启动MySQL,并在failed.txt中保存“坏”表的列表。
set -eux
edir=export
function ensure_mysqld() {
mysql -e 'select 1' && return
service mysql start
timeout=300
while [[ $timeout -gt 0 ]]
do
mysql -e 'select 1' && return
sleep 1
timeout=$(( $timeout - 1 ))
done
echo "failed to start MySQL"
exit 1
}
for d in $(cat databases)
do
mkdir -p $edir/$d
set +e
ensure_mysqld
set -e
for t in $(mysql -S $socket -NBe "select TABLE_NAME from information_schema.TABLES WHERE TABLE_SCHEMA='$d' AND ENGINE = 'InnoDB' AND TABLE_TYPE = 'BASE TABLE'")
do
ensure_mysqld
mysqldump --skip-lock-tables $d $t > $edir/$d/$t.sql || echo "$d.$t" >> failed.txt
done
donehttps://stackoverflow.com/questions/43224808
复制相似问题