GoldenDB业务数据备份包括五类备份:
● data数据备份
● binlog日志备份
● 活跃gtid备份
● 元数据备份
● Sequence备份
在恢复操作时,需要同时用到这五类备份的结果文件。
data数据文件备份分为全量备份和增量备份。
全量备份
备份恢复操作中必用到的文件。
主要备份步骤如下:
1.开启xtrabackup备份任务,记录xtrabackup_log。
2.拷贝所有表的*. ibd数据文件和ibdata1文件到指定备份目录。
3.上述完成拷贝后,执行如下命令。
FLUSH TABLE WITH READ LOCK
4.拷贝.frm、.MYD、.MYI、misc files。
5.记录拷贝完表文件时的重做日志的检查点LSN。
6.执行命令,解除步骤3中的锁。
UNLOCK TABLES
7.结束xtrabackup备份任务,拷贝xtrabackup_log,将所有备份文件备份在“$DNip_FULL_$back_start_time.xbstream”文件内。
注:如需压缩备份,需在DN用户下,修改$HOME/etc/dbagent.ini中配置项compress = (1-32间任意一整数),并通过dbtool -dbagent -lc命令动态生效。
增量备份
恢复操作中指定恢复的时刻如果在增量备份时刻之后,建议选择全量备份文件+增量备份文件一起做恢复操作。
主要备份步骤如下:
1.开启xtrabackup备份任务,记录xtrabackup_log。
2.拷贝“所有表的. ibd数据文件距离上一次全量备份产生变化的数据”和“ibdata1文件距离上一次全量备份产生变化的数据”,文件后缀名. delta和.meta。
3.上述完成拷贝后,执行命令。
FLUSH TABLE WITH READ LOCK
4.拷贝.frm、.MYD、.MYI、misc files。
5.记录拷贝完表文件时的重做日志的检查点LSN。
6.执行命令,解除步骤3中的锁。
UNLOCK TABLES
7.结束xtrabackup备份任务,拷贝xtrabackup_log,所有备份文件最后备份在“$dbip_INCREMENTAL _$back_start_time.xbstream”文件内。
注:如需压缩备份,需在DN用户下,修改$HOME/etc/dbagent.ini中配置项compress = (1-32间任意一整数),并通过dbtool -dbagent -lc命令动态生效。
备份DN节点$HOME/data/binlog目录下的binlog二进制文件,恢复操作中用于数据一致性处理。
备份集群活跃事务列表及对应的各主DN当前binlog位置。
● 活跃事务列表:可用于保证全局节点恢复数据一致性。
● binlog位置备份:在恢复任意时刻时,定位binlog备份文件位置。在之前恢复过程中用到。最新恢复已经不使用这个信息了。
备份集群相关的元数据,主要包括有数据字典,用户密码,索引信息。
备份集群相关的Sequence数据,主要包括有自增列所在表的库名,表名,起始值,步长,最小值,最大值,当前值等属性。
● 定时备份
分布式数据库集群内部每个MySQL节点的默认备份策略如下图所示。

说明:
● 周日备份全量数据,其他时间分别在周日全量备份的基础上做一次增量备份。如此,可通过全量数据和其他任一增量备份数据,快速恢复到指定一天的数据。
● 也可以根据业务要求,调整定时备份策略,每天的备份模式可以在“不备份”、“全量备份”、“增量备份”中三选一。
● 实时备份
用户也可以在操作维护门户页面上手动备份。手动选择备份策略可满足某些特定场景下的实时备份需求。
● 备份策略细则
目前备份策略支持5种选择:
(1)强制备份主节点:强制备份选择的分片的主DN节点。
(2)自动选择备份节点:在选定的分片中自动选择主从复制最快的一个备DN节点。
(3)指定机房:在选定的分片和机房中自动选择主从复制最快的一个备DN节点。
(4)相对位置:在选定的分片和机房中自动选择主从复制最快的一个备DN节点。
(5)指定节点:备份选定的DN节点。
界面展示如下:

若活跃事务列表和binlog位置备份开关打开,则:
● 每隔30 s向GTM查询当前活跃事务列表信息和向DBagent查询当前binlog位置信息,并将查询结果信息保存在backup_root_directory配置路径下的子目录“Active_TX_Info”下的.current 文件中。
● 每隔60 s查看.current文件是否达到1 M,如果达到1 M,将.current文件归档到“Active_TX_Info”的子目录“Active_TX_Archive”下。
开关配置在clustermanager.ini中active_tx_timing_query,默认配置如下:
active_tx_timing_query=1 --0-OFF,1-ON.
分为全量备份和增量备份,全量备份是由CM通知备份,将某个集群的元数据信息全部备份,包括有数据字典、密码信息和索引信息备份下来。而增量备份,是在有DDL操作时,将相关数据字典信息和索引信息备份下来。
分为全量备份和增量备份,全量备份是由CM通知备份,将某个集群的Sequence信息全部备份,包括有自增列所在表的库名、表名、起始值、步长、最小值、最大值、当前值等信息备份下来。而增量备份,是在有Sequence属性变更操作时,将相关Sequence信息和变更类型备份下来。
● 定时备份流程
data数据备份流程如下图所示。

