在Ubuntu上恢复丢失的MariaDB数据的常见方法
逻辑备份是最常用的恢复方式,适用于大多数场景,尤其适合中小型数据库。
sudo systemctl stop mariadb
full_backup.sql
)导入MariaDB:mysql -u root -p < /path/to/full_backup.sql
输入root用户密码后,系统会自动执行SQL脚本恢复数据。sudo systemctl start mariadb
mysql -u root -p -e "SHOW DATABASES;" # 查看数据库列表
mysql -u root -p -e "USE your_database; SHOW TABLES;" # 检查特定数据库的表
物理备份直接复制数据库文件,恢复速度更快,适合大型数据库或需要快速恢复的场景。
sudo apt update && sudo apt install mariadb-backup
/path/to/backup
目录:sudo mariabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql
此命令会将备份文件复制到MariaDB的数据目录(/var/lib/mysql
)。sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mariadb
若启用了二进制日志(默认开启),可通过binlog恢复误删除或特定时间点的数据。
/var/lib/mysql/
目录,命名格式为mysql-bin.000001
、mysql-bin.000002
等。可通过以下命令查看当前binlog位置:SHOW BINARY LOGS;
mysqlbinlog
工具导出指定区间的binlog(如从mysql-bin.000001
到mysql-bin.000003
),并导入数据库:mysqlbinlog /var/lib/mysql/mysql-bin.000001 /var/lib/mysql/mysql-bin.000002 /var/lib/mysql/mysql-bin.000003 | mysql -u root -p
若需恢复到特定时间点(如2025-09-18 10:00:00),可添加--start-datetime
参数:mysqlbinlog --start-datetime="2025-09-18 10:00:00" /var/lib/mysql/mysql-bin.000001 | mysql -u root -p
对于企业级大型数据库,可使用Percona XtraBackup进行热备份(在线备份)和恢复。
sudo apt install percona-xtrabackup-80 # 适用于MariaDB 10.5及以上版本
sudo xtrabackup --prepare --target-dir=/path/to/backup
sudo xtrabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mariadb
log_bin
)开启,以便后续增量恢复(修改/etc/mysql/mariadb.conf.d/50-server.cnf
文件,添加log_bin = mysql-bin
并重启服务)。