记录一些,后期可查用
1. 在ksql中批量插入数据
-- 定义循环变量
\set start 3
\set end 1000
-- 生成批量插入语句并执行,注意只有单引号,不是双引号。
select 'insert into hq (id,addr) values('||i||',''addr_'||i||''');' from generate_series(:start,:end) as i \gexec

2. 免密登录
示例一:配置全匹配(推荐用于单实例或集群环境)
如果你希望 system 用户从任意主机、任意端口、连接任意数据库时都能免密登录,可以使用通配符 *。
注意:在 Shell 中,通配符 * 是特殊字符,必须加 \ 进行转义。
sys_encpwd -H \* -P \* -D \* -U system -W 'your_new_password'
示例二:配置指定连接信息
如果只需要针对特定的 IP、端口和数据库配置免密:
sys_encpwd -H 127.0.0.1 -P 54321 -D test -U system -W 'your_new_password'
* 关键注意事项与避坑指南
- 密码更新机制:如果新输入的“主机、端口、数据库、用户名”与
.encpwd中已有的某条记录完全匹配,工具会自动更新该条记录的密码;如果不匹配,则会追加一条新记录。 - 环境变量冲突(隐形炸弹):如果你在系统环境变量(如
.bash_profile)中配置了PGPASSWORD或KINGBASE_PASSWORD,客户端在连接时会优先读取环境变量。如果环境变量的密码与.encpwd中的密码不一致,依然会导致认证失败。因此,配置了.encpwd后,建议注释掉相关环境变量。 - 密码有效期检查:如果配置了正确的免密文件依然无法登录,请检查该用户的密码是否已过期。可以通过 SQL 命令延长有效期:sql
ALTER USER system PASSWORD 'your_new_password' VALID UNTIL 'infinity'; - 文件权限要求:确保生成的
~/.encpwd文件属主为当前操作系统用户(如kingbase),且权限设置为600(即-rw-------),以防止其他用户窃取密码。
你可以直接在命令行执行上述示例一,将 'your_new_password' 替换为你真实的 system 密码,然后再尝试使用 ksql -U system test 测试免密登录。
3.开启数据回收站,保证数据找回
alter system set kdb_flashback.db_recyclebin =on;
select sys_reload_conf();
--查看回收站
select * from sys_recyclebin;
select * from recyclebin;
--回复误删表
flashback table hq to before drop;

4. 备份、还原一些命令
sys_dump -Usystem -dcms -f /data_bak/manuel_bak/cms01.dmp -Fc --备份库
sys_restore -Ucmsgly -dcms /data_bak/manuel_bak/cms01.dmp -Fc -t hr --回复到表 t table
sys_restore -Ucmsgly -dcms /data_bak/manuel_bak/cms01.dmp -Fc --回复到库
5.集群处理
- switchover 计划手动切换(运维割接、停机维护,无数据丢失) 集群正常、主备同步完好,在备库执行,原主自动降级为备,VIP 自动漂移,多备自动跟随新主。
- failover 故障强制升主(原主宕机、失联) 原主无法正常关闭,备库强制 promote 升主,原主恢复后需
rejoin重新加入集群。
# 查看集群节点角色
./repmgr cluster show
# 查看repmgrd集群监控进程状态
./repmgr service status
# 查看流复制同步延迟(无延迟再切换)
select
client_addr, -- 备库IP
write_lsn, -- 备库写入内存的日志位点
flush_lsn, -- 备库刷磁盘的日志位点
replay_lsn, -- 备库回放完成的日志位点
sync_state -- 同步模式:sync同步/async异步
from sys_stat_replication;
---
SELECT
client_addr AS standby_ip,
sys_current_wal_lsn() AS master_now_lsn,
write_lsn,
flush_lsn,
replay_lsn,
-- 计算主库当前日志与备库回放日志的字节差(核心延迟字节)
sys_wal_lsn_diff(sys_current_wal_lsn(), replay_lsn) AS replay_delay_bytes,
-- 主库到备库刷盘延迟
sys_wal_lsn_diff(sys_current_wal_lsn(), flush_lsn) AS flush_delay_bytes,
sync_state
FROM sys_stat_replication;
---
延迟数值判断标准
replay_delay_bytes 代表主库已生成、备库还没回放完的数据量
0 ~ 10MB:几乎无延迟,正常稳定状态
10MB ~ 50MB:轻微延迟,批量写入、大事务会出现,业务低峰自动追平
50MB ~ 200MB:明显延迟,大量导入 / 更新,需关注磁盘 IO、网络带宽
>200MB:严重延迟,可能网络拥堵、备库磁盘满、IO 瓶颈、CPU 不足
#预校验切换(dry-run,只检查不执行)
./repmgr standby switchover --dry-run --siblings-follow
标准完整命令(1 主多备场景必加 --siblings-follow)
./repmgr standby switchover --siblings-follow
参数说明
--siblings-follow:其余所有备库自动跟随新主库,无需手动执行 follow;一主一备可省略--force-rewind:原主重启降级备库时,自动执行 sys_rewind 修复时间线不一致(跨大版本 / 大延迟建议加上)--force/-F:忽略警告强制切换(谨慎使用)
### 多备集群,自动同步其他备库+自动修复原主时间线
./repmgr standby switchover --siblings-follow --force-rewind
# 完整切换流程(自动执行无需人工干预)
- 暂停所有节点 repmgrd 自动故障检测
- 原主库执行 checkpoint,正常 fast 关闭数据库、卸载 VIP
- 当前备库执行 promote 升主、挂载集群 VIP
- 原主库自动重启,降级为 standby,跟随新主
- 其他备库执行
repmgr standby follow绑定新主 - 恢复所有节点 repmgrd 自动监控
# 切换后验证
# 查看角色互换是否成功
./repmgr cluster show
# 查看流复制链路正常
ksql -U system -p 54321
select sys_is_in_recovery(); # 主库返回false,备库返回true
5.1 故障强制升主(原主宕机不可用)
原主数据库崩溃、服务器断电、无法 ssh 连通,不能用 switchover,使用failover
1. 在健康备库执行强制升主
./repmgr standby failover
2. 原主恢复上线后,重新加入集群
原主机修复开机后执行(原主数据已落后,需 rewind 对齐):
./repmgr standby rejoin --force-rewind
5.2 配套集群管理常用命令
1. 暂停 / 恢复集群自动故障切换(维护前操作)
# 暂停自动failover,防止维护误触发切换
./repmgr service pause
# 维护完成恢复自动切换
./repmgr service unpause
2. 单节点手动跟随新主(切换失败时手动修复备库)
./repmgr standby follow
3. 手动提升备库(无 repmgr 集群管理,纯单机流复制)
./sys_ctl promote -D $KINGBASE_DATA
1万+

被折叠的 条评论
为什么被折叠?



