sudo systemctl stop mariadb
/var/lib/mysql),防止操作失误导致二次丢失。sudo cp -R /var/lib/mysql /var/lib/mysql_backup
若已有完整的数据库备份(.sql格式,如full_backup.sql),可通过以下命令导入:
mysql -u root -p < /path/to/full_backup.sql
sudo systemctl start mariadb
若备份了整个MariaDB数据目录(如/var/lib/mysql的完整副本),可直接覆盖当前数据目录:
sudo rsync -av /path/to/backup_mysql/ /var/lib/mysql/
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mariadb
mysql -u root -p -e "SHOW DATABASES;"
若使用MyISAM存储引擎,可通过myisamchk工具修复损坏的表(如database_name.table_name.MYI):
sudo myisamchk -r /var/lib/mysql/database_name/table_name.MYI
-r参数表示尝试修复,若失败可使用-o(更彻底的修复)。对于InnoDB表,优先使用mysqlcheck工具自动检查和修复:
sudo mysqlcheck -u root -p --auto-repair --check --all-databases
--auto-repair:自动修复发现的问题;--all-databases:检查所有数据库。若InnoDB数据文件(如ibdata1、ib_logfile*)损坏,可通过innodb_force_recovery参数强制启动MariaDB,导出数据后再重建:
/etc/my.cnf或/etc/mysql/my.cnf),在[mysqld]段添加:innodb_force_recovery = 1
sudo systemctl restart mariadb
innodb_force_recovery的值(1~6,每次+1),直到能正常启动。mysqldump -u root -p --all-databases > all_databases_backup.sql
若数据文件(如表文件)被误删除,可使用extundelete工具恢复(需提前安装):
sudo extundelete /dev/sdXY --restore-file /var/lib/mysql/database_name/table_name.MYD
/dev/sdXY:包含被删除文件的分区(如/dev/sda1);--restore-file:指定被删除文件的路径。mysql -u root -p
SHOW DATABASES;
USE your_database_name;
SHOW TABLES;
SELECT * FROM your_table_name LIMIT 10;
mysqldump或mariadb-backup工具定期备份(全量+增量)。sudo mysqldump -u root -p --all-databases > /backups/mariadb_$(date +%F).sql
mysqlcheck定期检查数据库完整性。