阅读量:0
Linux环境下MariaDB备份与恢复流程
一、备份流程
MariaDB备份主要分为逻辑备份(生成SQL语句文件,可跨版本/平台恢复)和物理备份(直接复制数据文件,速度快、效率高)两类,以下是常用工具的具体操作:
1. 逻辑备份(使用mariadb-dump)
mariadb-dump是MariaDB自带的逻辑备份工具,适用于需要跨版本迁移或灵活恢复的场景。
- 备份单个数据库:
示例:备份mariadb-dump -u [用户名] -p[密码] --databases [数据库名] > /path/to/backup.sqlmydb数据库到/home/user/backups/mydb_backup.sql:mariadb-dump -u root -pMySecretPassword --databases mydb > /home/user/backups/mydb_backup.sql - 备份所有数据库:
mariadb-dump -u [用户名] -p[密码] --all-databases > /path/to/all_databases_backup.sql - 压缩备份文件(节省空间):
gzip /path/to/backup.sql # 生成backup.sql.gz - 备份特定表:
mariadb-dump -u [用户名] -p[密码] [数据库名] [表1] [表2] > /path/to/table_backup.sql
2. 物理备份(使用mariabackup,官方推荐)
mariabackup是MariaDB官方提供的物理备份工具,支持热备份(不停机)、增量备份,适用于InnoDB/XtraDB引擎,恢复速度快。
- 安装mariabackup:
- Debian/Ubuntu:
sudo apt install mariadb-backup - RHEL/CentOS:
sudo yum install mariadb-backup
- Debian/Ubuntu:
- 执行全量备份:
示例:全量备份到mariabackup --user=[用户名] --password=[密码] --backup --target-dir=/path/to/full_backup/var/backups/mariadb/full:mariabackup --user=root --password=MySecretPassword --backup --target-dir=/var/backups/mariadb/full - 执行增量备份(基于最近的全量或增量备份):
示例:基于mariabackup --user=[用户名] --password=[密码] --backup --target-dir=/path/to/incremental_backup --incremental-basedir=/path/to/last_backup/var/backups/mariadb/full做增量备份到/var/backups/mariadb/inc1:mariabackup --user=root --password=MySecretPassword --backup --target-dir=/var/backups/mariadb/inc1 --incremental-basedir=/var/backups/mariadb/full
3. 文件系统级物理备份(简单但需停机)
若数据库较小或允许停机,可直接复制数据目录(默认/var/lib/mysql):
sudo systemctl stop mariadb # 停止服务
sudo rsync -a /var/lib/mysql /path/to/backup/mysql_backup # 复制数据目录
sudo systemctl start mariadb # 启动服务
二、恢复流程
恢复流程需根据备份类型(逻辑/物理)选择对应方法,以下是常见场景的操作:
1. 逻辑备份恢复(mariadb-dump生成的SQL文件)
逻辑备份恢复适用于跨版本、跨平台或需要选择性恢复的场景。
- 恢复单个数据库:
示例:恢复mysql -u [用户名] -p[密码] [目标数据库名] < /path/to/backup.sqlmydb_backup.sql到mydb数据库:mysql -u root -pMySecretPassword mydb < /home/user/backups/mydb_backup.sql - 恢复所有数据库:
mysql -u [用户名] -p[密码] < /path/to/all_databases_backup.sql - 恢复到远程服务器:
mysql --host=[远程IP] -u [用户名] -p[密码] < /path/to/backup.sql
2. 物理备份恢复(mariabackup生成的文件)
物理备份恢复适用于快速恢复大型数据库,需按全量→增量顺序操作。
- 准备全量备份(解压、重组数据,使其可导入):
mariabackup --prepare --target-dir=/path/to/full_backup - 恢复全量备份:
- 停止MariaDB服务:
sudo systemctl stop mariadb - 清空现有数据目录(避免冲突):
sudo rm -rf /var/lib/mysql/* - 将全量备份复制到数据目录:
sudo rsync -aP /path/to/full_backup/ /var/lib/mysql/ - 修复权限(确保MariaDB用户拥有数据目录所有权):
sudo chown -R mysql:mysql /var/lib/mysql - 启动MariaDB服务:
sudo systemctl start mariadb
- 停止MariaDB服务:
- 应用增量备份(若有):
- 准备增量备份(基于全量备份):
mariabackup --prepare --target-dir=/path/to/full_backup --incremental-dir=/path/to/incremental_backup - 将增量备份合并到全量备份:
sudo rsync -aP /path/to/incremental_backup/ /var/lib/mysql/
- 准备增量备份(基于全量备份):
3. 压缩备份恢复
若备份文件为.gz或.xbstream格式,需先解压再恢复:
- 解压
.gz文件:gunzip -c /path/to/backup.sql.gz | mysql -u [用户名] -p[密码] [目标数据库名] - 解压
.xbstream文件(Percona XtraBackup格式):
解压后按物理备份恢复流程操作。mbstream -x -C /path/to/backup < /path/to/backup.xbstream
4. 数据损坏时的恢复(高级)
若数据库无法正常启动或数据损坏,可尝试以下方法:
- 检查并修复表:
mysqlcheck --all-databases --check --auto-repair -u root -p - 强制恢复(InnoDB损坏):
编辑/etc/my.cnf(或/etc/mysql/my.cnf),添加:重启MariaDB,逐步增加[mysqld] innodb_force_recovery = 1innodb_force_recovery的值(1-6),直到能启动并导出数据。 - 使用专业工具:
若上述方法无效,可使用pt-table-checksum(Percona Toolkit)或第三方数据恢复服务。
注意事项
- 定期测试恢复:每月至少测试一次备份文件的恢复流程,确保备份有效性。
- 备份存储安全:将备份文件存储在异地(如云存储)或离线介质(如NAS),防止硬件故障导致数据丢失。
- 权限管理:备份文件和数据目录需设置合理权限(如
mysql:mysql),避免未授权访问。 - 日志清理:恢复后若出现日志文件(如
ib_logfile0、ib_logfile1)异常,可删除并重启MariaDB重新生成。
以上就是关于“Linux MariaDB的备份与恢复流程”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm