当前位置: 首页 > news >正文

单机读写分离集群搭建

1. 环境准备

1.1 节点规划

节点实例名数据目录服务端口MAL端口守护端口
节点1GRP1_RWW_01/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/DAMENG321416114152141
节点2GRP1_RWW_02/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_02/DAMENG321426114252142
节点3GRP1_RWW_03/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_03/DAMENG321436114352143

1.2 集群角色规划

节点初始角色说明
GRP1_RWW_01主库(PRIMARY)处理所有写操作和部分读操作
GRP1_RWW_02备库(STANDBY)只读,同步主库数据
GRP1_RWW_03备库(STANDBY)只读,同步主库数据

1.3 集群唯一标识

参数说明
INST_OGUID453332整个集群的唯一标识符,三节点必须一致

2. 创建三个实例的数据目录

# 切换到 dmdba 用户su- dmdba# 创建主目录mkdir-p/home/dmdba/dmdbms/data/GPR1_RW# 创建归档目录mkdir-p/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/DAMENG/archmkdir-p/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_02/DAMENG/archmkdir-p/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_03/DAMENG/arch# 创建备份目录mkdir-p/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/bakmkdir-p/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_02/bakmkdir-p/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_03/bak

3. 初始化三个数据库实例

cd/home/dmdba/dmdbms/bin ./dminitPATH=/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/DAMENG\DB_NAME=DAMENG\INSTANCE_NAME=GRP1_RWW_01\PORT_NUM=32141\PAGE_SIZE=16\EXTENT_SIZE=16\CHARSET=1\CASE_SENSITIVE=Y\LOG_SIZE=2048
./dminitPATH=/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_02/DAMENG\DB_NAME=DAMENG\INSTANCE_NAME=GRP1_RWW_02\PORT_NUM=32142\PAGE_SIZE=16\EXTENT_SIZE=16\CHARSET=1\CASE_SENSITIVE=Y\LOG_SIZE=2048
./dminitPATH=/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_03/DAMENG\DB_NAME=DAMENG\INSTANCE_NAME=GRP1_RWW_03\PORT_NUM=32143\PAGE_SIZE=16\EXTENT_SIZE=16\CHARSET=1\CASE_SENSITIVE=Y\LOG_SIZE=2048

4. 配置 dm.ini 文件

4.1 主库的 dm.ini

vi/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/DAMENG/dm.ini
INSTANCE_NAME = GRP1_RWW_01 PORT_NUM = 32141 DW_PORT = 33141 DW_ERROR_TIME = 10 RLOG_SEND_APPLY_MON = 64 MAL_INI = 1 ARCH_INI = 1

4.2 备库1的 dm.ini

vi/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_02/DAMENG/dm.ini
INSTANCE_NAME = GRP1_RWW_02 PORT_NUM = 32142 DW_PORT = 33142 DW_ERROR_TIME = 10 RLOG_SEND_APPLY_MON = 64 MAL_INI = 1 ARCH_INI = 1

4.3 备库2的 dm.ini

vi/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_03/DAMENG/dm.ini
INSTANCE_NAME = GRP1_RWW_03 PORT_NUM = 32143 DW_PORT = 33143 DW_ERROR_TIME = 10 RLOG_SEND_APPLY_MON = 64 MAL_INI = 1 ARCH_INI = 1

5. 配置 dmmal.ini

三节点完全相同

vi/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5 MAL_CONN_FAIL_INTERVAL = 5 [MAL_INST1] MAL_INST_NAME = GRP1_RWW_01 MAL_HOST = *.*.*.* MAL_PORT = 61141 MAL_INST_HOST = *.*.*.* MAL_INST_PORT = 32141 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 33141 [MAL_INST2] MAL_INST_NAME = GRP1_RWW_02 MAL_HOST = *.*.*.* MAL_PORT = 61142 MAL_INST_HOST = *.*.*.* MAL_INST_PORT = 32142 MAL_DW_PORT = 52142 MAL_INST_DW_PORT = 33142 [MAL_INST3] MAL_INST_NAME = GRP1_RWW_03 MAL_HOST = *.*.*.* MAL_PORT = 61143 MAL_INST_HOST = *.*.*.* MAL_INST_PORT = 32143 MAL_DW_PORT = 52143 MAL_INST_DW_PORT = 33143

