MariaDB备份主要分为逻辑备份(生成SQL语句文件,可跨版本/平台恢复)和物理备份(直接复制数据文件,速度快、效率高)两类,以下是常用工具的具体操作:
mariadb-dump)mariadb-dump是MariaDB自带的逻辑备份工具,适用于需要跨版本迁移或灵活恢复的场景。
mariadb-dump -u [用户名] -p[密码] --databases [数据库名] > /path/to/backup.sql 示例:备份mydb数据库到/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 mariabackup,官方推荐)mariabackup是MariaDB官方提供的物理备份工具,支持热备份(不停机)、增量备份,适用于InnoDB/XtraDB引擎,恢复速度快。
sudo apt install mariadb-backup sudo yum install mariadb-backup 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 若数据库较小或允许停机,可直接复制数据目录(默认/var/lib/mysql):
sudo systemctl stop mariadb # 停止服务 sudo rsync -a /var/lib/mysql /path/to/backup/mysql_backup # 复制数据目录 sudo systemctl start mariadb # 启动服务 恢复流程需根据备份类型(逻辑/物理)选择对应方法,以下是常见场景的操作:
mariadb-dump生成的SQL文件)逻辑备份恢复适用于跨版本、跨平台或需要选择性恢复的场景。
mysql -u [用户名] -p[密码] [目标数据库名] < /path/to/backup.sql 示例:恢复mydb_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 mariabackup生成的文件)物理备份恢复适用于快速恢复大型数据库,需按全量→增量顺序操作。
mariabackup --prepare --target-dir=/path/to/full_backup sudo systemctl stop mariadb sudo rm -rf /var/lib/mysql/* sudo rsync -aP /path/to/full_backup/ /var/lib/mysql/ sudo chown -R mysql:mysql /var/lib/mysql sudo systemctl start 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/ 若备份文件为.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 解压后按物理备份恢复流程操作。若数据库无法正常启动或数据损坏,可尝试以下方法:
mysqlcheck --all-databases --check --auto-repair -u root -p /etc/my.cnf(或/etc/mysql/my.cnf),添加:[mysqld] innodb_force_recovery = 1 重启MariaDB,逐步增加innodb_force_recovery的值(1-6),直到能启动并导出数据。pt-table-checksum(Percona Toolkit)或第三方数据恢复服务。mysql:mysql),避免未授权访问。ib_logfile0、ib_logfile1)异常,可删除并重启MariaDB重新生成。