一、物理定时备份:

备份对象:实例级别

物理备份还原是指通过备份集和归档日志将数据库还原至指定历史状态的过程。KingbaseES通过备份磁盘中数据目录下的物理文件(包括数据文件、控制文件和日志文件等),依靠还原数据文件和日志恢复技术来保护数据。

物理备份还原适用于需要为数据库系统提供整体冗余备份的场景,通过归档和PITR技术,可以将数据库恢复至过去任意时刻。

二、物理备份工具:

sys_rman是一款物理备份还原工具,具有初始化配置、备份、还原、恢复、备份集管理等多项功能。无论是数据库单机实例还是集群环境,sys_rman都能提供强大的支持。

sys_rman具有以下特点:

  • 备份对象:数据库单机实例、数据库集群。
  • 备份场景:支持本地REPO、外部专门的存储服务器REPO、S3接口云存储、多REPO同时备份。
  • 初始配置与备份:通过提供的模板,可以快速地完成物理备份初始化;通过部署定时任务,可以无人值守完成物理备份。
  • 还原:支持多种方式的PITR还原。
  • 归档:自动归档管理,支持多REPO同时归档。

三、本地定时备份配置

配置物理备份之前,需要配置数据库服务本地免密

可以在sys_hba.conf中配置,也可以执行以下命令配置:

 ./sys_encpwd -H \* -P 54321 -D \* -U system -W 密码

单机环境

3.1 参数配置  

      修改配置文件kingbase.conf中参数:

      archive_mode=on

      archive_command=''

      注:参数配置完需要重启数据库生效

3.2 修改物理备份配置文件

   将数据库安装目录的Server/share/sys_backup.conf文件拷贝一份到Server/bin目录下

cp /$安装目录/Server/share/sys_backup.conf  /$安装目录/Server/bin/

  修改bin下的配置文件:

   图中框起来的部分都是需要根据实际情况修改下,示例:

_target_db_style="single"
              ----------备份模式配置,如果是为单机做物理备份就配置single
_one_db_ip="192.168.40.118"
              ----------数据库节点实际IP,单机就在环境中ip a 查看下即可
_repo_ip="192.168.40.118"
              ----------备份节点实际IP,单机环境直接ip a 查看
_stanza_name="kingbase"
              ----------不做修改
_os_user_name="kingbase"
              ----------不做修改
_repo_path="/home/kingbase/kbbr_repo"
              ----------物理备份路径(可自定义),这里我配置为默认



##下列为备份间隔与时间配置,一般按照默认配置即可。下列含义为每七天凌晨两点执行一次全备、每一天凌晨四点执行一次增量备份。保留五分全量备份以及之间的增量备份。超过五份的会从旧的备份集删除。

_repo_retention_full_count=5
              ----------保留全量备份份数,超过计数将删除完整备份。两次全备间的增量备份也会保留
_crond_full_days=7
              ----------全量备份备份几天一次,间隔
_crond_diff_days=0
              ----------差异备份备份几天一次,间隔
_crond_incr_days=1
              ----------增量备份备份几天一次,间隔
_crond_full_hour=2
              ----------全量备份进行完整备份的时间
_crond_diff_hour=3
              ----------差异备份进行差异备份的时间
_crond_incr_hour=4
              ----------增量备份进行增量备份的时间


_os_ip_cmd="/sbin/ip"      ---------执行which ip 查看实际值并修改
_os_rm_cmd="/bin/rm"       ---------执行which rm 查看实际值并修改
_os_sed_cmd="/bin/sed"     ---------执行which sed 查看实际值并修改
_os_grep_cmd="/bin/grep"   ---------执行which grep 查看实际值并修改
_os_base64_cmd="/bin/base64"  ---------执行which base64 查看实际值并修改



_single_data_dir="/home/kingbase/KingbaseES/V9/data"
                              --------------数据库数据目录绝对路径
_single_bin_dir="/home/kingbase/KingbaseES/V9/Server/bin"
                              --------------数据库bin目录绝对路径
_single_db_user="system"
                              --------------默认使用管理员用户,绝大部分默认system即可
_single_db_port="54321"
                              --------------数据库默认端口号,配置需要物理备份的实例的端口号

  3.3 启动sec服务

       (开启sys_securecmdd进程)使用root用户进入到数据库安装目录的Server/bin下执行

        ./sys_HAscmdd.sh init

        ./sys_HAscmdd.sh start

3.4 物理备份初始化

        执行sys_backup.sh init备份初始化(kingbase用户)

      cd /home/kingbase/KingbaseES/V8/Server/bin/

     ./sys_backup.sh init

注:执行后会在备份文件路径 /home/kingbase/kbbr_repo 创建文件夹、文件、配置文件等,并备份一次全量数据。

3.5 执行sys_backup.sh start添加定时任务(kingbase用户)

         cd /home/kingbase/KingbaseES/V8/Server/bin/

         ./sys_backup.sh start

3.6 查看定时任务

          cat /etc/cron.d/KINGBASECRON

集群环境

