openGauss源码解析(211)
openGauss源码解析:备份恢复机制(3)
10.2.2 gs_probackup主要文件
增量备份与全量备份相比,最重要的就是对备份数据和元数据的管理。备份数据主要通过目录来区分,元数据主要通过backup.control文件来管理。gs_probackup的主要目录文件如下。
(1) backup_path:备份根目录,所有实例的备份文件都存放在这个目录下。
(2) backup_path/backups/:数据根目录,所有实例的数据文件都存放在这个目录下。
(3) backup_path/wal/:日志根目录,所有实例的日志文件都存放在这个目录下。
(4) backup_path/backups/instance_name:实例的数据根目录,一个实例的所有数据都存放在这个目录下。实例备份的配置参数文件pg_probackup.conf存放在这个目录下。
(5) backup_path/wal/instance_name:实例的日志根目录,一个实例的所有WAL日志都存放在这个目录下。
(6) backup_path/backups/instance_name/backupID:一个具体备份的数据目录,一次备份的数据存放在这个backupID下,backupID是用这次备份的开始时间start_time进行36位编码生成的,即backupID等于base36enc(backup->start_time),base36enc是一个36位编码的转换函数。备份元数据控制文件backup.control就存放在这个目录下。
gs_probackup备份元数据文件backup.control内容参照pgBackupWriteControl函数写的内容,也可以通过gs_probackup show -B backup-path查看备份元数据信息。
文件内容具体如下:
(1) #Configuration 配置小节。
① backup-mode = "PAGE","PTRACK","DELTA","FULL"。当前只支持FULL和PTRACK。
② stream = true 或者 false,表示是否流复制备份模式。
③ compress-alg = none,zlib或者pglz。
④ compress-level = 0到9,级别越大,压缩率越高。
⑤ from-replica = true或者 false,true表示是从备机备份数据,false表示从主机备份数据。通过执行pg_is_in_recovery SQL函数来判断主备机。
(2) #Compatibility 兼容性小节。
① block-size = 数据库数据文件数据页的大小。
② xlog-block-size = 数据库日志文件日志页的大小。
③ checksum-version = CRC校验算法的版本号,数值类型。global/pg_control文件中的data_checksum_version。
④ program-version = gs_probackup工具版本号,字符串类型。
⑤ server-version = 数据库服务器版本号,字符串类型。
(3) #Result backup info。
① timelineid = 备份时数据库的时间线。
② start-lsn = 备份开始时的XLOG位置。
③ stop-lsn = 备份结束时的XLOG位置。
④ start-time = 备份开始时的时间(备份状态设置为BACKUP_STATUS_RUNNING的时间)。
⑤ merge-time = 备份合并的时间,如果没有合并,则为0。
⑥ end-time = 备份结束时的时间(或者是备份非正常终止的时间)。
⑦ recovery-xid = 这个备份能够恢复到的最早事务ID。
⑧ recovery-time = 这个备份能够恢复到的最早时间点。
⑨ expire-time = 备份过期的时间。
⑩ merge-dest-id = 备份能合并到的备份ID。
⑪ data-bytes = 备份的数据大小,这个是原始大小。
⑫ wal-bytes = 备份的WAL日志文件大小。
⑬ uncompressed-bytes = 备份的数据未压缩大小,不包括WAL文件。
⑭ pgdata-bytes = 备份时数据库的数据目录PGDATA的大小。
⑮ status = 备份状态 "UNKNOWN","OK","ERROR","RUNNING","MERGING","MERGED","DELETING","DELETED","DONE","ORPHAN","CORRUPT"。
⑯ parent-backup-id = 父备份ID,只有在增量备份的时候有效。
⑰ primary_conninfo = 连接数据库的信息。replication,dbname,fallback_application_name,password等连接信息。
⑱ external-dirs = 备份的外部地址列表。
⑲ note = 备份的注释信息。
⑳ content-crc = 整个备份数据的CRC校验值。backup_content.control文件的CRC值。backup_content.control文件存放了备份文件的信息。