首页
Search
1
红帽RedHat Enterprise Linux 4/5/6/7/8/9/10 各版本ISO镜像合集
19 阅读
2
银河麒麟 V10/V11 桌面版 & 服务器版全系列镜像下载|x86/ARM/ 龙芯 / 飞腾 / 鲲鹏全架构网盘资源 2026 最新
15 阅读
3
CentOS 5/6/7/8 全版本系统 ISO 镜像文件下载(百度网盘)
6 阅读
4
GaussDB 集群两节点宕机 CM 不可用:幸存节点绕过 CM 手动拉起数据库实战
6 阅读
5
DBeaver 连接 GaussDB 数据库教程(附 DBeaver 安装包百度网盘下载)
4 阅读
默认分类
游戏分享
软件分享
网盘推广
个人资源
工具使用
登录
Search
标签搜索
BenchmarkSQL
TPCC 压测
性能测试
数据库压测
压测调优
office免激活
word
ppt
excel
redhat
镜像
银河麒麟镜像下载
麒麟 V10 SP1
麒麟 V11
国产操作系统镜像
飞腾鲲鹏 ARM 镜像
龙芯 LoongArch 系统
海光兆芯 x86 麒麟
银河麒麟服务器系统
麒麟桌面版 ISO
十二不乖的学习记录
累计撰写
12
篇文章
累计收到
0
条评论
首页
栏目
默认分类
游戏分享
软件分享
网盘推广
个人资源
工具使用
页面
搜索到
3
篇与
的结果
2026-09-07
GaussDB 集群两节点宕机 CM 不可用:幸存节点绕过 CM 手动拉起数据库实战
GaussDB 集群两节点宕机 CM 不可用:幸存节点绕过 CM 手动拉起数据库实战快速答案:CM 服务不可用时,绕过 CM 直接执行 gs_ctl start -D 数据目录 即可手动拉起数据库;注意 RPO > 0(可能丢数据),操作前需确认业务可接受。一、故障背景某 GaussDB 生产集群采用一主两备架构,共三个节点(192.168.204.50、192.168.204.51、192.168.204.52)。突发故障导致 50、51 两个节点同时宕机,集群管理(CM)服务整体不可用,幸存节点 52 上的数据库进程也处于停止状态,业务完全中断。在 CM 服务不可用的情况下,常规的 cm_ctl 集群级启动命令无法执行,需要绕过 CM,直接在幸存节点上用 gs_ctl 手动拉起数据库进程,先恢复业务,再逐步修复集群。二、故障现象50、51 节点宕机,无法正常提供服务CM 服务(CMServer、ETCD)在三个节点上全部处于 Down 状态幸存节点 52 上的数据库进程(gaussdb)未运行cm_ctl start 命令报错,无法通过 CM 启动数据库三、应急恢复操作3.1 加载环境变量在幸存节点 52 上,切换到数据库安装用户(本例为 Ruby),加载 GaussDB 环境变量:source env_gauss3.2 尝试通过 CM 启动(失败)首先尝试常规方式通过 CM 启动数据库:cm_ctl start -D /data/cluster/var/lib/engine/data/dn_6001由于 CM 服务不可用,命令报错:ERRDETAIL: data/ERRCAUSE: The cmdline entered by the user is incorrect.3.3 绕过 CM,直接用 gs_ctl 启动CM 不可用时,直接使用 gs_ctl 命令启动数据库进程,指定数据目录:gs_ctl start -D /data/cluster/var/lib/engine/data/dn_6001启动成功,输出如下:[gs_ctl]: gs_ctl started,datadir is /data/cluster/var/lib/engine/data/dn_6001 [gs_ctl]: waiting for server to start... [gs_ctl]: done [gs_ctl]: server started (/data/cluster/var/lib/engine/data/dn_6001)从截图可以看到,cm_ctl query -Cvid 显示三个节点的 CMServer 和 ETCD 全部处于 Down 状态,cm_ctl 无法连接 cm_server,但数据库进程已经通过 gs_ctl 成功拉起。四、读写验证数据库启动后,通过 gsql 连接,执行建表、插入、查询、删除操作,确认数据库可正常读写:CREATE TABLE test_rw (id int); INSERT INTO test_rw VALUES (1); SELECT * FROM test_rw; -- id -- ---- -- 1 -- (1 row) DROP TABLE test_rw;读写测试通过,数据库可对外提供正常服务。五、当前集群状态分析5.1 数据库进程状态ps -ef | grep gaussdb | grep -v grepgaussdb 主进程正常运行,数据目录为 /data/cluster/var/lib/engine/data/dn_6001。5.2 HA 状态与主备复制gs_ctl query -D /data/cluster/var/lib/engine/data/dn_6001输出:HA state: local_role : Normal static_connections : 2 db_state : Normal detail_information : Normal Senders info: No information Receiver info: No information关键信息:local_role: Normal、db_state: Normal:数据库实例状态正常Senders info: No information、Receiver info: No information:主备复制链路已断开,没有发送者和接收者当前 52 节点为独立运行的单点数据库,不再具备高可用能力六、方案优缺点分析优点业务恢复时间短:数据库在数分钟内重新可用,最大限度减少业务中断时间操作简单:仅需单条 gs_ctl start 命令即可拉起服务,不依赖 CM不依赖故障节点:在 50、51 节点无法恢复的情况下,仍能通过幸存节点提供服务缺点与风险数据丢失(RPO > 0):50、51 节点上已提交但未同步到 52 节点的数据将永久丢失。这是绕过 CM 手动拉起的最大代价,恢复前必须确认业务方可接受数据丢失单点故障:集群失去高可用能力,当前 52 节点为单点,若再次宕机则服务彻底中断后续重建成本高:50、51 节点修复后,必须以 52 节点为基准执行全量重建(gs_ctl build),原有数据将被覆盖,重建期间影响性能CM 需手动恢复:CM 服务(CMServer、ETCD)无法自动恢复,需要手动重新启动并重建集群管理七、后续恢复步骤业务恢复后,按以下顺序逐步修复集群:修复 50、51 节点硬件/系统故障,确保节点可正常启动以 52 节点为基准,对 50、51 执行全量重建:gs_ctl build -D /data/cluster/var/lib/engine/data/dn_6001 -b full重建完成后启动 CM 服务,恢复集群管理能力验证主备复制状态,确认 Senders/Receiver 信息正常执行主备切换测试,确认高可用能力恢复八、经验总结CM 不可用时,gs_ctl 是最后手段:gs_ctl 直接操作数据库实例,不经过 CM,是 CM 故障时的应急救命命令先确认数据可接受丢失再操作:绕过 CM 拉起幸存节点意味着 RPO > 0,必须与业务方确认记录数据目录路径:gs_ctl start -D 必须指定正确的数据目录,本例为 /data/cluster/var/lib/engine/data/dn_6001恢复后第一时间做读写验证:建表、插入、查询、删除,确认数据库真正可用应急恢复不等于最终恢复:手动拉起只是临时方案,必须尽快完成节点重建和 CM 恢复,回到高可用状态常见问题(FAQ)CM 服务不可用时怎么启动数据库?绕过 CM,直接在幸存节点执行 gs_ctl start -D 数据目录,即可手动拉起数据库进程。手动拉起会丢数据吗?会。宕机节点上已提交但未同步到幸存节点的数据将永久丢失(RPO > 0),操作前必须确认业务方可接受。手动拉起后集群还能恢复高可用吗?可以。故障节点修复后,以幸存节点为基准执行 gs_ctl build -b full 全量重建,再启动 CM 服务即可恢复。gs_ctl 和 cm_ctl 有什么区别?gs_ctl 直接操作数据库实例,不依赖 CM;cm_ctl 是集群级命令,需要 CM 服务正常运行。CM 故障时只能用 gs_ctl。怎么验证数据库恢复正常?用 gsql 连接,执行建表、插入、查询、删除操作确认读写正常;再用 gs_ctl query 查看 HA 状态。\n
2026年09月07日
6 阅读
0 评论
2 点赞
2026-07-11
BenchmarkSQL 开启每秒实时性能日志(实时TPS/TPM监控,解决压测日志卡顿不刷新)
一、问题背景默认的 BenchmarkSQL 压测输出有一个很大的短板:控制台不会实时刷新性能数据。原生版本只会间隔很久打印一次汇总数据,无法看到每秒瞬时吞吐量、性能波动、抖动、锁超时阶段性能下跌。在 TPCC 压测、并发调优、锁冲突排查、参数调优场景中非常鸡肋:看不到实时 TPM/TPS 变化压测卡住、锁等待、事务阻塞时无法定位问题阶段只能等测试结束才能看结果,调测效率极低二、优化效果修改源码重新编译后,可实现:每秒自动打印一次压测性能数据输出:当前时间、平均 TPM、瞬时 TPM、JVM 内存占用全程可视化观察性能波动、抖动、阻塞、锁超时下跌无需等待压测结束,实时判断压测稳定性三、修改原理原生 updateStatusLine 为低频刷新,本次修改强制 1000ms 秒级刷新,同时手动计算瞬时吞吐量、平均吞吐量、内存使用率,替换原生覆盖式输出为换行日志,全程保留压测记录。四、完整修改步骤进入源码目录解压 BenchmarkSQL 安装包,进入核心客户端源码路径:cd benchmarksql-5.0/src/client编辑 jTPCC.java 核心文件synchronized private void updateStatusLine() { long currTimeMillis = System.currentTimeMillis(); if(currTimeMillis > sessionNextTimestamp) { StringBuilder informativeText = new StringBuilder(""); Formatter fmt = new Formatter(informativeText); double tpmC = (6000000*fastNewOrderCounter/(currTimeMillis - sessionStartTimestamp))/100.0; double tpmTotal = (6000000*transactionCount/(currTimeMillis - sessionStartTimestamp))/100.0; sessionNextTimestamp += 1000; /* update this every seconds */ fmt.format("%s: Term-00, Running Average tpmTOTAL: %.2f", getCurrentTime(), tpmTotal); /* XXX What is the meaning of these numbers? */ recentTpmC = (fastNewOrderCounter - sessionNextKounter) * 12; recentTpmTotal= (transactionCount-sessionNextKounter)*12; sessionNextKounter = fastNewOrderCounter; fmt.format(" Current tpmTOTAL: %d", recentTpmTotal); long freeMem = Runtime.getRuntime().freeMemory() / (1024*1024); long totalMem = Runtime.getRuntime().totalMemory() / (1024*1024); fmt.format(" Memory Usage: %dMB / %dMB ", (totalMem - freeMem), totalMem); System.out.print(informativeText); System.out.print(" "); //for (int count = 0; count < 1+informativeText.length(); count++) //System.out.print(""); } } }Ant 重新编译项目返回 BenchmarkSQL 根目录,执行编译:ant编译成功后会自动覆盖 run 目录下的 class 字节码文件,无需手动替换。重新运行压测即可生效再次执行压测脚本,控制台将每秒刷新一次性能数据。快速答案:修改 BenchmarkSQL 源码可让控制台每秒实时刷新 TPS/TPM,4 步完成:改代码 → ant 编译 → 替换 class → 重跑压测,详见下文。常见问题(FAQ)BenchmarkSQL 默认多久刷新一次性能数据?原生版本间隔很久才打印一次汇总数据,无法看到每秒瞬时吞吐量。本文修改后可实现每秒刷新 TPS/TPM。修改源码后需要重新编译吗?需要。修改 Java 源码后在项目根目录执行 ant 重新编译,编译成功后会自动覆盖 run 目录下的 class 文件。实时日志会影响压测性能吗?每秒打印一次日志对性能影响极小,可忽略。建议压测时将控制台输出重定向到文件,方便后续分析。TPS 和 TPM 分别是什么?TPS(Transactions Per Second)是每秒事务数,TPM(Transactions Per Minute)是每分钟事务数,两者都是衡量数据库吞吐能力的核心指标。\n
2026年07月11日
3 阅读
0 评论
2 点赞
2026-06-22
DBeaver 连接 GaussDB 数据库教程(附 DBeaver 安装包百度网盘下载)
DBeaver 连接 GaussDB 数据库教程(附 DBeaver 安装包下载)数据库连接工具,Navicat 虽然功能多,但是需要授权,对个人用户和中小团队来说成本较高。DBeaver 是一个很不错的选择:完全免费开源、支持几乎所有主流数据库,当然也支持华为 GaussDB(含 GaussDB 分布式与集中式)。本文详细讲解 DBeaver 连接 GaussDB 的完整步骤,并附上 DBeaver 安装包百度网盘下载(官网下载慢的福音)。{cloud type="bd" title="DBeaver 工具安装包 百度网盘下载" url="https://pan.baidu.com/s/1Upk1eMLhLaEbf5h4Uh917w" password="nh3p"/}快速答案:DBeaver 社区版可免费连接 GaussDB,新版本直接选择 GaussDB 驱动即可,低版本需手动导入驱动 jar 包;DBeaver 安装包见文末下载。一、版本选择根据你的 GaussDB 环境选择对应版本的 DBeaver:新版本(推荐):新版本 DBeaver 已经原生支持 GaussDB,安装后直接选择对应的数据库连接即可,无需手动配置驱动。目前新版本的大小来到了 100 多 M。低版本:如果因为安全要求必须使用低版本 DBeaver,则需要手动导入 GaussDB 驱动(下文详细介绍)。低版本 30 多 M 即可,也可以满足日常写 SQL 的需求。博主自己下了两个版本保存到百度网盘,一个是 dbeaver-ce-25.3.3-x86_64-setup(最新版),一个是 dbeaver-ce-6.0.0-x86_64-setup(低版本),官网下载速度慢的可以直接从网盘取。二、新版本连接 GaussDB 步骤安装 DBeaver 后打开,点击左上角“新建数据库连接”(或 Ctrl+N)。在数据库列表中选择 GaussDB(新版本已内置支持)。填写主机、端口、数据库名、用户名、密码,点击“测试连接”。测试通过后点击“完成”,即可开始使用。三、低版本手动导入驱动如果是低版本的 DBeaver,因为安全性要求没有安装最新版,需要自己手动导入对应的驱动:点击 driver setting 编辑驱动。再点 libraries,点击 add file 查找自己下载的驱动。记得要先把驱动包解压,区分分布式和集中式,还要根据安装的操作系统类型查看(x86 还是 ARM)。添加完成后,把驱动列表里除了自己添加的驱动以外的其他驱动全部删除。关键: 目前自己的驱动在最下面,点了 OK 也不行,默认还是使用第一个。将上面的驱动都删除掉,只保留自己的驱动即可连接了。四、常见问题Q:连接 GaussDB 时报“驱动加载失败”怎么办?A:确认驱动包已解压(不要直接选压缩包),确认驱动版本与 GaussDB 版本匹配,确认只保留了一个驱动。Q:分布式和集中式 GaussDB 驱动有区别吗?A:有。请根据你的 GaussDB 部署形态(分布式 DWS / 集中式)下载对应驱动,混用会导致连接失败。Q:DBeaver 收费吗?A:DBeaver Community(社区版)完全免费开源,本文教程和网盘资源均为社区版。DBeaver 连接 GaussDB 需要付费吗?不需要。DBeaver 社区版免费,GaussDB 驱动也免费,个人和企业均可使用。DBeaver 哪个版本支持 GaussDB?较新版本的 DBeaver 已内置 GaussDB 驱动,新建连接时直接选择 GaussDB 即可;旧版本需手动导入驱动 jar 包。连接 GaussDB 的默认端口是多少?GaussDB 默认端口为 5432(与 PostgreSQL 兼容),具体端口以安装时配置为准。DBeaver 和 Navicat 哪个更适合 GaussDB?DBeaver 免费且原生支持 GaussDB 驱动,Navicat 需要授权且对 GaussDB 兼容性一般,推荐使用 DBeaver。五、更多资源BenchmarkSQL 实时 TPS/TPM 性能监控教程银河麒麟 V10/V11 桌面版 & 服务器版全系列镜像下载\n
2026年06月22日
4 阅读
0 评论
1 点赞