1. 准备工作:停止MariaDB服务并备份现有数据
在进行任何恢复操作前,务必先停止MariaDB服务以保证数据一致性,同时备份当前数据目录(防止恢复过程中意外覆盖):
sudo systemctl stop mariadb
sudo cp -R /var/lib/mysql /var/lib/mysql_backup # 备份现有数据目录
2. 检查数据损坏情况
使用mysqlcheck工具扫描所有数据库的表完整性,并尝试自动修复轻微损坏:
sudo mysqlcheck --all-databases --check --auto-repair -u root -p
输入root密码后,工具会输出检查结果(如发现损坏表,会尝试自动修复)。
3. 尝试修复表(针对不同存储引擎)
mysqlcheck未解决问题,可使用myisamchk工具修复指定表(需进入对应数据库目录):cd /var/lib/mysql/database_name # 替换为实际数据库名
sudo myisamchk -r table_name.MYI # 修复指定表
innodb_force_recovery参数强制启动MariaDB(逐步提升值至6,直到能启动):/etc/my.cnf),在[mysqld]段添加:innodb_force_recovery = 1
重启服务后,尝试导出数据(若成功,再逐步降低innodb_force_recovery值至0):sudo systemctl restart mariadb
4. 从备份恢复数据
mysqldump生成的SQL文件(如backup.sql),可直接导入:mysql -u root -p < /path/to/backup.sql
/backup/mysql),需先清空当前数据目录(确保备份目录为空),再复制文件并修改权限:sudo systemctl stop mariadb
sudo rm -rf /var/lib/mysql/* # 清空当前数据
sudo rsync -av /backup/mysql/ /var/lib/mysql/ # 复制备份文件
sudo chown -R mysql:mysql /var/lib/mysql # 修改权限
sudo systemctl start mariadb
5. 使用专业工具恢复(可选)
若上述方法无效,可尝试专业工具:
pt-table-checksum)或同步数据(如pt-table-sync);6. 验证数据完整性
恢复完成后,登录MariaDB检查数据库和表是否正常:
mysql -u root -p
SHOW DATABASES; # 查看数据库列表
USE your_database_name; # 切换至目标数据库
SHOW TABLES; # 查看表列表
SELECT * FROM your_table_name LIMIT 10; # 检查数据内容
注意事项:
mariabackup或xtrabackup进行物理备份,支持增量和热备份);ls -lh检查文件大小,或尝试导入小容量备份测试);