图解步骤:
1)insight页面创建定时备份任务到backup_restore库,向CM发送dbtool消息
2)当CM定时器触发时,CM向各节点DBAgent发起备份请求
3)DBAgent接收到备份请求后,将备份文件保存到本地$HOME/backup_root
4)DBAgent备份完成后,将备份完成结果反馈给CM
5)CM接收到各节点DBAgent的备份结果,汇总后给MDS
6)MDS接收到备份结果
7)MDS将消息备份结果发向OMM, OMM入库,对应的表是:
goldendb_omm.gdb_cluster_backup_history
goldendb_omm.gdb_cluster_backup_history_detail
insight页面可以从步骤7中库表查到备份结果情况。
● 实时备份流程
data数据实时备份流程如下图所示。

图解步骤:
1)insight页面将实时备份请求发给MDS
2)MDS将实时备份任务发送到CM
3)CM接收到实时备份请求后,查询备份策略和配置
4)选择将要备份的DN节点,之后,顺序向MDS、GTM、各DN节点DBAgent发起备份请求
5)DBAgent接收到备份请求后,将备份文件保存在本地$HOME/backup_root
6)DBAgent备份完成后,将备份完成结果情况反馈给CM
7)CM接收到各节点DBAgent的备份结果,汇总后给MDS
8)MDS接收到备份结果后,入库,相应的表是:
goldendb_omm.gdb_cluster_backup_history
goldendb_omm.gdb_cluster_backup_history_detail
insight页面可以从步骤7中库表查到备份结果情况。
● 备份文件存放路径
● 配置:备份恢复配置中backup_rootdir配置值,若为空则使用默认值。
default path:$HOME/backup_root
● 存放路径:在backup_root目录下,会自动生成子目录“DBCluster_集群ID/DATA_BACKUP/任务/Data/Node_groupid_roomid_ip_port”。
备份的全量数据文件或增量数据文件都存放在这个子目录下。
● 备份说明
● binlog日志通过insight界面配置定时任务进行备份。
● 备份间隔时间需要配置,建议120分钟。
● 可配置binlog备份无效期,在所配时间范围内,不做binlog定时备份,最多可配10段。例如:09:00:00~11:30:00,13:00:00~15:00:00。
● 备份文件保存在$HOME/backup_root/DBCluster_集群ID 中的LOGICAL_BACKUP 目录下。
● 备份保存路径
● 配置:备份恢复配置中backup_rootdir配置值,若为空则使用默认值。
default path:$HOME/backup_root
● 存放路径:在backup_root目录下,自动生成子目录“DBCluster_集群ID/LOGICAL_BACKUP/Binlog/ Node_groupid_roomid(按机房备份)”或“DBCluster_集群ID/LOGICAL_BACKUP/Binlog/ Node_groupid(按分片备份)”,备份的binlog二进制文件就存放在这个子目录下。
● 备份说明
CM每隔30 s向GTM和DBagent获取最新的活跃事务列表信息和当前binlog位置信息,并将获取的信息保存在clustermanager.ini中backup_root_directory配置路径下的子目录“Active_TX_Info”下的.current 文件中。
另有定时任务每隔60 s检查一次.current文件是达到1 M,如果达到1 M,将.current文件归档到“Active_TX_Info”的子目录“Active_TX_Archive”下。
● 备份保存路径
配置:活跃gtid备份文件存放路径对应clustermanager.ini中backup_root_directory配置值。
default path will be $HOME/backup_root
有定时任务每隔60 s检查一次配置路径下的.current文件是否达到1M,如果达到1 M,归档到图31-1备份恢复配置中backup_rootdir配置值路径下的“Active_TX_Info”的子目录“Active_TX_Archive”下。
● 备份说明
CM向MDS发送元数据备份时,会全量备份该集群下数据字典、密码信息和索引信息,在每次该集群有DDL操作时,会增量备份数据字典和索引信息。
● 备份保存路径
配置:元数据存放路径对metadataserver.ini中metadata_backup_dir配置值路径。
default path:$HOME/.metadata_backup_root
会自动生成子目录“DBCluster_集群ID/DATA_BACKUP/“TASKID”目录/MetaData/“备份时间”目录/”,备份的全量数据文件都存放在这个子目录下。生成“DBCluster_集群ID/LOGICAL_BACKUP/MetaData/“备份时间”目录/”,备份的增量数据文件都存放在这个子目录下。备份记录json文件存放在MetaData目录下。
● 备份说明
CM向GTM发送Sequence备份时,会全量备份该集群下Sequence信息,在每次该集群有Sequence属性变更操作时,会增量备份Sequence信息和变更类型信息。此外,GTM自身有周期性全量备份,默认5分钟,备份该集群下Sequence信息。
● 备份保存路径
配置:Sequence备份信息存放路径对应gtm.ini中seq_backup_dir配置值路径。
default path:$HOME/seq_backup_root
会自动生成子目录“DBCluster_集群ID/LOGICAL_BACKUP/Sequence/“备份时间”目录/”,备份的全量数据文件和增量数据文件都存放在这个子目录下。备份记录json文件存放在Sequence目录下。
基于NFS的备份数据库目录结构如下图所示。

