mysql数据库备份和恢复(mysqldump)

1、mysqldump逻辑备份说明

在进行数据库数据逻辑备份操作过程中,主要会运用mysqldump逻辑备份工具,可以实现本地或远程的数据备份;

利用mysqldump进行逻辑备份数据时,主要的备份逻辑是将建库、建表、数据插入语句信息导出,实现数据的备份操作;

基于mysqldump备份数据的逻辑原理,对于数据量比较小的场景(单表数据行百万以内),mysqldump备份工具做备份会更适合些;

在跨平台或跨版本进行数据库数据信息迁移时,mysqldump备份工具做备份也会比较适合,可以避免物理备份的兼容性问题;

说明:在一般情况下,对数据库进行数据恢复的时间耗费,大约是数据库进行数据备份的时间耗费的3~5倍。

2、数据库数据信息备份过程(全备)

mysqldump -uroot -pxxx -A --master-data=2 --single-transaction -R -E --triggers --max_allowed_packet=64M >/database_backup/full_`date +%F`

# 通过在单个事务中备份所有表时,会创建一致性快照
--single-transaction 

# 利用此参数功能,可以实现自动记录位置点信息,可以实现自动添加全局读锁(GRL)功能(在配合--single-transaction参数使用时,可以减少锁时间)
# 此选项已弃用,将在以后数据库服务的版本中删除,请使用source-data代替此参数使用
--master-data=2	

# 数据备份(压缩备份)
mysqldump -uroot -pxxx -A --master-data=2 --single-transaction -R -E --triggers --max_allowed_packet=64M >/database_backup/full_`date +%F`|gzip >/tmp/bak.sql.gz 


3、数据恢复

3.1. 检查bin_log日志功能是否开启;

mysql> select @@log_bin;

3.2 检查最近一次的全备数据

3.3 恢复最近一次全备数据:

mysql> set sql_log_bin=0;
# 建议在进行数据日志恢复数据时,将数据恢复时执行的SQL语句信息,不做binlog日志记录;恢复后别忘在改为1;
mysql> source  /database_backup/full_xx.sql 

3.4 寻数据库服务增量备份,并进行增量数据恢复

3.4.1 检索恢复binlog临界位置

vim /database_backup/full.sql 
# 表示在进行数据恢复操作时,会将gtid1-6的事件信息删除掉,因为在之前备份数据中已经有了1-6的事件数据信息;
# 因此,从GTID的编号来看,可以从编号7事件开始进行数据增量恢复;
SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '9d14be39-6423-11ed-bb21-000c2996c4f5:1-6';
# 输出信息表示增量数据的临界点在binlog.000013日志文件的1312位置,同时是备份结束时的位置点;
CHANGE MASTER TO MASTER_LOG_FILE='binlog.000013', MASTER_LOG_POS=1312;

3.4.2 检索查看binlog日志文件获取误删除操作前的GTID

mysql> show binlog events in 'binlog.000013';
# 需要将GTID编号10的误删除数据库事件信息忽略,然后再进行数据信息的恢复
@@SESSION.GTID_NEXT= '9d14be39-6423-11ed-bb21-000c2996c4f5:10' || binlog.000013 | 2137 | Query  |  1 | 2238 | drop database testdb /* xid=840 */

3.4.3 移动迁移binlog文件位置(保证源文件数据不会损坏)

cp /data/3306/data/binlog.* /databases_backup

3.4.4 操作截取binlog文件信息

# include-gtids是指定前面临界位置点,截取之后的日志文件信息
mysqlbinlog --skip-gtids --include-gtids='9d14be39-6423-11ed-bb21-000c2996c4f5:7-9'  /data/3306/data/binlog.000013 >/database_backup/incre-bin.sql

3.4.5 增量恢复binlog数据信息

mysql> source /database_backup/incre-bin.sql
# 完成数据信息的增量恢复
mysql> set sql_log_bin=1;

3.4.6 进行测试核验数据信息是否完全恢复,并进行最终全量备份
mysqldump -uroot -p1 -A --master-data=2 --single-transaction -R -E --triggers --max_allowed_packet=64M >/database_backup/full_`date +%F`.sql

posted @ 2025-08-30 20:32  运维实习生  阅读(37)  评论(0)    收藏  举报