温馨提示×

linux mariadb怎样恢复数据

小樊
54
2026-10-18 21:55:20
栏目: 云计算

在 Linux 下使用 MariaDB 恢复数据,常见场景和做法如下,你可以根据实际情况选择。


一、使用 mysqldump 备份文件恢复(最常用)

1. 准备备份文件

假设你有备份文件:

/backup/mariadb_backup.sql

2. 恢复整个数据库

mysql -u root -p < /backup/mariadb_backup.sql

如果是恢复指定数据库:

mysql -u root -p dbname < /backup/mariadb_backup.sql

二、恢复单个表(从完整备份中)

如果备份是整库 dump:

  1. 先恢复表结构(可选)
  2. 使用文本编辑器或 sed 提取某张表
  3. 再导入

示例(只导入 users 表):

sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES;/p' backup.sql > users.sql
mysql -u root -p dbname < users.sql

三、使用二进制日志(binlog)恢复(误删数据)

1. 确认 binlog 已开启

SHOW VARIABLES LIKE 'log_bin';

2. 查看 binlog 文件

ls -lh /var/lib/mysql/
mysqlbinlog --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000001

3. 按时间或位置恢复

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

四、从物理文件恢复(数据目录损坏)

⚠️ 风险较高,仅限紧急恢复

1. 停止 MariaDB

systemctl stop mariadb

2. 替换数据目录

cp -r /backup/mysql /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql

3. 启动服务

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

六、常见注意事项

  • 恢复前 先备份当前数据
  • 确保数据库版本兼容
  • 字符集、SQL_MODE 要一致
  • 恢复后执行:
CHECK TABLE tablename;

如果你能说明:

  • 是 误删表 / 误删库 / 服务器崩溃
  • 是否有 dump 备份或 binlog
  • MariaDB 版本

我可以给你更精确的恢复命令。

0 踩