金仓数据库的一些命令备用

记录一些,后期可查用

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

# 完整切换流程(自动执行无需人工干预)

  1. 暂停所有节点 repmgrd 自动故障检测
  2. 原主库执行 checkpoint,正常 fast 关闭数据库、卸载 VIP
  3. 当前备库执行 promote 升主、挂载集群 VIP
  4. 原主库自动重启,降级为 standby,跟随新主
  5. 其他备库执行repmgr standby follow绑定新主
  6. 恢复所有节点 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值