说明:在环境搭建时配置好NFS备份共享目录,有备份操作后,在共享目录下就会出现如下文件夹和文件:
● “DBCluster_集群ID”文件夹:该目录下存放“DATA_BACKUP”、“LOGICAL_BACKUP”、备份结果记录文件。
●“DATA_BACKUP”目录下包含:备份任务号创建备份数据目录,此目录下包含“Data”、“MetaData”、“ResultInfo”、“Sequence”等子目录。
●“Data”文件夹:该目录下存放了全量备份文件、增量备份文件、可选有备份任务相关的Binlog目录(恢复至备份开始时刻必要binlog文件目录);
●“MetaData”文件夹:该目录下存放了各个集群元数据的备份信息;
●“ResultInfo”文件夹:该目录下存放了备份版本、拓扑结构说明、备份结果文件等;
●“Sequence”文件夹:该目录下存放了各个集群Sequence的备份信息;
●“LOGICAL_BACKUP”目录下包含:该目录下存放了“Binlog”(定时备份Binlog)、“MetaData”、“Sequence”等子目录。
● “Active_TX_Info”文件夹:该目录下存放了Active_TX_Info归档文件,当clustermanager.ini中backup_root_directory配置路径下的Active_TX_Info目录下的“DBCluster_集群id_Active_TX_info.时间戳.current”文件满1 M后,就会被归档到Active_TX_Archive目录下。
备份过程对系统的影响如下:
● 备份过程中消耗数据文件所在磁盘的读IO,需要从本地拷贝数据文件。
● 备份文件需要从本地上传到NFS共享目录,影响DN服务器的网络IO,建议使用单独的网卡配置NFS。
● 备份过程中会有短暂的flush table with read lock锁(秒级别的锁)。
综合以上影响,建议备份操作与批业务操作放在不同的时间段执行。
恢复过程对系统的影响如下:
● 恢复过程中消耗待恢复DN数据磁盘的写IO,需要将数据文件拷贝到待恢复数据磁盘上。
● 恢复过程中影响待恢复DN服务器的网络IO,备份文件从NFS共享目录下载到待恢复DN服务器上。
● 恢复过程中DN会有启停操作,建议先停运业务、禁用CN。
恢复可以指定恢复到任意时刻,根据恢复时使用到的文件情况可分为:
● 全量恢复,仅用到全量备份文件的恢复。
● 增量恢复,既用到全量备份文件,又用到增量备份文件的恢复。
建议恢复操作时,指定恢复时刻为备份结束时刻。
恢复流程说明如下:
1.获取恢复所需要的文件。
2.通过全量备份文件(及增量文件)恢复DN。
3.应用binlog 文件。
4.回滚恢复时刻的活跃事务。
恢复可以指定恢复到任意时刻,根据恢复时使用到的文件情况可分为:
● 全量恢复,仅用到全量备份文件的恢复。
● 增量恢复,既用到全量备份文件,又用到增量备份文件的恢复。
根据备份源可分为:
● 本系统内恢复,备份和恢复的集群在同一套GoldenDB系统内。
● 非本系统恢复,备份和恢复的集群属于不同的GoldenDB系统。
恢复流程说明如下:
1.对集群的元数据进行恢复。
2.恢复集群中每个Group的DN
● 获取恢复所需要的文件。
● 通过全量备份文件(及增量文件)恢复主机DN
● 对主机DN应用binlog 文件
● 对主机DN回滚恢复时刻的活跃事务
● 对集群备机发起恢复请求
● 集群备机恢复完成
3.设定GTM的最大GTID值。




