my13_mysql xtrabackup备份的时间点
备份原理
xtrabackup的备份时间点是备份结束时刻,记录在xtrabackup_binlog_info 文件中;如果后续需要通过binlog追加操作,则该时间点是起点。
备份开始后,xtrabckup就开始复制数据库中的文件,不锁表,同时监控日志变化;
在复制完所有的database后,立即将此时数据库master status的位置写入xtrabackup_binlog_info 文件,所以从时间上来看,xtrabackup_binlog_info文件在数据库目录文件的下面,在其他文件的上面。
如果这个时间点有未提交的事务,则最终会回退,此操作为crash-recovery(崩溃恢复)--应用所有已提交和未提交的事务,并回滚未提交的事务。
备份前时刻
个人测试库环境,除非手工执行SQL语句,否则不会有其他事务产生,备份前
mysql> show master status\G; *************************** 1. row *************************** File: mysql-bin.000038 Position: 19842 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec) ERROR: No query specified
# rpm -qa | grep xtrabackup percona-xtrabackup-24-2.4.12-1.el7.x86_64
开始备份
innobackupex --defaults-file=/etc/my_bakdb.cnf --no-timestamp --user automng --host=192.168.56.82 --port=3319 --password ***** /data0/backup/dbbak_20180813
刚开始备份时备份目录的文件,此时并没有xtrabackup_binlog_info 文件
[root@red4 dbbak_20180813]# ls -ltrh
total 2.0G
-rw-r-----. 1 root root 2.0K Aug 13 16:40 xtrabackup_logfile
-rw-r-----. 1 root root 1.0G Aug 13 16:40 ibdata1
手工执行DML语句,让数据库产生事务变化
mysql> delete from sbtest9 limit 10; Query OK, 10 rows affected (0.63 sec)
备份完成后,文件目录中,有xtrabackup_binlog_info 文件但要比相应的数据库的备份目录时间上靠后
[root@red4 dbbak_20180813]# ls -ltrh total 1.1G -rw-r-----. 1 root root 1.0G Aug 13 16:40 ibdata1 drwxr-x---. 2 root root 4.0K Aug 13 16:42 mysql drwxr-x---. 2 root root 8.0K Aug 13 16:42 sys drwxr-x---. 2 root root 4.0K Aug 13 16:42 txdb drwxr-x---. 2 root root 8.0K Aug 13 16:42 performance_schema -rw-r-----. 1 root root 23 Aug 13 16:42 xtrabackup_binlog_info -rw-r-----. 1 root root 30K Aug 13 16:42 xtrabackup_logfile -rw-r-----. 1 root root 119 Aug 13 16:42 xtrabackup_checkpoints -rw-r-----. 1 root root 3.5K Aug 13 16:42 ib_buffer_pool -rw-r-----. 1 root root 493 Aug 13 16:42 backup-my.cnf -rw-r-----. 1 root root 588 Aug 13 16:42 xtrabackup_info
可以看到xtrabackup_binlog_info文件中记录并不是刚开始的19842这个位置,而是事务变化后的24218位置,
# cat xtrabackup_binlog_info mysql-bin.000038 24218
mysql> show master status\G; *************************** 1. row *************************** File: mysql-bin.000038 Position: 24218 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec) ERROR: No query specified
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· 20250116 支付宝出现重大事故 有感
· 一个基于 Roslyn 和 AvalonEdit 的跨平台 C# 编辑器
· 2025 最佳免费商用文本转语音模型: Kokoro TTS
· 海康工业相机的应用部署不是简简单单!?
· 使用 pdf.js 通过文件流方式加载pdf文件