在 Linux 下使用 MariaDB 恢复数据,常见场景和做法如下,你可以根据实际情况选择。
mysqldump 备份文件恢复(最常用)假设你有备份文件:
/backup/mariadb_backup.sql
mysql -u root -p < /backup/mariadb_backup.sql
如果是恢复指定数据库:
mysql -u root -p dbname < /backup/mariadb_backup.sql
如果备份是整库 dump:
sed 提取某张表示例(只导入 users 表):
sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES;/p' backup.sql > users.sql
mysql -u root -p dbname < users.sql
SHOW VARIABLES LIKE 'log_bin';
ls -lh /var/lib/mysql/
mysqlbinlog --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000001
mysqlbinlog --start-datetime="2024-01-01 10:00:00" \
--stop-datetime="2024-01-01 10:30:00" \
/var/lib/mysql/mysql-bin.000001 | mysql -u root -p
或按 position:
mysqlbinlog --start-position=12345 --stop-position=23456 mysql-bin.000001 | mysql -u root -p
⚠️ 风险较高,仅限紧急恢复
systemctl stop mariadb
cp -r /backup/mysql /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
systemctl start mariadb
mariabackup(Percona/XtraBackup 类)适合大库、在线热备
mariabackup --prepare --target-dir=/backup/full
systemctl stop mariadb
rm -rf /var/lib/mysql/*
mariabackup --copy-back --target-dir=/backup/full
chown -R mysql:mysql /var/lib/mysql
systemctl start mariadb
CHECK TABLE tablename;
如果你能说明:
我可以给你更精确的恢复命令。