MySQL数据库备份主要有以下几种方式:
- 完整备份:备份整个数据库,包括表结构及数据。用在数据库较小或备份周期较长的情况。
语法:
mysqldump -u root -p -all-databases > db_backup.sql
- 增量备份:只备份上次备份后更改的数据。一般用于数据库较大且数据更新频繁的情况。
首次完整备份:
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
- 物理备份:直接拷贝数据文件及相关文件,速度快但无法用于其他MySQL版本。
语法:
tar -zcvf db_backup.tar.gz /var/lib/mysql
- 逻辑备份:通过MySQL的二进制日志(binlog)恢复,可以用于同一MySQL版本及不同版本。
首次备份:
FLUSH LOGS; #刷新日志
mysqldump -u root -p --all-databases --master-data=2 --single-transaction >db_backup.sql
恢复使用CHANGE MASTER TO命令指定binlog后,执行备份sql文件恢复数据。