电科金仓数据库V9 MySQL兼容版本搭建一主一从体验

电科金仓数据库V9 MySQL兼容版本搭建一主一从体验

总体思路:

主库和备库搭建好数据库软件,主库创建数据库。备库可以不创建数据库。后续通过初始化的方式从主库同步数据,并启动备库即可。

软件安装和主库的初始化在这里忽略,请参考上一篇文章:

链接: 电科金仓数据库V9版本Linux版本安装体验

以下开始配置主从:

1.创建归档目录

复制代码
mkdir /data/kingbase/arch

2.配置主库参数

复制代码
wal_log_hints=on
full_page_writes=on
max_wal_size=1GB
min_wal_size=100MB
wal_level=replica
archive_command='test ! -f /data/kingbaseES/V9/kes_instance/sys_wal/archive_status/%f && cp %p /data/kingbase/arch/%f'
archive_timeout=0
synchronous_commit=local
synchronous_standby_names='node2'
archive_mode=on
checkpoint_completion_target=0.5
checkpoint_timeout=10min 
shared_buffers=1GB
max_connections=1000
archive_cleanup_command ='sys_archivecleanup -d /data/kingbase/arch %r'
log_filename = 'kingbase-%Y-%m-%d.log' 

3.重启主库

复制代码
sys_ctl -D /data/kingbase/kingbaseES/V9/kes_instance status
sys_ctl -D /data/kingbase/kingbaseES/V9/kes_instance restart

4.登录主库创建复制槽

复制代码
select pg_create_physical_replication_slot('slot_itsmbak');


select * from pg_replication_slots;

kingbase=# select * from pg_replication_slots;
-[ RECORD 1 ]-------+-------------
slot_name           | slot_itsmbak
plugin              | 
slot_type           | physical
datoid              | 
database            | 
temporary           | f
active              | f
active_pid          | 
xmin                | 
catalog_xmin        | 
restart_lsn         | 
confirmed_flush_lsn | 

5.备库clone主库数据

如果备库已经初始化,则先把备库停下来,然后把数据文件目录改名字

复制代码
sys_ctl -D /data/kingbase/kingbaseES/V9/kes_instance stop
mv /data/kingbase/kingbaseES/V9/kes_instance /data/kingbase/kingbaseES/V9/kes_instance_orgbak

备库执行如下命令clone主库数据

复制代码
sys_basebackup -h 10.10.236.162 -Usystem -D /data/kingbase/kingbaseES/V9/kes_instance -P -v -X stream -F p -S slot_itsmbak -R

[kingbase@itsmbak V9]$ sys_basebackup -h 10.10.236.162 -Usystem -D /data/kingbase/kingbaseES/V9/kes_instance -P -v -X stream -F p -S slot_itsmbak -R
sys_basebackup: initiating base backup, waiting for checkpoint to complete
sys_basebackup: checkpoint completed
sys_basebackup: write-ahead log start point: 0/9000028 on timeline 1
sys_basebackup: starting background WAL receiver
86545/86545 kB (100%), 1/1 表空间                                         
sys_basebackup: write-ahead log end point: 0/90000F8
sys_basebackup: waiting for background process to finish streaming ...
sys_basebackup: syncing data to disk ...
sys_basebackup: base backup completed
[kingbase@itsmbak V9]$ 

[kingbase@itsmbak kes_instance]$ ll
总用量 64
-rw------- 1 kingbase kingbase   225  5月 28 00:12 backup_label
drwx------ 7 kingbase kingbase    67  5月 28 00:12 base
-rw------- 1 kingbase kingbase    88  5月 28 00:12 current_logfiles
drwx------ 2 kingbase kingbase  4096  5月 28 00:12 global
-rw------- 1 kingbase kingbase   370  5月 28 00:12 initdb.conf
-rw------- 1 kingbase kingbase   395  5月 28 00:12 kingbase.auto.conf
-rw------- 1 kingbase kingbase 28044  5月 28 00:12 kingbase.conf
-rw------- 1 kingbase kingbase     0  5月 28 00:12 standby.signal  <<<<

查看主库信息

复制代码
[kingbase@itsmbak kes_instance]$ cat kingbase.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
primary_conninfo = 'user=system passfile=''/home/kingbase/.kbpass'' host=10.10.236.162 port=54321 client_encoding=UTF8 application_name=internal_backup sslmode=prefer sslcompression=0 gssencmode=disable target_session_attrs=any loadbalance=off fastswitch=off enable_ce=0'
primary_slot_name = 'slot_itsmbak'

6.启动备库

复制代码
sys_ctl -D /data/kingbase/kingbaseES/V9/kes_instance status 

sys_ctl -D /data/kingbase/kingbaseES/V9/kes_instance start  

[kingbase@itsmbak kes_instance]$ sys_ctl -D /data/kingbase/kingbaseES/V9/kes_instance start  
等待服务器进程启动 ....2026-05-28 00:20:15.504 CST [2194458] LOG:  sepapower扩展初始化完成
2026-05-28 00:20:15.510 CST [2194458] LOG:  正在启动 KingbaseES V009R003C015
2026-05-28 00:20:15.510 CST [2194458] LOG:  正在监听IPv4地址"0.0.0.0",端口 54321
2026-05-28 00:20:15.510 CST [2194458] LOG:  正在监听IPv6地址"::",端口 54321
2026-05-28 00:20:15.514 CST [2194458] LOG:  在Unix套接字 "/tmp/.s.KINGBASE.54321"上侦听
2026-05-28 00:20:15.593 CST [2194458] LOG:  日志输出重定向到日志收集进程
2026-05-28 00:20:15.593 CST [2194458] HINT:  后续的日志输出将出现在目录 "/data/kingbase/kingbaseES/V9/kes_instance/sys_log"中.
 完成
服务器进程已经启动
[kingbase@itsmbak kes_instance]$ 

7.查看主备库进程信息

主库

复制代码
[kingbase@itsm ~]$ ps -ef |grep kingbase
kingbase 2742334       1  0 5月27 ?       00:00:00 /usr/lib/systemd/systemd --user
kingbase 2742338 2742334  0 5月27 ?       00:00:00 (sd-pam)
root     2744911 2744870  0 5月27 ?       00:00:00 sshd: kingbase [priv]
kingbase 2744921 2744911  0 5月27 ?       00:00:01 sshd: kingbase@pts/1
kingbase 2744930 2744921  0 5月27 pts/1   00:00:00 -bash
kingbase 2788473       1  0 00:02 ?        00:00:00 /data/kingbase/kingbaseES/V9/KESRealPro/V009R003C015/Server/bin/kingbase -D /data/kingbase/kingbaseES/V9/kes_instance
kingbase 2788475 2788473  0 00:02 ?        00:00:00 kingbase: kes_instance: logger   
kingbase 2788477 2788473  0 00:02 ?        00:00:00 kingbase: kes_instance: checkpointer   
kingbase 2788478 2788473  0 00:02 ?        00:00:00 kingbase: kes_instance: background writer   
kingbase 2788479 2788473  0 00:02 ?        00:00:00 kingbase: kes_instance: walwriter   
kingbase 2788480 2788473  0 00:02 ?        00:00:00 kingbase: kes_instance: autovacuum launcher   
kingbase 2788481 2788473  0 00:02 ?        00:00:00 kingbase: kes_instance: archiver   last was 000000010000000000000009.00000028.backup
kingbase 2788482 2788473  0 00:02 ?        00:00:00 kingbase: kes_instance: stats collector   
kingbase 2788483 2788473  0 00:02 ?        00:00:00 kingbase: kes_instance: kwr collector   
kingbase 2788484 2788473  0 00:02 ?        00:00:00 kingbase: kes_instance: ksh writer   
kingbase 2788485 2788473  0 00:02 ?        00:00:00 kingbase: kes_instance: ksh collector   
kingbase 2788486 2788473  0 00:02 ?        00:00:00 kingbase: kes_instance: logical replication launcher   
root     2789845 2785873  0 00:11 pts/0    00:00:00 su - kingbase
kingbase 2789850 2789845  0 00:11 pts/0    00:00:00 -bash
kingbase 2791049 2788473  0 00:19 ?        00:00:00 kingbase: kes_instance: walsender system 10.10.1.1(56398) streaming 0/A000130
kingbase 2791118 2789850  0 00:19 pts/0    00:00:00 ps -ef
kingbase 2791119 2789850  0 00:19 pts/0    00:00:00 grep --color=auto kingbase
[kingbase@itsm ~]$ 



