Debian 上 MySQL 的备份与恢复实践
一 常用备份方式
mysqldump -u root -p your_db > /backup/your_db.sqlmysqldump -u root -p --databases db1 db2 > /backup/dbs.sqlmysqldump -u root -p --all-databases > /backup/all.sqlmysqldump -u root -p your_db your_table > /backup/your_table.sql--single-transaction;MyISAM 加 --lock-tables;远程备份加 -h 主机 -P 端口mysqldump -u root -p your_db | gzip > /backup/your_db.sql.gzmysqlpump -u root -p --databases db1 db2 > /backup/dbs_parallel.sqlsudo apt-get update && sudo apt-get install percona-xtrabackup-24xtrabackup --backup --target-dir=/path/to/backupxtrabackup --prepare --target-dir=/path/to/backup二 自动化与增量策略
0 2 * * * /usr/bin/mysqldump -u root -pYourPass --single-transaction --routines --triggers --default-character-set=utf8mb4 your_db | gzip > /backup/your_db_$(date +\%F).sql.gz~/.my.cnf 或凭据文件)[mysqld] 加入 log-bin=mysql-bin,重启后确认 SHOW VARIABLES LIKE 'log_bin'; 为 ONSHOW MASTER STATUS;mysqlbinlog --start-datetime="2025-04-01 00:00:00" --stop-datetime="2025-04-01 02:00:00" /var/log/mysql/mysql-bin.000001 | mysql -u root -p三 恢复步骤
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"mysql -u root -p your_db < /backup/your_db.sqlgunzip < /backup/your_db.sql.gz | mysql -u root -p your_dbmysql -u root -p < /backup/dbs_parallel.sqlsudo systemctl stop mysqlsudo mv /var/lib/mysql /var/lib/mysql.bak && sudo mkdir -p /var/lib/mysqlsudo xtrabackup --copy-back --target-dir=/path/to/backupsudo chown -R mysql:mysql /var/lib/mysqlsudo systemctl start mysqlmysqlbinlog 回放增量段至目标时间点或位置四 关键注意事项与验证
--single-transaction;涉及存储过程/触发器请加 --routines --triggers;字符集建议显式指定(如 utf8mb4)docker exec -i <容器> sh -c 'exec mysqldump ...' > backup.sql 进行导出,导入时管道至容器内 mysql