KingbaseES R3叢集備庫執行sys_backup.sh備份案例
阿新 • • 發佈:2022-03-10
案例說明:
KingbaseES R3的後期版本支援通過sys_backup.sh執行sys_rman的物理備份,實際上是呼叫了sys_rman_v6的工具做物理備份。本案例是在備庫上執行叢集的備份,repo目錄在備庫上,採用cluster模式備份。
資料庫版本:
TEST=# select version(); VERSION ------------------------------------------------------------------------------------------------------------------------- Kingbase V008R003C002B0270 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit (1 row)
叢集架構:
# 節點資訊 [kingbase@node1 ~]$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.7.248 node1 # 備庫 192.168.7.249 node2 192.168.7.243 node3 # 主庫 [kingbase@node3 bin]$ ./ksql -U SYSTEM -W 123456 TEST -p 9999 ksql (V008R003C002B0270) Type "help" for help. TEST=# show pool_nodes; node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay ---------+---------------+-------+--------+-----------+---------+------------+-------------------+------------------- 0 | 192.168.7.243 | 54321 | up | 0.500000 | primary | 0 | true | 0 1 | 192.168.7.248 | 54321 | up | 0.500000 | standby | 0 | false | 0 (2 rows) TEST=# select * from sys_stat_replication; PID | USESYSID | USENAME | APPLICATION_NAME | CLIENT_ADDR | CLIENT_HOSTNAME | CLIENT_PORT | BACKEND_START | BACKEND_XMIN | STATE | SENT_LOCATION | WRITE_LOCATION | FLUSH_LOCATION | REPLAY_LOCATION | SYNC_PRIORITY | SYNC_STATE ------+----------+---------+------------------+---------------+-----------------+-------------+-------------------------------+--------------+--- 4222 | 10 | SYSTEM | node248 | 192.168.7.248 | | 30369 | 2021-03-01 12:16:20.511199+08 | | st reaming | 0/9000178 | 0/9000178 | 0/9000178 | 0/9000178 | 2 | sync (1 row)
一、檢視叢集主機歸檔配置
=== 由以下可知, KingbaseES R3新版本的備庫wal日誌在切換時,也會產生歸檔日誌。===
1、主庫歸檔配置
[kingbase@node3 bin]$ cat ../data/kingbase.conf |grep archive_command archive_command='/home/kingbase/cluster/kha/db/bin/sys_rman_v6 --config /home/kingbase/kbbr3_repo/sys_rman_v6.conf --stanza=kingbase archive-push %p' # ! waring: if set archive_dest, ignore archive_command.
2、備庫歸檔配置
[kingbase@node1 bin]$ cat ../data/kingbase.conf|grep -i archive_command
archive_command='/home/kingbase/cluster/kha/db/bin/sys_rman_v6 --config /home/kingbase/kbbr3_repo/sys_rman_v6.conf --stanza=kingbase archive-push %p'
# ! waring: if set archive_dest, ignore archive_command.
二、在備庫配置sys_backup.conf檔案
[kingbase@node1 bin]$ cat sys_backup.conf |grep -v ^#|grep -v ^$
_target_db_style="cluster"
_one_db_ip="192.168.7.243"
_repo_ip="192.168.7.248"
_stanza_name="kingbase"
_os_user_name="kingbase"
_repo_path="/home/kingbase/kbbr3_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"
_os_rm_cmd="/bin/rm"
_os_sed_cmd="/bin/sed"
_os_grep_cmd="/bin/grep"
_single_data_dir="/home/kingbase/ES/V8_single/data"
_single_bin_dir="/home/kingbase/ES/V8_single/Server/bin"
_single_db_user="system"
_single_db_port="54321"
_kb_pass="S0lOR0JBU0VBRE1JTg=="
二、執行備份初始化
[kingbase@node1 bin]$ ./sys_backup.sh init
# generate local sys_rman_v6.conf...DONE
# update all node: sys_rman_v6.conf and archive_command with sys_rman_v6.archive-push...
# update all node: sys_rman_v6.conf and archive_command with sys_rman_v6.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_v6 OK.
'sys_backup.sh start' should be executed when need back-rest feature.
三、檢視repo目錄及備份資訊
[kingbase@node1 ~]$ cd kbbr3_repo/
[kingbase@node1 kbbr3_repo]$ ls -lh
total 4.0K
drwxr-x--- 3 kingbase kingbase 21 Mar 1 12:26 archive
drwxr-x--- 3 kingbase kingbase 21 Mar 1 12:26 backup
-rw-rw-r-- 1 kingbase kingbase 589 Mar 1 12:26 sys_rman_v6.conf
[kingbase@node1 kbbr3_repo]$ ls -lh archive/
total 0
drwxr-x--- 3 kingbase kingbase 61 Mar 1 12:26 kingbase
[kingbase@node1 kbbr3_repo]$ ls -lh backup/
total 0
drwxr-x--- 4 kingbase kingbase 104 Mar 1 12:29 kingbase
[kingbase@node1 kbbr3_repo]$ ls -lh backup/kingbase/
total 8.0K
drwxr-x--- 3 kingbase kingbase 69 Mar 1 12:29 20210301-122305F
drwxr-x--- 3 kingbase kingbase 17 Mar 1 12:29 backup.history
-rw-r----- 1 kingbase kingbase 1.1K Mar 1 12:29 backup.info
-rw-r----- 1 kingbase kingbase 1.1K Mar 1 12:29 backup.info.copy
lrwxrwxrwx 1 kingbase kingbase 16 Mar 1 12:29 latest -> 20210301-122305F
四、測試日誌切換歸檔
=== 由以下測試可以獲知,在KingbaseES R3的新版本中,當主庫日誌發生切換時,會對wal日誌執行歸檔;同時備庫wal日誌也發生切換,並歸檔。===
1、主庫執行日誌切換
TEST=# select sys_switch_xlog();
SYS_SWITCH_XLOG
-----------------
0/B000238
(1 row)
2、備庫切換前後日誌資訊
** 1)切換前**
2)切換後
3)備庫日誌被歸檔
五、總結
在KingbaseES R3的新版本中,可以通過sys_backup.sh指令碼執行sys_rman的物理備份,實際上是呼叫了sys_rman_v6的工具執行了物理備份,和KingbaseES R6的sys_rman的備份原理應該是一致的。