B1节点IP 10.10.11.11
DB2节点IP 10.10.11.12
REPO节点IP 10.10.11.11,同一主机兼任两个逻辑角色DB&REPO
REPO目录 /home/kingbase/kbbr_repo
 4.1 参数配置  

      修改各DB节点的es_rep.conf中以下两项配置:

  • archive_mode=always 或者 on
  • archive_command="exit 0",不处于注释状态,取值将由初始化动作自动设置。

      注:参数配置完需要重启集群生效

4.2 修改REPO节点的物理备份配置文件

   将集群目录/share/sys_backup.conf文件拷贝一份到bin目录下

cp /$集群目录/share/sys_backup.conf  /$集群目录/bin/

  修改bin下的配置文件:

   图中框起来的部分都是需要根据实际情况修改下,示例:

_target_db_style="cluster"
              ----------备份模式配置,如果是集群则配置为cluster
_one_db_ip="10.10.11.11"
              ----------集群DB节点IP,根据实际填写
_repo_ip="10.10.11.11"
              ----------集群REPO节点IP,根据实际填写
_stanza_name="kingbase"
              ----------不做修改
_os_user_name="kingbase"
              ----------不做修改
_repo_path="/home/kingbase/kbbr_repo"
              ----------物理备份路径(可自定义),这里我配置为默认



##下列为备份间隔与时间配置,一般按照默认配置即可。下列含义为每七天凌晨两点执行一次全备、每一天凌晨四点执行一次增量备份。保留五分全量备份以及之间的增量备份。超过五份的会从旧的备份集删除。

_repo_retention_full_count=5
              ----------保留全量备份份数,超过计数将删除完整备份。两次全备间的增量备份也会保留
_crond_full_days=7
              ----------全量备份备份几天一次,间隔
_crond_diff_days=0
              ----------差异备份备份几天一次,间隔
_crond_incr_days=1
              ----------增量备份备份几天一次,间隔
_crond_full_hour=2
              ----------全量备份进行完整备份的时间
_crond_diff_hour=3
              ----------差异备份进行差异备份的时间
_crond_incr_hour=4
              ----------增量备份进行增量备份的时间


_os_ip_cmd="/sbin/ip"      ---------执行which ip 查看实际值并修改
_os_rm_cmd="/bin/rm"       ---------执行which rm 查看实际值并修改
_os_sed_cmd="/bin/sed"     ---------执行which sed 查看实际值并修改
_os_grep_cmd="/bin/grep"   ---------执行which grep 查看实际值并修改
_os_base64_cmd="/bin/base64"  ---------执行which base64 查看实际值并修改



_single_data_dir="/home/kingbase/cluster/kinbase/data"
                              --------------集群数据目录绝对路径
_single_bin_dir="/home/kingbase/cluster/kingbase/bin"
                              --------------集群bin目录绝对路径
_single_db_user="system"
                              --------------默认使用管理员用户,绝大部分默认system即可
_single_db_port="54321"
                              --------------数据库默认端口号,配置需要物理备份的实例的端口号

整个集群只需执行一次init动作;
初始化:在REPO节点修改sys_backup.conf、执行init动作;
定时备份任务:在REPO节点修改sys_backup.conf、执行start/stop动作。
  4.3 启动sec服务

         确认sec服务是否在启动中,如果没开需要手动开启

       (开启sys_securecmdd进程)使用root用户进入到数据库安装目录的Server/bin下执行

        ./sys_HAscmdd.sh init

        ./sys_HAscmdd.sh start

4.4 物理备份初始化

        执行sys_backup.sh init备份初始化(kingbase用户)

      cd /home/kingbase/cluster/kingbase/bin/

     ./sys_backup.sh init

/home/kingbase/cluster/kingbase/bin/sys_backup.sh init
# pre-condition: check the non-archived WAL files
# Check 10.10.11.11 archive-mode == always
# Check 10.10.11.12 archive-mode == always
# generate local sys_rman.conf...DONE
# update all node: sys_rman.conf and archive_command with sys_rman.archive-push...
# update all node: sys_rman.conf and archive_command with sys_rman.archive-push...DONE
# create stanza and check...(maybe 60+ seconds)
# create stanza and check...DONE
# initial first full backup...(maybe several minutes)
# initial first full backup...DONE
# Initial sys_rman OK.
'sys_backup.sh start' should be executed when need back-rest feature.
'sys_backup.sh start' will add CRONTAB items.
Or you can manual backup once with user-guide.

注:执行后会在备份文件路径 /home/kingbase/kbbr_repo 创建文件夹、文件、配置文件等,并备份一次全量数据。

4.5 执行sys_backup.sh start添加定时任务(kingbase用户)

         cd /home/kingbase/KingbaseES/V8/Server/bin/

         ./sys_backup.sh start

4.6 查看定时任务

          cat /etc/cron.d/KINGBASECRON

4.7 结果验证

       DB1 &REPO节点10.10.11.11:

  • REPO目录下

          ./sys_rman.conf,DB1 &REPO 节点的运行时配置文件
          ./backup/,存放备份集的子目录
          ./archive/,存放WAL归档文件的子目录

  • es_rep.conf配置文件中archive_command包含 sys_rman命令
  • 查看backup子目录大小,已有一份全量备份集

     

        DB2节点10.10.11.12:

  • REPO目录下

          ./sys_rman.conf,DB2节点的运行时配置文件
           es_rep.conf配置文件中archive_command包含 sys_rman命令

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