6. 配置 dmarch.ini

6.1 主库的 dmarch.ini

vi/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/DAMENG/dmarch.ini
[ARCHIVE_TIMELY1] ARCH_TYPE = TIMELY ARCH_DEST = GRP1_RWW_02 [ARCHIVE_TIMELY2] ARCH_TYPE = TIMELY ARCH_DEST = GRP1_RWW_03 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/DAMENG/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0

6.2 备库1的 dmarch.ini

vi/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_02/DAMENG/dmarch.ini
[ARCHIVE_TIMELY1] ARCH_TYPE = TIMELY ARCH_DEST = GRP1_RWW_01 [ARCHIVE_TIMELY2] ARCH_TYPE = TIMELY ARCH_DEST = GRP1_RWW_03 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_02/DAMENG/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0

6.3 备库2的 dmarch.ini

vi/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_03/DAMENG/dmarch.ini
[ARCHIVE_TIMELY1] ARCH_TYPE = TIMELY ARCH_DEST = GRP1_RWW_01 [ARCHIVE_TIMELY2] ARCH_TYPE = TIMELY ARCH_DEST = GRP1_RWW_02 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_03/DAMENG/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0

7. 配置 dmwatcher.ini

以下为GPR1_RWW_01,另外两个节点仅需要修改INST_INI为相应的dm.ini路径即可

vi/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/DAMENG/dmwatcher.ini
[GRP1] DW_TYPE = GLOBAL DW_MODE = AUTO DW_ERROR_TIME = 10 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 10 INST_OGUID = 453332 INST_INI = /home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/DAMENG/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0

8. 注册服务

8.1 注册三个节点的数据库服务

cd/home/dmdba/dmdbms/script/root# 注册节点1(主库)./dm_service_installer.sh-tdmserver\-pGRP1_RWW_01\-dm_ini/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/DAMENG/dm.ini\-mmount# 注册节点2(备库)./dm_service_installer.sh-tdmserver\-pGRP1_RWW_02\-dm_ini/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_02/DAMENG/dm.ini\-mmount# 注册节点3(备库)./dm_service_installer.sh-tdmserver\-pGRP1_RWW_03\-dm_ini/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_03/DAMENG/dm.ini\-mmount

8.2 注册三个节点的守护进程

cd/home/dmdba/dmdbms/script/root# 注册节点1的守护进程./dm_service_installer.sh-tdmwatcher\-pRwwWatcher01\-watcher_ini/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_01/DAMENG/dmwatcher.ini# 注册节点2的守护进程./dm_service_installer.sh-tdmwatcher\-pRwwWatcher02\-watcher_ini/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_02/DAMENG/dmwatcher.ini# 注册节点3的守护进程./dm_service_installer.sh-tdmwatcher\-pRwwWatcher03\-watcher_ini/home/dmdba/dmdbms/data/GPR1_RW/GPR1_RWW_03/DAMENG/dmwatcher.ini

9. 配置确认监视器

su- dmdbamkdir-p/home/dmdba/dmdbms/data/logvi/home/dmdba/dmdbms/data/dmmonitor.ini
MON_DW_CONFIRM = 1 MON_LOG_PATH = /home/dmdba/dmdbms/data/log MON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 32 MON_LOG_SPACE_LIMIT = 0 [GRP1] MON_INST_OGUID = 453332 MON_DW_IP = *.*.*.*:52141 MON_DW_IP = *.*.*.*:52142 MON_DW_IP = *.*.*.*:52143

10.集群启停

启动:实例->守护进程->监视器