kingbase=# select * from pg_replication_slots;
-[ RECORD 1 ]-------+-------------
slot_name           | slot_itsmbak
plugin              | 
slot_type           | physical
datoid              | 
database            | 
temporary           | f
active              | t
active_pid          | 2791049
xmin                | 
catalog_xmin        | 
restart_lsn         | 0/A000130
confirmed_flush_lsn | 

kingbase=# 
kingbase=# 
kingbase=# select * from pg_stat_replication;
-[ RECORD 1 ]----+---------------------------
pid              | 2791049
usesysid         | 10
usename          | system
application_name | internal_backup
client_addr      | 10.10.1.1
client_hostname  | 
client_port      | 56398
backend_start    | 2026-05-28 00:19:28.542349
backend_xmin     | 
state            | streaming
sent_lsn         | 0/A000130
write_lsn        | 0/A000130
flush_lsn        | 0/A000130
replay_lsn       | 0/A000130
write_lag        | 
flush_lag        | 
replay_lag       | 
sync_priority    | 0
sync_state       | async
reply_time       | 2026-05-28 00:23:42.355726

kingbase=# 
kingbase=# select pg_is_in_recovery();
-[ RECORD 1 ]-----+--
pg_is_in_recovery | f

备库

复制代码
[kingbase@itsmbak kes_instance]$ ps -ef |grep kingbase
kingbase 2154895       1  0 5月27 ?       00:00:00 /usr/lib/systemd/systemd --user
kingbase 2154899 2154895  0 5月27 ?       00:00:00 (sd-pam)
root     2155150 2154631  0 5月27 ?       00:00:00 sshd: kingbase [priv]
kingbase 2155160 2155150  0 5月27 ?       00:00:00 sshd: kingbase@pts/1
kingbase 2155169 2155160  0 5月27 pts/1   00:00:00 -bash
root     2191481 2190142  0 5月27 pts/0   00:00:00 su - kingbase
kingbase 2191486 2191481  0 5月27 pts/0   00:00:00 -bash
kingbase 2194458       1  0 00:20 ?        00:00:00 /data/kingbase/kingbaseES/V9/KESRealPro/V009R003C015/Server/bin/kingbase -D /data/kingbase/kingbaseES/V9/kes_instance
kingbase 2194460 2194458  0 00:20 ?        00:00:00 kingbase: kes_instance: logger   
kingbase 2194461 2194458  0 00:20 ?        00:00:00 kingbase: kes_instance: startup   recovering 00000001000000000000000A
kingbase 2194462 2194458  0 00:20 ?        00:00:00 kingbase: kes_instance: checkpointer   
kingbase 2194463 2194458  0 00:20 ?        00:00:00 kingbase: kes_instance: background writer   
kingbase 2194464 2194458  0 00:20 ?        00:00:00 kingbase: kes_instance: stats collector   
kingbase 2194465 2194458  0 00:20 ?        00:00:00 kingbase: kes_instance: walreceiver   streaming 0/A000130
kingbase 2194588 2191486  0 00:21 pts/0    00:00:00 ps -ef
kingbase 2194589 2191486  0 00:21 pts/0    00:00:00 grep --color=auto kingbase
[kingbase@itsmbak kes_instance]$

 
kingbase=# select * from pg_stat_replication;
(0 行记录)

