KingbaseES物理备份还原之物理备份
上周项目出差要求实现物理备份还原特性,今天唠唠怎么配置如何执行备份还原.主要是需要注意的几点,在操作过程中避坑就是了.
KingbaseES版本:V009R004C011B003
-->修改数据库配置参数
[V9R4C11B3@192-168-198-198 V8]$ vi /home/V9R4C11B3/ES/V8/data/kingbase.conf
[V9R4C11B3@192-168-198-198 V8]$ grep -r 'wal_level' /home/V9R4C11B3/ES/V8/data/kingbase.conf
[V9R4C11B3@192-168-198-198 V8]$ grep -r 'archive_mode' /home/V9R4C11B3/ES/V8/data/kingbase.conf
-->启动数据库服务,配置物理备份
[V9R4C11B3@192-168-198-198 V8]$ sys_ctl -D /home/V9R4C11B3/ES/V8/data/ start
[V9R4C11B3@192-168-198-198 V8]$ vi /home/V9R4C11B3/ES/V8/Server/share/sys_backup.conf
--sys_backup.conf配置文件相关参数如下:
_target_db_style="single"
_one_db_ip="192.168.198.198"
_repo_ip="192.168.198.198"
_stanza_name="V9R4C11B3"
_os_user_name="V9R4C11B3"
_repo_path="/home/V9R4C11B3/backup/rman/kbbr_repo"
_single_data_dir="/home/V9R4C11B3/ES/V8/data"
_single_bin_dir="/home/V9R4C11B3/ES/V8/Server/bin"
_use_scmd=off
注意:_use_scmd参数在不使用KingbaseES集群通信工具sys_securecmdd时必须设置为off,或者自行配置并启动sys_securecmdd服务(单机没必要,集群纯耽误功夫).宗旨就是只要不禁用ssh,就不启用sys_securecmdd;_repo_path最后一级目录不能存在(是不能存在不是不能为空);_one_db_ip参数是为集群查看状态设置的,单机可忽略此参数;其他参数按照实际环境修改配置即可.
-->创建物理备份存放路径,配置客户端system用户免密登录
[V9R4C11B3@192-168-198-198 V8]$ mkdir -p /home/V9R4C11B3/backup/rman/
[V9R4C11B3@192-168-198-198 V8]$ sys_encpwd -H \* -P \* -D \* -U system -W 123456
注意:此处sys_encpwd是必须要执行的,这是物理备份执行ksql免密连接数据库验证数据库服务是否正常运行时需要用到的;附带一句:配置三员,及三权分立的时候最好也把SSO和SAO用户配置下,能省去手动输入密码;最最最主要的是,当你不知道system密码的时候,可以通过数据库安装用户家目录下的.encpwd文件中的system:后面的编码找到system密码,具体操作:echo '编码'|base64 -d.
-->执行物理备份初始化并启动物理备份定时任务
[V9R4C11B3@192-168-198-198 V8]$ bash /home/V9R4C11B3/ES/V8/Server/bin/sys_backup.sh init
[V9R4C11B3@192-168-198-198 V8]$ bash /home/V9R4C11B3/ES/V8/Server/bin/sys_backup.sh start
[V9R4C11B3@192-168-198-198 V8]$ crontab -l
-->查看物理备份信息,并创建测试数据
[V9R4C11B3@192-168-198-198 V8]$ /home/V9R4C11B3/ES/V8/Server/bin/sys_rman --config=/home/V9R4C11B3/backup/rman/kbbr_repo/sys_rman.conf --stanza=V9R4C11B3 info
[V9R4C11B3@192-168-198-198 V8]$ ksql -Usystem -d mydb
mydb=# create table t1(c1 int,c2 varchar(10));
mydb=# insert into t1 values(1,'a'),(2,'b'),(3,'c');
-->执行一次物理全量备份,并查看备份信息
[V9R4C11B3@192-168-198-198 V8]$ /home/V9R4C11B3/ES/V8/Server/bin/sys_rman --config=/home/V9R4C11B3/backup/rman/kbbr_repo/sys_rman.conf --stanza=V9R4C11B3 --archive-copy --type=full backup
[V9R4C11B3@192-168-198-198 V8]$ /home/V9R4C11B3/ES/V8/Server/bin/sys_rman --config=/home/V9R4C11B3/backup/rman/kbbr_repo/sys_rman.conf --stanza=V9R4C11B3 info
-->追加创建测试数据,执行一次物理增量备份,并查看备份信息
[V9R4C11B3@192-168-198-198 V8]$ ksql -U system -d mydb
mydb=# create table t2(c1 int,c2 varchar(10));
mydb=# insert into t2 values(11,'aa'),(22,'bb'),(33,'cc');
[V9R4C11B3@192-168-198-198 V8]$ /home/V9R4C11B3/ES/V8/Server/bin/sys_rman --config=/home/V9R4C11B3/backup/rman/kbbr_repo/sys_rman.conf --stanza=V9R4C11B3 --archive-copy --type=incr backup >> /home/V9R4C11B3/ES/V8/Server/log/sys_rman_backup_incr.log 2>&1
[V9R4C11B3@192-168-198-198 V8]$ /home/V9R4C11B3/ES/V8/Server/bin/sys_rman --config=/home/V9R4C11B3/backup/rman/kbbr_repo/sys_rman.conf --stanza=V9R4C11B3 info
物理备份工具就是开源的pgbackrest,具体哪个版本没仔细研究过.说实话,也并不是直接搬过来照抄编译使用的,在KingbaseES官方文档中,在物理备份时提出了粒度不同的两种增量物理备份方式:
在pgbackrest官网(pgBackRest - Command Reference)中是没有基于块粒度的物理备份的.
且在KingbaseES数据库物理备份定时任务也是基于文件粒度去执行增量备份的.感兴趣的可以试试基于块粒度的物理备份.个人感觉,最终的结果只是体现在备份结果集所占存储大小(page相当于pgbackrest官方的incr,而KingbaseES是将表文件都备份).