目录
4.3.4. sys_backup.sh unpause ¶
4.1. 准备初始配置文件 ¶
sys_backup.conf,初始化配置文件,供操作人员修改的配置文件;
sys_rman.conf,运行时配置文件,由初始化动作自动生成,不推荐人为后续的修改。
工具按照如下顺序寻找初始化配置文件
# ./kingbase/bin/sys_backup.conf # ./kingbase/share/sys_backup.conf
KingbaseES的安装目录./kingbase/share目录下有初始配置文件的模板,包含以下参数:
参数名 | 参数说明 |
---|---|
_target_db_style | 选择性选项,可选single或cluster或single-pro。 single对应单机模式的目标数据库实例,cluster对应集群模式的目标数据库实例,single-pro对应集群模式的每个DB节点独立备份 |
_one_db_ip | 一个数据库节点的IP或主机名,支持主机名、IPv4、IPv6地址 |
_repo_ip | REPO备份节点的IP或主机名,支持主机名、IPv4、IPv6地址 |
_stanza_name | 备份服务器的标签,仅在物理备份范畴内使用 |
_os_user_name | 操作系统的用户名 |
_repo_path | 实际保存备份集的目录 |
_repo_retention_full_count | 保存全量备份的数目,超过此数目的全量备份将被自动移除 |
_crond_full_days | 自动执行全量备份的间隔天数,0表示不执行 |
_crond_diff_days | 自动执行差异备份的间隔天数,0表示不执行 |
_crond_incr_days | 自动执行增量备份的间隔天数,0表示不执行 |
_crond_full_hour | 自动执行全量备份的时间点,2表示凌晨2点 |
_crond_diff_hour | 自动执行差异备份的时间点,3表示凌晨3点 |
_crond_incr_hour | 自动执行增量备份的时间点,4表示凌晨4点 |
_band_width | 网络限速,单位固定为 MB/s, 默认为0,代表不限速,配置文件仅接受纯数字 |
_os_ip_cmd | 操作系统常见命令ip的全路径文件名 |
_os_rm_cmd | 操作系统常见命令rm的全路径文件名 |
_os_sed_cmd | 操作系统常见命令sed的全路径文件名 |
_os_grep_cmd | 操作系统常见命令grep的全路径文件名 |
_single_data_dir | 单机数据库节点的数据目录 |
_single_bin_dir | 单机数据库节点的二进制目录 |
_single_db_user | 单机数据库节点的数据库登录用户名 |
_single_db_port | 单机数据库节点的端口 |
_use_scmd | 使用通讯协议,默认使用securecmdd,可选使用ssh |
_start_fast | 是否快速启动备份,立即生成checkpoint,默认y |
_compress_type | 是否在备份时使用压缩存储,默认为none不压缩 |
_non_archived_space | 在init过程中,检查未归档的WAL的容量,如果超过设置值,报错并退出init过程。单位固定为MB,可选 128 ~ 1024 |
示例如下:
#file: sys_backup.conf # 单机 single 集群 cluster 集群各节点独立备份 single-pro # target db style enum: single/cluster/single-pro _target_db_style="cluster" # 一个数据库节点的IP # 本配置项支持主机名、IPv4、IPv6地址 # one kingbase node IP # just provide one IP, script will use 'repmgr cluster show' get other node IP _one_db_ip="192.168.28.37" # REPO备份节点的IP # 本配置项支持主机名、IPv4、IPv6地址 # local repo IP, can be same as one_db_ip, means repo located in one db node _repo_ip="192.168.28.37" # 备份服务器的标签,仅在备份范畴内使用 # label of this cluster _stanza_name="kingbase" # 操作系统的用户名 # OS user name of database _os_user_name="jiqun" # 实际保存备份集的目录 # !!!! dir to store the backup files # should be accessable for the OS user _repo_path="/home/jiqun/kbbr_repo" # 保存全量备份的数目,超过此数目的全量备份将被自动移除 # count of keep, over the count FULL-backup will be remove _repo_retention_full_count=9 # 自动执行全量备份的间隔天数 # count of days, interval to do FULL-backup _crond_full_days=7 # 自动执行差异备份的间隔天数,0表示不执行 # count of days, interval to do DIFF-backup _crond_diff_days=0 # 自动执行增量备份的间隔天数 # count of days, interval to do INCR-backup _crond_incr_days=1 # 自动执行全量备份的时间点,2表示凌晨2点 # HOUR to do the FULL-backup _crond_full_hour=2 # 自动执行差异备份的时间点,3表示凌晨3点 # HOUR to do the DIFF-backup _crond_diff_hour=3 # 自动执行增量备份的时间点,4表示凌晨4点 # HOUR to do the INCR-backup _crond_incr_hour=4 # 操作系统常见命令的全路径文件名 # OS cmd define _os_ip_cmd="/sbin/ip" _os_rm_cmd="/bin/rm" _os_sed_cmd="/usr/bin/sed" _os_grep_cmd="/bin/grep" # 以下四个参数,仅用于单机模式 # !!! these follow 4 parameter ONLY for single style # 单机数据库节点的数据目录 # data dir of single _single_data_dir="/home/kingbase/ES/V8_single/data" # bin dir of single # 单机数据库节点的二进制目录 _single_bin_dir="/home/kingbase/ES/V8_single/Server/bin" # 单机数据库节点的数据库登录用户名 # database user of single _single_db_user="system" # 单机数据库节点的端口 # database port of single _single_db_port="54321" # 网络限速,单位固定为 MB/s, 默认为0,代表不限速,配置文件仅接受纯数字 # band witdh limit, fixed in MB/s, default 0 means no limit _band_width=0 # 使用通讯协议,默认使用securecmdd,可选使用ssh # on means securecmdd, off means normal ssh _use_scmd=on # 是否快速启动备份,立即生成checkpoint,默认y # whether to sys_start_backup() fastly, y or n _start_fast=y # 是否在备份时使用压缩存储,默认为none不压缩 # whether to gz the target file, none or gz _compress_type=none # 在init过程中,检查未归档的WAL的容量, # 如果超过设置值,报错并退出init过程 # 单位固定为MB,可选 128 ~ 1024 # if the non archived WAL files , more than this setting # show ERROR and break the backup-init, unit be fixed in MB, 128 ~ 1024 _non_archived_space=1024
4.2. 执行初始化操作 ¶
注意
管理员应当在sys_backup.sh init前,明确REPO角色所在的节点,确保在REPO节点上执行init初始化操作。
初始化配置流程:
-
配置文件参数有效性检查
-
检查数据库实例的未归档WAL的数量
-
配置REPO节点的运行时配置文件sys_rman.conf
-
配置各DB节点的运行时配置文件sys_rman.conf
-
修改各DB节点的archive_command配置,reload数据库实例
-
创建备份stanza,执行第一次全量备份
如遇异常情况,请参考章节 附录C:常见异常处理
4.2.1. 在单机+外部备份场景下 ¶
确保kingbase.conf中以下两项配置:
archive_mode=on archive_command 没有被注释,内容将被脚本自动修改
#file: sys_backup.conf # target db style enum: single/cluster/single-pro _target_db_style="single" _one_db_ip="192.168.28.37" # 数据节点IP _repo_ip="192.168.28.46" # 备份服务器IP
sys_backup.sh init # generate single sys_rman.conf...DONE # update single 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.
# database user of single _single_db_user="system"
注意
此配置项指明的数据库用户需要配置为ksql免密登录,请参考《安全指南手册》 用户密码配置工具使用方法
注意
要求管理员在sys_backup.sh init前,数据库节点与外部备份节点之间以相应的OS用户,互相进行SSH登录,以验证SSH登录场景,通过StrictHostKeyChecking的检测。
4.2.2. 在单机+内部备份场景下 ¶
确保kingbase.conf中以下两项配置:
archive_mode=on archive_command 没有被注释,内容将被脚本自动修改
#file: sys_backup.conf # target db style enum: single/cluster/single-pro _target_db_style="single" _one_db_ip="192.168.28.37" # IP地址相同 _repo_ip="192.168.28.37" # IP地址相同
sys_backup.sh init # generate single sys_rman.conf...DONE # update single 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.
在单机环境下,
# database user of single _single_db_user="system"
注意
此配置项指明的数据库用户需要配置为ksql免密登录,请参考《安全指南手册》 用户密码配置工具使用方法
4.2.3. 在集群中每个节点单独备份 ¶
注意
整个集群只执行一次init动作。
每个DB节点都是独立的REPO节点。
单独备份需要数据库实例的archvie_mode为always;
初始化脚本将检测此配置,如果需要,脚本将提示用户后进行设置并重启数据库实例。
确保es_rep.conf中以下两项配置:
archive_mode=always archive_command 没有被注释,内容将被脚本自动修改
#file: sys_backup.conf # target db style enum: single/cluster/single-pro _target_db_style="single-pro" _one_db_ip="10.10.11.11" # 本节点IP _repo_ip="10.10.11.11" # 本节点IP
sys_backup.sh init # Check 10.10.11.11 archive-mode == always # Check 10.10.11.12 archive-mode == always # WARNING: archive-mode on 10.10.11.12 is not always sys_backup.conf target_db_style=single-pro: require the archive-mode=always. Yes/Y: sys_backup.sh auto set all node archive-mode=always and restart databse cluster. No/N: abort sys_backup.sh, set archive-mode manually, execute sys_backup.sh again. Are you sure to set all node to archive-mode=always and restart databse?[Y/n]: # 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 # create stanza and check on 10.10.11.12 ...(maybe 60+ seconds) # create stanza and check on 10.10.11.12 ...DONE # initial first full backup on 10.10.11.12 ...(maybe several minutes) # initial first full backup on 10.10.11.12 ...DONE # create stanza and check on 10.10.11.13 ...(maybe 60+ seconds) # create stanza and check on 10.10.11.13 ...DONE # initial first full backup on 10.10.11.13 ...(maybe several minutes) # initial first full backup on 10.10.11.13 ...DONE # Initial sys_rman OK.
4.2.4. 在一主一备+外部备份场景下 ¶
确保es_rep.conf中以下两项配置:
archive_mode=on archive_command 没有被注释,内容将被脚本自动修改
#file: sys_backup.conf # target db style enum: single/cluster/single-pro _target_db_style="cluster"
sys_backup.sh init Please input password ... root@192.168.28.37's password: 【手动输入密码】 Please input password ... kingbase@192.168.28.37's password: 【手动输入密码】 local <-> kingbase@192.168.28.37 ssh pwd-less OK. # generate local sys_rman.conf...DONE # update all node: sys_rman.conf and archive_command with sys_rman.archive-push... Please input password ... kingbase@192.168.28.121's password: 【手动输入密码】 local <-> kingbase@192.168.28.121 ssh pwd-less OK. # 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 init前,数据库节点与外部备份节点之间以相应的OS用户,互相进行SSH登录,以验证SSH登录场景,通过StrictHostKeyChecking的检测。
4.2.5. 在一主一备+内部备份场景下 ¶
确保es_repo.conf中以下两项配置:
archive_mode=on archive_command 没有被注释,内容将被脚本自动修改
#file: sys_backup.conf # target db style enum: single/cluster/single-pro _target_db_style="cluster"
sys_backup.sh init # 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.
4.3. 备份任务的启停 ¶
4.3.1. sys_backup.sh start ¶
脚本将在系统CRONTAB中增加任务,使用sys_rman进行定时备份;脚本将任务保存在/etc/cron.d/KINGBASECRON配置文件中。
全量备份、差异备份、增量备份,均为可选。
备份类型、备份周期和备份时间由配置文件sys_backup.conf指定。
在sys_backup.conf配置为cluster的情况下,整个集群只需要在REPO节点上执行;
在sys_backup.conf配置为single-pro的情况下,每个DB节点都是REPO节点,需要逐个执行start。
# 自动执行全量备份的间隔天数 # count of days, interval to do FULL-backup _crond_full_days=7 # 自动执行差异备份的间隔天数,0表示不执行 # count of days, interval to do DIFF-backup _crond_diff_days=0 # 自动执行增量备份的间隔天数 # count of days, interval to do INCR-backup _crond_incr_days=1 # 自动执行全量备份的时间点,2表示凌晨2点 # HOUR to do the FULL-backup _crond_full_hour=2 # 自动执行差异备份的时间点,3表示凌晨3点 # HOUR to do the DIFF-backup _crond_diff_hour=3 # 自动执行增量备份的时间点,4表示凌晨4点 # HOUR to do the INCR-backup _crond_incr_hour=4
sys_backup.sh start Enable some sys_rman in crontab-daemon Set full-backup in 7 days Set incr-backup in 1 days 0 2 */7 * * kingbase /home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup >>/tmp/sys_rman_backup_full.log 2>&1 0 4 */1 * * kingbase /home/kingbase/cluster/project/cluster/kingbase/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=incr backup >>/tmp/sys_rman_backup_incr.log 2>&1
4.3.2. sys_backup.sh stop ¶
从系统CRONTAB中移除所有sys_rman相关的备份条目。
在sys_backup.conf配置为cluster的情况下,整个集群只需要在REPO节点上执行;
在sys_backup.conf配置为single-pro的情况下,每个DB节点都是REPO节点,需要逐个执行stop。
sys_backup.sh stop Disable all sys_rman in crontab-daemon
开启和停止定时任务的操作示范:
4.3.3. sys_backup.sh pause ¶
暂时停止定时备份动作。
sys_backup.sh pause Puase the sys_rman...DONE
4.3.4. sys_backup.sh unpause ¶
恢复被暂停的定时备份动作。
sys_backup.sh unpause Un-Puase the sys_rman...DONE
4.4. sys_backup.conf信息变化处理 ¶
如果sys_backup.conf中关于数据库的信息(包含IP、数据库名、端口等)有所修改,需要重新初始化备份。
执行 sys_backup.sh init重新初始化备份功能。
如果sys_backup.conf中关于备份周期和时间点的信息有所修改,重新配置即可。
执行sys_backup.sh start重新配置自动备份周期。
注意
有关备份集查看与备份优化配置相关操作请参考 附录A:备份管理与优化操作 。
有关sys_rman配置信息请参阅 附录B:sys_rman.conf配置说明 。