kingbase=# select * from pg_replication_slots;
(0 行记录)

kingbase=# select pg_is_in_recovery();
-[ RECORD 1 ]-----+--
pg_is_in_recovery | t

8.验证数据同步

主库创建测试库表

复制代码
kingbase=# create database zhou;
CREATE DATABASE
kingbase=# \c zhou
您现在以用户名"system"连接到数据库"zhou"。
zhou=# 
zhou=# create table tabzhou(tid int primary key);
CREATE TABLE
zhou=# insert into tabzhou (1);
ERROR:  语法错误 在 "1" 或附近的
第1行insert into tabzhou (1);
                          ^
zhou=# insert into tabzhou values(1);
INSERT 0 1
zhou=# commit;
警告:  没有事务在运行中
COMMIT
zhou=# select * from tabzhou;
 tid 
-----
   1
(1 行记录)

zhou=# insert into tabzhou values(100);
INSERT 0 1
zhou=# select * from tabzhou;          
 tid 
-----
   1
 100
(2 行记录)

从库查验库表

复制代码
kingbase=# \l
                                 数据库列表
   名称    | 拥有者 | 字元编码 |  校对规则  |   Ctype    |     存取权限      
-----------+--------+----------+------------+------------+-------------------
 kingbase  | system | UTF8     | zh_CN.utf8 | zh_CN.utf8 | 
 security  | system | UTF8     | zh_CN.utf8 | zh_CN.utf8 | 
 template0 | system | UTF8     | zh_CN.utf8 | zh_CN.utf8 | =c/system        +
           |        |          |            |            | system=CTc/system
 template1 | system | UTF8     | zh_CN.utf8 | zh_CN.utf8 | =c/system        +
           |        |          |            |            | system=CTc/system
 test      | system | UTF8     | zh_CN.utf8 | zh_CN.utf8 | 
 zhou      | system | UTF8     | zh_CN.utf8 | zh_CN.utf8 | 
(6 行记录)

kingbase=# \c zhou
您现在以用户名"system"连接到数据库"zhou"。
zhou=# 
zhou=# \d
                       关联列表
 架构模式 |          名称           |  类型  | 拥有者 
----------+-------------------------+--------+--------
 public   | sys_stat_statements     | 视图   | system
 public   | sys_stat_statements_all | 视图   | system
 public   | tabzhou                 | 数据表 | system
(3 行记录)

zhou=# select * from tabzhou;
 tid 
-----
   1
 100
(2 行记录)

zhou=# 
zhou=# 
相关推荐
python在学ing5 小时前
Django框架学习笔记:从零基础到项目实战
数据库·python·django·sqlite
duoduo_sing5 小时前
数据库备份终极方案:从脚本手动到自动化热备+异地同步实战
运维·数据库·自动化·用友
Lao A(zhou liang)的菜园5 小时前
Oracle 增量检查点 & FAST_START_MTTR_TARGET 核心总结
数据库·oracle
wbs_scy6 小时前
MySQL 多表连接查询实战:内连接 + 外连接
数据库·mysql
杨云龙UP6 小时前
ODA/Oracle RAC 节点 Load 100+ 排查:一个 lsof 残留进程引发的负载虚高问题 2026-05-27
linux·数据库·oracle·centos·误操作
凯瑟琳.奥古斯特6 小时前
选择题专练数据库原理精选30题
开发语言·数据库·职场和发展·数据库开发
BD_Marathon7 小时前
SQL学习指南——事务
数据库·sql·oracle
biter down7 小时前
15:YAML配置文件
服务器·数据库·python
IT龟苓膏7 小时前
MySQL 表设计与 SQL 优化:从字段类型、主键设计到深分页优化一篇讲清
数据库·sql·mysql