su- dmdba ./DmServiceGRP1_RWW_01 start ./DmServiceGRP1_RWW_02 start ./DmServiceGRP1_RWW_03 start ./DmWatcherServiceRwwWatcher01 start ./DmWatcherServiceRwwWatcher02 start ./DmWatcherServiceRwwWatcher03 start ./dmmonitor /home/dmdba/dmdbms/data/dmmonitor.ini

停止:监视器->守护进程->实例

exit#监视器界面执行,本文并没有为监视器注册服务,若为监视器注册了服务使用相关命令停掉监视器即可./DmWatcherServiceRwwWatcher01 stop ./DmWatcherServiceRwwWatcher02 stop ./DmWatcherServiceRwwWatcher03 stop ./DmServiceGRP1_RWW_01 stop ./DmServiceGRP1_RWW_02 stop ./DmServiceGRP1_RWW_03 stop

11. 配置客户端读写分离(dm_svc.conf)

vi/etc/dm_svc.conf
25%的读请求,备库承担75%ZN=(*.*.*.*:32141,*.*.*.*:32142,*.*.*.*:32143) TIME_ZONE=(480) LANGUAGE=(cn) [ZN] RW_SEPARATE=(1) #启用读写分离 RW_PERCENT=(25) #主库承担25%的读请求,备库承担75%

声明:本文为个人实操学习笔记,部署步骤参考达梦数据库官方文档整理,仅供参考

http://www.jsqmd.com/news/1305724/

相关文章:

  • 线上线下立体体验的房车品牌 - 中媒介
  • 岗位情报+优势资源支持+全流程复盘:北美留学生求职的完整解法 - Matthewmx
  • MSTP配置实战:从原理到企业网负载分担与故障隔离部署
  • 零基础怎么理解SCMP采购方向众智商学院入门指南? - 众智商学院官方
  • Spring Security 安全框架:从入门到实战
  • STM32外挂GT30L32S4W字库芯片实现中文显示:硬件连接与软件驱动详解
  • USB Type-C与USB 3.0/3.2/4协议全解析:从接口、协议到高速电路设计
  • 美白抗皱保湿面膜推荐 - 中媒介
  • 英雄联盟智能助手Seraphine:5分钟掌握自动BP与实时战绩查询
  • 不要盲目采购标准化 AI!矿山安全预警系统选型指南
  • 2026 年新发布:铜官山专业的光伏升压变压器企业哪家强,装在光伏电站里的这台关键设备,竟能帮你省下不少运维成本?-华屹变压器 - 鉴选官
  • PH13-8Mo制造厂商选哪家好?2026年行业前五生产厂家质量参考评选 - 工业设备
  • 南京学做传统鸭子去哪家? - 中媒介
  • 车衣安装服务哪家专业? - 中媒介
  • 【从 0 到 1 构造大模型微调数据】
  • Python Pygame双人坦克大战:从零实现游戏开发核心机制
  • 二进制字符串最小翻转次数算法解析
  • Tigshop开源商城 分销推广海报后端怎么合成?带二维码的那种(附代码)
  • 河南电动车哪家值得买? - 中媒介
  • 200 斤能穿的大码女装哪里有卖? - 中媒介
  • Python面向对象编程:类与对象核心特性详解
  • 乐山甜皮鸭哪家肉质好? - 中媒介
  • XNBCLI:星露谷物语模组开发者的终极XNB资源处理工具
  • 净水器滤芯哪家专业? - 中媒介
  • 武汉东湖光电学校招生办电话_2026 招生简章及报名联系方式汇总 - 武汉中职最新信息发布
  • 施工规范的别墅装修公司哪家强,2026十大实力品牌深度测评 - 工业设备
  • GinCdn被控节点V1.0.7 安装教程(Ubuntu 18~24 通用,推荐 Ubuntu 24.04|2H2G~16H32G)
  • AI辅助易语言开发:从环境配置到实战应用完整指南
  • I2C总线协议详解:从核心原理到嵌入式开发实战
  • 罗曼海豚SC60底价 - 中媒介