Ubuntu 上 MySQL 的备份与恢复指南
一 常用方法概览
二 使用 mysqldump 进行逻辑备份与恢复
mysqldump -u root -p --single-transaction --quick mydb > mydb.sqlmysqldump -u root -p --databases db1 db2 > dbs.sqlmysqldump -u root -p --all-databases > all.sqlmysqldump -u root -p mydb | gzip > mydb.sql.gzmysqldump -h 10.0.0.9 -P 3306 -u root -p mydb > mydb.sqlmysql -u root -p -e "CREATE DATABASE IF NOT EXISTS mydb;"mysql -u root -p mydb < mydb.sqlgunzip < mydb.sql.gz | mysql -u root -p mydbmysql -u root -p < all.sql三 使用 mysqlpump 并行备份与恢复
mysqlpump -u root -p mydb > mydb_pump.sqlmysqlpump -u root -p --databases db1 db2 > dbs_pump.sqlmysqlpump -u root -p --all-databases > all_pump.sqlmysql -u root -p mydb < mydb_pump.sql四 使用 Percona XtraBackup 进行物理热备与恢复
sudo apt-get update && sudo apt-get install percona-xtrabackup-24sudo xtrabackup --backup --target-dir=/opt/backup/2025-12-10sudo xtrabackup --prepare --target-dir=/opt/backup/2025-12-10sudo systemctl stop mysql && sudo rm -rf /var/lib/mysql/*sudo xtrabackup --copy-back --target-dir=/opt/backup/2025-12-10sudo chown -R mysql:mysql /var/lib/mysqlsudo systemctl start mysql五 时间点恢复与自动化运维
mysql -u root -p -e "SHOW VARIABLES LIKE 'log_bin';"mysqlbinlog --start-datetime="2025-12-10 10:00:00" --stop-datetime="2025-12-10 10:05:00" /var/log/mysql/mysql-bin.000001 | mysql -u root -pmysqlbinlog --start-position=154 --stop-position=1056 /var/log/mysql/mysql-bin.000001 | mysql -u root -p/opt/backup/mysql_backup.sh:#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
BACKUP_DIR="/opt/backup/mysql"
DB="mydb"
USER="root"
mkdir -p "$BACKUP_DIR"
mysqldump -u "$USER" -p --single-transaction --quick "$DB" \
| gzip > "$BACKUP_DIR/${DB}_${DATE}.sql.gz"
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete
chmod +x /opt/backup/mysql_backup.sh0 2 * * * /opt/backup/mysql_backup.shrsync -avz /opt/backup/mysql user@remote:/backup/mysql/scp /opt/backup/mysql/mydb_*.sql.gz user@remote:/backup/mysql/