KingbaseES 数据库运维案例之---多副本控制文件应用
案例说明:
KingbaseES数据库控制文件至关重要,它关系到数据库能否正常启动,数据是否会丢失等问题。因此开发控制文件多副本功能,用以备份数据库控制文件,保证数据库的高可用性。默认数据库在data/global目录下生成控制文件sys_control。
适用版本:
KingbaseES V8R3/R6
一、单实例环境
1、kingbase.conf配置
如下所示,数据库支持控制文件多副本配置,默认没有启用:
[kingbase@node201 bin]$ cat /home/kingbase/db/r6_24/data/kingbase.conf |grep -i control
# CONTROL FILE MUTIPLE REPLICA
# control_file_copy = '' #example: control_file_copy = 'filepath/filename'
2、创建controlfile副本
如下所示,在数据库关闭状态下,拷贝默认控制文件到不同的目录下创建副本,并配置kingbase.conf文件:
# 尽量将控制文件存储到不同的磁盘
[kingbase@node201 data]$ cd global/
[kingbase@node201 global]$ cp sys_control /home/kingbase/db/r6_24/control.bk
# 配置kingbase.conf
[kingbase@node201 data]$ cat kingbase.conf |grep control
control_file_copy = '/home/kingbase/db/r6_24/control.bk'
3、启动数据库查看控制文件信息
1)启动数据库服务
[kingbase@node201 bin]$ ./sys_ctl start -D /home/kingbase/db/r6_24/data/
waiting for server to start....2023-09-08 15:30:07.166 CST [24148] LOG: sepapower extension initialized
2023-09-08 15:30:07.178 CST [24148] LOG: starting KingbaseES V008R006C007B0024 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
........
server started
2)查看控制文件信息
[kingbase@node201 bin]$ ./sys_controldata -D /home/kingbase/db/r6_24/data
sys_control version number: 1201
Catalog version number: 202211151
Database system identifier: 7271173772543681838
Database cluster state: in production
sys_control last modified: Fri 08 Sep 2023 03:30:07 PM CST
Latest checkpoint location: 0/D000028
Latest checkpoint's REDO location: 0/D000028
Latest checkpoint's REDO WAL file: 00000001000000000000000D
Latest checkpoint's TimeLineID: 1
.......
4、模拟控制文件故障
如下所示,当默认控制文件sys_control被破坏,导致数据库服务启动失败:
# 控制文件被删除
[kingbase@node201 bin]$ mv /home/kingbase/db/r6_24/data/global/sys_control /home/kingbase/db/r6_24/data/global/sys_control.bk
# 数据库服务启动失败
[kingbase@node201 bin]$ ./sys_ctl start -D /home/kingbase/db/r6_24/data/ waiting for server to start....kingbase: could not find the database system
Expected to find it in the directory "/home/kingbase/db/r6_24/data",
but could not open file "/home/kingbase/db/r6_24/data/global/sys_control": No such file or directory
stopped waiting
sys_ctl: could not start server
Examine the log output.
5、通过副本恢复控制文件
Tips: 当原控制文件被破坏,可以通过copy副本的方式恢复控制文件。
# 通过副本恢复控制文件
[kingbase@node201 bin]$ cp /home/kingbase/db/r6_24/control.bk /home/kingbase/db/r6_24/data/global/sys_control
#数据库服务启动成功
[kingbase@node201 bin]$ ./sys_ctl start -D /home/kingbase/db/r6_24/data/
waiting for server to start....2023-09-08 15:32:14.876 CST [24637] LOG: sepapower extension initialized
......
server started
# 查看控制文件
[kingbase@node201 bin]$ ./sys_controldata -D /home/kingbase/db/r6_24/data
sys_control version number: 1201
Catalog version number: 202211151
Database system identifier: 7271173772543681838
Database cluster state: in production
sys_control last modified: Fri 08 Sep 2023 03:32:14 PM CST
Latest checkpoint location: 0/E000028
Latest checkpoint's REDO location: 0/E000028
Latest checkpoint's REDO WAL file: 00000001000000000000000E
Latest checkpoint's TimeLineID: 1
........
二、集群环境
默认在KingbaseES V8R3/R6版本都已经配置了controlfile的多副本:
如下图所示,Kingbase V8R3集群配置:
如下图所示,Kingbase V8R6集群配置:
三、总结
无论单实例,还是集群环境,建议在生产环境,一定要配置好控制文件的多副本,控制文件记录了数据库的核心配置,如果一旦被损坏,将导致数据库无法启动和访问。
注意:控制文件的副本,尽量存储到不同的磁盘下。