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
定期检查数据库完整性。