Debian MariaDB备份恢复方法
导读:Debian 上 MariaDB 的备份与恢复实践 一 常用方法概览 逻辑备份:使用 mysqldump 导出为 .sql 脚本,适合大多数场景,支持跨版本迁移、选择性恢复与细粒度对象控制。 自动化脚本:如 Automysqlbackup...
Debian 上 MariaDB 的备份与恢复实践
一 常用方法概览
- 逻辑备份:使用 mysqldump 导出为 .sql 脚本,适合大多数场景,支持跨版本迁移、选择性恢复与细粒度对象控制。
- 自动化脚本:如 Automysqlbackup,提供按日/周/月的备份策略与目录结构,便于规范化运维。
- 物理热备:使用 Percona XtraBackup,在不停库的情况下进行热备,支持增量备份与快速恢复,适合大体量或高可用要求。
- 并行导出:使用 mysqlpump(并行版 mysqldump),适合大库缩短导出时间。
- 物理迁移:通过 LVM 快照或 rsync 直接拷贝数据目录,适合同版本整机迁移或快速重建。
二 逻辑备份与恢复步骤
- 备份
- 全库备份(含存储过程/触发器,不含数据):
mysqldump -u root -p --single-transaction --routines --triggers --no-data --databases db1 db2 > backup_full.sql - 单库结构与数据:
mysqldump -u root -p --single-transaction --routines --triggers mydb > mydb.sql - 仅导出数据或仅结构:
mysqldump -u root -p --single-transaction mydb --no-create-info > mydb_data.sql
mysqldump -u root -p --single-transaction mydb --no-data > mydb_schema.sql - 排除部分表:
mysqldump -u root -p mydb --ignore-table=mydb.log_table1 --ignore-table=mydb.log_table2 > mydb_min.sql - 远程备份(使用配置文件存放凭据):
在 /etc/mysql/mariadb.conf.d/50-client.cnf 配置 [client] host/user/password 后执行:
mysqldump --defaults-extra-file=/etc/mysql/mariadb.conf.d/50-client.cnf mydb > mydb.sql
- 全库备份(含存储过程/触发器,不含数据):
- 恢复
- 目标库不存在时先建库:
mysql -u root -p -e “CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ” - 导入脚本:
mysql -u root -p mydb < mydb.sql - 跨服务器迁移:
scp mydb.sql user@target:/path/
ssh user@target “mysql -u root -p mydb < /path/mydb.sql”
- 目标库不存在时先建库:
- 自动化与保留策略
- 使用 Automysqlbackup:
sudo apt-get update & & sudo apt-get install -y automysqlbackup
编辑 /etc/automysqlbackup/ 配置备份目录、用户、数据库与保留周期;可手动执行:sudo automysqlbackup;加入 cron(如每日 2:00):
0 2 * * * /usr/bin/automysqlbackup - 自定义脚本示例(含压缩与保留 7 天):
#!/bin/bash
BACKUP_DIR=“/srv/backup”
DB=“mydb”
FILE=“$BACKUP_DIR/${ DB} $(date +%F).sql"
mysqldump --defaults-extra-file=/etc/mysql/mariadb.conf.d/50-client.cnf “$DB” > “$FILE”
gzip “$FILE”
find “$BACKUP_DIR” -name "${ DB} *.sql.gz” -mtime +7 -delete
- 使用 Automysqlbackup:
三 物理热备与恢复步骤 XtraBackup
- 适用场景:需要不中断业务的备份、支持增量备份与快速恢复的大数据量实例。
- 安装(Debian 常见版本):
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install -y percona-xtrabackup-24(或对应版本) - 全量备份与准备
- 备份:
xtrabackup --backup --target-dir=/data/backups/full --user=backup --password=pwd - 准备(应用 redo 日志,使备份一致性就绪):
xtrabackup --prepare --target-dir=/data/backups/full
- 备份:
- 恢复
- 停止数据库并清空数据目录:
sudo systemctl stop mysql
sudo mv /var/lib/mysql /var/lib/mysql.old - 拷贝回数据:
xtrabackup --copy-back --target-dir=/data/backups/full - 修正权限并启动:
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mysql
- 停止数据库并清空数据目录:
- 增量备份与准备
- 第一次增量(基于全量):
xtrabackup --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/full --user=backup --password=pwd - 第二次增量(基于上一次增量):
xtrabackup --backup --target-dir=/data/backups/inc2 --incremental-basedir=/data/backups/inc1 --user=backup --password=pwd - 准备阶段(按顺序应用):
xtrabackup --prepare --apply-log-only --target-dir=/data/backups/full
xtrabackup --prepare --apply-log-only --target-dir=/data/backups/full --incremental-dir=/data/backups/inc1
xtrabackup --prepare --target-dir=/data/backups/full --incremental-dir=/data/backups/inc2 - 之后按“全量恢复”步骤拷贝回并启动。
- 第一次增量(基于全量):
四 实践建议与注意事项
- 字符集与一致性
- 建议统一使用 utf8mb4,导出时显式指定:–default-character-set=utf8mb4;InnoDB 使用 --single-transaction 获取一致性快照,避免大表锁表。
- 备份用户与最小权限
- 建议创建专用备份账号:
CREATE USER ‘backup’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
GRANT SELECT, SHOW VIEW, RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON . TO ‘backup’@‘localhost’;
FLUSH PRIVILEGES;
- 建议创建专用备份账号:
- 保留与监控
- 明确保留周期(如7 天),定期校验备份可用性(抽样导入测试),并监控磁盘空间与备份成功率。
- 版本与兼容性
- 跨大版本恢复前先小范围演练;使用物理备份时尽量保持 MariaDB/MySQL 版本一致,减少恢复风险。
- 安全
- 避免在命令行中直接写密码,优先使用 ~/.my.cnf 或 –defaults-extra-file;限制备份文件权限为 600,妥善存储与传输。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian MariaDB备份恢复方法
本文地址: https://pptw.com/jishu/776124.html
