4.1.?準備初始配置文件??
sys_backup.conf熊锭,初始化配置文件既峡,供操作人員修改的配置文件;
sys_rman.conf始绍,運行時配置文件卖子,由初始化動作自動生成,不推薦人為后續(xù)的修改。
工具按照如下順序尋找初始化配置文件
# ./kingbase/bin/sys_backup.conf# ./kingbase/share/sys_backup.conf
KingbaseES的安裝目錄?./kingbase/share?目錄下有初始配置文件的模板许师,包含以下參數(shù):
表 4.1.6?操作系統(tǒng)配置??
參數(shù)名參數(shù)說明
_target_db_style選擇性選項,可選single或cluster或single-pro僚匆。 single對應單機模式的目標數(shù)據(jù)庫實例枯跑,cluster對應集群模式的目標數(shù)據(jù)庫實例,single-pro對應集群模式的每個DB節(jié)點獨立備份
_one_db_ip一個數(shù)據(jù)庫節(jié)點的IP或主機名白热,支持主機名敛助、IPv4、IPv6地址
_repo_ipREPO備份節(jié)點的IP或主機名屋确,支持主機名纳击、IPv4续扔、IPv6地址
_stanza_name備份服務器的標簽,僅在物理備份范疇內(nèi)使用
_os_user_name操作系統(tǒng)的用戶名
_repo_path實際保存?zhèn)浞菁哪夸?/p>
_repo_retention_full_count保存全量備份的數(shù)目焕数,超過此數(shù)目的全量備份將被自動移除
_crond_full_days自動執(zhí)行全量備份的間隔天數(shù)纱昧,0表示不執(zhí)行
_crond_diff_days自動執(zhí)行差異備份的間隔天數(shù),0表示不執(zhí)行
_crond_incr_days自動執(zhí)行增量備份的間隔天數(shù)堡赔,0表示不執(zhí)行
_crond_full_hour自動執(zhí)行全量備份的時間點识脆,2表示凌晨2點
_crond_diff_hour自動執(zhí)行差異備份的時間點,3表示凌晨3點
_crond_incr_hour自動執(zhí)行增量備份的時間點善已,4表示凌晨4點
_band_width網(wǎng)絡限速灼捂,單位固定為 MB/s, 默認為0,代表不限速换团,配置文件僅接受純數(shù)字
_os_ip_cmd操作系統(tǒng)常見命令ip的全路徑文件名
_os_rm_cmd操作系統(tǒng)常見命令rm的全路徑文件名
_os_sed_cmd操作系統(tǒng)常見命令sed的全路徑文件名
_os_grep_cmd操作系統(tǒng)常見命令grep的全路徑文件名
_single_data_dir單機數(shù)據(jù)庫節(jié)點的數(shù)據(jù)目錄
_single_bin_dir單機數(shù)據(jù)庫節(jié)點的二進制目錄
_single_db_user單機數(shù)據(jù)庫節(jié)點的數(shù)據(jù)庫登錄用戶名
_single_db_port單機數(shù)據(jù)庫節(jié)點的端口
_use_scmd使用通訊協(xié)議悉稠,默認使用securecmdd,可選使用ssh
_start_fast是否快速啟動備份艘包,立即生成checkpoint的猛,默認y
_compress_type是否在備份時使用壓縮存儲,默認為none不壓縮
_non_archived_space在init過程中想虎,檢查未歸檔的WAL的容量卦尊,如果超過設置值,報錯并退出init過程舌厨。單位固定為MB猫牡,可選 128 ~ 1024
_archive_statistics是否啟用歸檔統(tǒng)計功能,默認n
示例如下:
#file: sys_backup.conf# 單機 single 集群 cluster 集群各節(jié)點獨立備份 single-pro# target db style enum: single/cluster/single-pro_target_db_style="cluster"# 一個數(shù)據(jù)庫節(jié)點的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備份節(jié)點的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"# 備份服務器的標簽震庭,僅在備份范疇內(nèi)使用# label of this cluster_stanza_name="kingbase"# 操作系統(tǒng)的用戶名# OS user name of database
os_user_name="jiqun"# 實際保存?zhèn)浞菁哪夸? !!!! dir to store the backup files# should be accessable for the OS user_repo_path="/home/jiqun/kbbr_repo"# 保存全量備份的數(shù)目,超過此數(shù)目的全量備份將被自動移除# count of keep, over the count FULL-backup will be remove_
repo_retention_full_count=9# 自動執(zhí)行全量備份的間隔天數(shù)# count of days, interval to do FULL-backup_crond_full_days=7# 自動執(zhí)行差異備份的間隔天數(shù)你雌,0表示不執(zhí)行# count of days, interval to do DIFF-backup_crond_diff_days=0# 自動執(zhí)行增量備份的間隔天數(shù)# count of days, interval to do INCR-backup_crond_incr_days=1# 自動執(zhí)行全量備份的時間點器联,2表示凌晨2點# HOUR to do the FULL-backup_crond_full_hour=2# 自動執(zhí)行差異備份的時間點,3表示凌晨3點# HOUR to do the DIFF-backup_crond_diff_hour=3# 自動執(zhí)行增量備份的時間點婿崭,4表示凌晨4點# HOUR to do the INCR-backup_crond_incr_hour=4# 操作系統(tǒng)常見命令的全路徑文件名# OS cmd define_os_ip_cmd="/sbin/ip"
os_rm_cmd="/bin/rm"
os_sed_cmd="/usr/bin/sed"
os_grep_cmd="/bin/grep"# 以下四個參數(shù)拨拓,僅用于單機模式# !!! these follow 4 parameter ONLY for single style# 單機數(shù)據(jù)庫節(jié)點的數(shù)據(jù)目錄# data dir of single_
single_data_dir="/home/kingbase/ES/single/data"# bin dir of single# 單機數(shù)據(jù)庫節(jié)點的二進制目錄_single_bin_dir="/home/kingbase/ES/single/Server/bin"# 單機數(shù)據(jù)庫節(jié)點的數(shù)據(jù)庫登錄用戶名# database user of single_single_db_user="system"# 單機數(shù)據(jù)庫節(jié)點的端口# database port of single_single_db_port="54321"# 網(wǎng)絡限速,單位固定為 MB/s, 默認為0氓栈,代表不限速渣磷,配置文件僅接受純數(shù)字# band witdh limit, fixed in MB/s, default 0 means no limit_band_width=0# 使用通訊協(xié)議,默認使用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# 不啟用歸檔統(tǒng)計功能_archive_statistics=n
4.2.?執(zhí)行初始化操作??
注意
管理員應當在sys_backup.sh init前蜗字,明確REPO角色所在的節(jié)點,確保在REPO節(jié)點上執(zhí)行init初始化操作脂新。
初始化配置流程:
配置文件參數(shù)有效性檢查
檢查數(shù)據(jù)庫實例的未歸檔WAL的數(shù)量
配置REPO節(jié)點的運行時配置文件sys_rman.conf
配置各DB節(jié)點的運行時配置文件sys_rman.conf
修改各DB節(jié)點的archive_command配置挪捕,reload數(shù)據(jù)庫實例
創(chuàng)建備份stanza,執(zhí)行第一次全量備份
如遇異常情況戏羽,請參考章節(jié)?附錄C:常見異常處理
4.2.1.?在單機+外部備份場景下??
確保kingbase.conf中以下兩項配置:
archive_mode=onarchive_command 沒有被注釋,內(nèi)容將被腳本自動修改
#file: sys_backup.conf# target db style enum: single/cluster/single-pro_target_db_style="single"_one_db_ip="192.168.28.37" # 數(shù)據(jù)節(jié)點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"
注意
此配置項指明的數(shù)據(jù)庫用戶需要配置為ksql免密登錄楼吃,請參考《安全指南手冊》 用戶密碼配置工具使用方法
注意
要求管理員在sys_backup.sh init前始花,數(shù)據(jù)庫節(jié)點與外部備份節(jié)點之間以相應的OS用戶,互相進行SSH登錄孩锡,以驗證SSH登錄場景酷宵,通過StrictHostKeyChecking的檢測。
4.2.2.?在單機+內(nèi)部備份場景下??
確保kingbase.conf中以下兩項配置:
archive_mode=onarchive_command 沒有被注釋躬窜,內(nèi)容將被腳本自動修改
#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.
在單機環(huán)境下浇垦,
# database user of single_single_db_user="system"
注意
此配置項指明的數(shù)據(jù)庫用戶需要配置為ksql免密登錄,請參考《安全指南手冊》 用戶密碼配置工具使用方法
4.2.3.?在集群中每個節(jié)點單獨備份??
注意
整個集群只執(zhí)行一次init動作荣挨。
每個DB節(jié)點都是獨立的REPO節(jié)點男韧。
單獨備份需要數(shù)據(jù)庫實例的archvie_mode為always;
初始化腳本將檢測此配置默垄,如果需要此虑,腳本將提示用戶后進行設置并重啟數(shù)據(jù)庫實例。
確保es_rep.conf中以下兩項配置:
archive_mode=alwaysarchive_command 沒有被注釋口锭,內(nèi)容將被腳本自動修改
#file: sys_backup.conf# target db style enum: single/cluster/single-pro_target_db_style="single-pro"_one_db_ip="10.10.11.11" # 本節(jié)點IP_repo_ip="10.10.11.11" # 本節(jié)點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 alwayssys_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=onarchive_command 沒有被注釋朦前,內(nèi)容將被腳本自動修改
#file: sys_backup.conf# target db style enum: single/cluster/single-pro_target_db_style="cluster"
sys_backup.sh initPlease 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 withsys_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 withsys_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前,數(shù)據(jù)庫節(jié)點與外部備份節(jié)點之間以相應的OS用戶鹃操,互相進行SSH登錄韭寸,以驗證SSH登錄場景,通過StrictHostKeyChecking的檢測荆隘。
4.2.5.?在一主一備+內(nèi)部備份場景下??
確保es_repo.conf中以下兩項配置:
archive_mode=onarchive_command 沒有被注釋恩伺,內(nèi)容將被腳本自動修改
#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 withsys_rman.archive-push...# update all node: sys_rman.conf and archive_command withsys_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進行定時備份椰拒;可以通過crontab -l 查看定時任務莫其。
全量備份癞尚、差異備份、增量備份乱陡,均為可選浇揩。
備份類型、備份周期和備份時間由配置文件sys_backup.conf指定憨颠。
在sys_backup.conf配置為cluster的情況下胳徽,整個集群只需要在REPO節(jié)點上執(zhí)行;
在sys_backup.conf配置為single-pro的情況下,每個DB節(jié)點都是REPO節(jié)點爽彤,需要逐個執(zhí)行start养盗。
# 自動執(zhí)行全量備份的間隔天數(shù)# count of days, interval to do FULL-backup_crond_full_days=7# 自動執(zhí)行差異備份的間隔天數(shù),0表示不執(zhí)行# count of days, interval to do DIFF-backup_crond_diff_days=0# 自動執(zhí)行增量備份的間隔天數(shù)# count of days, interval to do INCR-backup_crond_incr_days=1# 自動執(zhí)行全量備份的時間點适篙,2表示凌晨2點# HOUR to do the FULL-backup_crond_full_hour=2# 自動執(zhí)行差異備份的時間點往核,3表示凌晨3點# HOUR to do the DIFF-backup_crond_diff_hour=3# 自動執(zhí)行增量備份的時間點,4表示凌晨4點# HOUR to do the INCR-backup_crond_incr_hour=4
sys_backup.sh startEnable some sys_rman in crontab-daemonSet full-backup in 7 daysSet incr-backup in 1 days0 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>&10 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??
從系統(tǒng)CRONTAB中移除所有sys_rman相關的備份條目嚷节。
在sys_backup.conf配置為cluster的情況下聂儒,整個集群只需要在REPO節(jié)點上執(zhí)行;
在sys_backup.conf配置為single-pro的情況下,每個DB節(jié)點都是REPO節(jié)點硫痰,需要逐個執(zhí)行stop衩婚。
sys_backup.sh stopDisable all sys_rman in crontab-daemon
開啟和停止定時任務的操作示范:
[kingbase@REPO-NODE /home/kingbase/cluster/kingbase/bin] ./sys_backup.sh start# pre-condition: check the non-archived WAL filesEnable some sys_rman in crontab-daemonSet full-backup in 7 daysSet incr-backup in 1 days0 2 */7 * * /home/kingbase/cluster/kingbase/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup >>/home/kingbase/cluster/kingbase/log/sys_rman_backup_full.log 2>&10 4 */1 * * /home/kingbase/cluster/kingbase/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=incr backup >>/home/kingbase/cluster/kingbase/log/sys_rman_backup_incr.log 2>&1[kingbase@REPO-NODE /home/kingbase/cluster/kingbase/bin] crontab -l0 2 */7 * * /home/kingbase/cluster/kingbase/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup >>/home/kingbase/cluster/kingbase/log/sys_rman_backup_full.log 2>&10 4 */1 * * /home/kingbase/cluster/kingbase/bin/sys_rman --config=/home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=incr backup >>/home/kingbase/cluster/kingbase/log/sys_rman_backup_incr.log 2>&1[kingbase@REPO-NODE /home/kingbase/cluster/kingbase/bin][kingbase@REPO-NODE /home/kingbase/cluster/kingbase/bin] ./sys_backup.sh stop# pre-condition: check the non-archived WAL filesDisable all sys_rman in crontab-daemon[kingbase@REPO-NODE /home/kingbase/cluster/kingbase/bin] crontab -l[kingbase@REPO-NODE /home/kingbase/cluster/kingbase/bin]
4.3.3.?sys_backup.sh pause??
暫時停止定時備份動作。
sys_backup.sh pausePuase the sys_rman...DONE
4.3.4.?sys_backup.sh unpause?
恢復被暫停的定時備份動作效斑。
sys_backup.sh unpauseUn-Puase the sys_rman...DONE
4.4.?sys_backup.conf信息變化處理?
如果sys_backup.conf中關于數(shù)據(jù)庫的信息(包含IP非春、數(shù)據(jù)庫名、端口等)有所修改缓屠,需要重新初始化備份奇昙。
執(zhí)行 sys_backup.sh init重新初始化備份功能。
如果sys_backup.conf中關于備份周期和時間點的信息有所修改敌完,重新配置即可敬矩。
執(zhí)行sys_backup.sh start重新配置自動備份周期。