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集群配置:

三、总结
无论单实例,还是集群环境,建议在生产环境,一定要配置好控制文件的多副本,控制文件记录了数据库的核心配置,如果一旦被损坏,将导致数据库无法启动和访问。
注意:控制文件的副本,尽量存储到不同的磁盘下。

posted @ 2023-09-08 16:52  天涯客1224  阅读(10)  评论(0编辑  收藏  举报