如何备份MySQL数据库?

MySQL数据库备份主要有以下几种方式:

  1. 完整备份:备份整个数据库,包括表结构及数据。用在数据库较小或备份周期较长的情况。
    语法:
mysqldump -u root -p -all-databases > db_backup.sql
  1. 增量备份:只备份上次备份后更改的数据。一般用于数据库较大且数据更新频繁的情况。
    首次完整备份:
mysqldump -u root -p --all-databases --single-transaction --flush-logs --hex-blob --add-drop-table --routines --events > db_backup.sql  

后续增量备份:

mysqldump -u root -p --all-databases --single-transaction --lock-all-tables  --flush-logs --hex-blob --add-drop-table  --routines --events --where="TIMESTAMP>TIMESTAMP OF PREVIOUS BACKUP"  >db_incremental_backup.sql
  1. 物理备份:直接拷贝数据文件及相关文件,速度快但无法用于其他MySQL版本。
    语法:
tar -zcvf db_backup.tar.gz /var/lib/mysql
  1. 逻辑备份:通过MySQL的二进制日志(binlog)恢复,可以用于同一MySQL版本及不同版本。
    首次备份:
FLUSH LOGS;  #刷新日志
mysqldump -u root -p --all-databases --master-data=2 --single-transaction >db_backup.sql 

恢复使用CHANGE MASTER TO命令指定binlog后,执行备份sql文件恢复数据。