DM8——2节点DSC1节点DW的搭建

1 主机规划

节点

IP地址

端口

DSC0

172.16.20.141

5236

DSC1

172.16.20.74

5236

DW_DSC

172.16.20.221

5236

2 2节点DSC搭建

请看2节点DSC的搭建,这里就不在介绍

https://blog.csdn.net/tbh7758258/article/details/117330090

搭建完dsc后正常退出 DMDSC 集群的两个 dmserver 节点实例,不需要退出 dmcss

 dmasmsvr。

2.1 编辑两个 DMDSC 节点的 dmarch.ini 文件,增加本地归档和远程归档,

dmarch.ini 文件放在各自 dm.ini 中指定的 CONFIG_PATH 目录下。

DSC0,DSC1的dmarch.ini

[ARCHIVE_LOCAL1]

ARCH_TYPE= LOCAL

ARCH_DEST= /home/data/dsc0_config/bak

ARCH_FILE_SIZE= 128

ARCH_SPACE_LIMIT= 0

[ARCHIVE_REMOTE]

ARCH_TYPE= REMOTE

ARCH_DEST= DSC1

ARCH_FILE_SIZE= 128

ARCH_SPACE_LIMIT= 0

ARCH_INCOMING_PATH =/home/data/dsc1_config/bak

2.2 配置dm.ini,将两节点的归档参数设置为1

ARCH_INI = 1

2.3 备份 DMDSC 库

重启 DMDSC 集群的两个 dmserver 实例,然后再正常退出。在 DMDSC 集群生成有归档日志的情况下进行脱机备份,以便后续校验日志连续性时使用。

启动 dmrman(bin目录下)

./dmrman use_ap=2 dcr_ini=/home/data/dmdcr.ini

--脱机备份 DMDSC 集群

RMAN>BACKUP DATABASE '/home/data/dsc0_config/dm.ini' FULL BACKUPSET '/home/data/dsc0_config/bak/db_full_bak_for_DSC';

--db_full_bak_for_DSC文件发送到单节点备库的

/home/dmdba/dmdbms/data/DW_DSC/bak/目录下

scp -r db_full_bak_for_DSC/ dmdba@172.16.20.221:/home/dmdba/dmdbms/data/DW_DSC/bak/

3 配置单节点备库

3.1 初始化备库

./dminit path=/home/dmdba/dmdbms/data/DW_DSC .......

3.2 启动 dmrman

./dmrman use_ap=2

3.3 使用 DMDSC 库的备份集还原恢复到单节点备库

还原:

RMAN>restore database '/home/dmdba/dmdbms/data/DW_DSC/dm.ini' from backupset '/home/dmdba/dmdbms/data/DW_DSC/bak/db_full_bak_for_DSC';

恢复:

RMAN>RECOVER DATABASE '/home/dmdba/dmdbms/data/DW_DSC/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/data/DW_DSC/bak/db_full_bak_for_DSC';

更新:

RMAN>RECOVER DATABASE '/home/dmdba/dmdbms/data/DW_DSC/dm.ini' UPDATE DB_MAGIC;

3.4 配置所有节点的dm.ini

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

3.5 配置dmmal.ini

 DMDSC 集群的 dmmal.ini 文件基础上,增加备库 GRP1_RT_01 的配置项。所有节点实例的 dmmal.ini 文件内容是一致的,配置完成后,拷贝到每个节点实例dm.ini 中指定的 CONFIG_PATH 目录下。

dmmal.ini:

MAL_CHECK_INTERVAL = 30 #MAL链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间

[mal_inst0]

    mal_inst_name  = DSC0

    mal_host       = 172.16.20.141

    mal_port       = 9340

    MAL_INST_HOST = 172.16.20.141  #实例的对外服务IP地址

MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致

MAL_DW_PORT= 3569 #实例本地的守护进程监听TCP连接的端口

    MAL_INST_DW_PORT = 4569 #实例监听守护进程TCP连接的端口

[mal_inst1]

 mal_inst_name  = DSC1

 mal_host       = 172.16.20.74

 mal_port       = 9340

 MAL_INST_HOST = 172.16.20.74  #实例的对外服务IP地址

     MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致

 MAL_DW_PORT= 3569 #实例本地的守护进程监听TCP连接的端口

 MAL_INST_DW_PORT = 4569 #实例监听守护进程TCP连接的端口

[mal_inst2]

 mal_inst_name  = DW_DSC   #与dm.ini   instance_name相同

 mal_host       = 172.16.20.221

 mal_port       = 9340

 MAL_INST_HOST = 172.16.20.221  #实例的对外服务IP地址

 MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致

 MAL_DW_PORT= 3569 #实例本地的守护进程监听TCP连接的端口

     MAL_INST_DW_PORT = 4569 #实例监听守护进程TCP连接的端口

3.6 配置 dmarch.ini

再次编辑各个节点的 dmarch.ini 文件,增加实时归档配置。

DSC0的dmarch.ini: 

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/data/dsc0_cfg/bak

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

[ARCHIVE_REMOTE]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC1

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

ARCH_INCOMING_PATH =/home/data/dsc1_cfg/bak

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME

ARCH_DEST = DW_DSC  #因为我单节点实例名是 DW_DSC

3.7 DSC1的dmarch.ini:

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST =/home/data/dsc1_cfg_/bak

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

[ARCHIVE_REMOTE]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC0

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

ARCH_INCOMING_PATH = /home/data/dsc0_cfg/bak

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME

ARCH_DEST = DW_DSC #因为我单节点实例名是 DW_DSC

3.8 单节点DMSERVER的dmarch.ini: 

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/dmdba/dmdbms/data/DW_DSC/bak

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME

ARCH_DEST = DSC0/DSC1

4 配置 dmwatcher.ini

依次配置每个节点实例的 dmwatcher.ini 文件,放到各自 dm.ini 中指定的CONFIG_PATH 目录下

4.1 DSC0的dmwatcher.ini:

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = MANUAL #手动切换模式

DW_ERROR_TIME = 60 #远程守护进程故障认定时间

INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 30 #本地实例故障认定时间

INST_INI = /home/data/dsc0_config/dm.ini #dm.ini 配置文件路径

DCR_INI = /home/data/dmdcr.ini #dmdcr.ini 配置文件路径

INST_OGUID = 1000 #守护系统唯一 OGUID 值

INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动

INST_AUTO_RESTART = 0 #关闭实例的自动启动功能

RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭

RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

4.2 DSC1的dmwatcher.ini:

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = MANUAL #手动切换模式

DW_ERROR_TIME = 60 #远程守护进程故障认定时间

INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 30 #本地实例故障认定时间

INST_INI = /home/data/dsc1_config/dm.ini #dm.ini 配置文件路径

DCR_INI = /home/data/dmdcr.ini #dmdcr.ini 配置文件路径

INST_OGUID = 1000 #守护系统唯一 OGUID 值

INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动

INST_AUTO_RESTART = 0 #关闭实例的自动启动功能

RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭

RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

4.3 单节点的dmwatcher.ini:

[GRP1]

DW_TYPE = GLOBAL

DW_MODE = MANUAL

DW_ERROR_TIME = 60

INST_RECOVER_TIME = 60

INST_ERROR_TIME = 30

INST_INI = /home/dmdba/dmdbms/data/DW_DSC/dm.ini

INST_OGUID = 1000

INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver

INST_AUTO_RESTART = 0 #对单节点,如果需要打开自动拉起功能,将此配置修改为 1 即可

RLOG_SEND_THRESHOLD = 0

RLOG_APPLY_THRESHOLD = 0

5 配置 dmmonitor.ini

在单节点上配置,放在/home/dmdba/dmdbms/data/DW_DSC

dmmonitor.ini:

MON_LOG_PATH = /home/dmdba/dmdbms/2des_dw_monitor_log

MON_LOG_INTERVAL = 60

MON_LOG_FILE_SIZE = 64

MON_LOG_SPACE_LIMIT = 0

MON_DW_CONFIRM = 0

[GRP1]

MON_INST_OGUID = 1000

MON_DW_IP = 172.16.20.141:3569/172.16.20.74:3569

MON_DW_IP = 172.16.20.221:3569

6 配置 dmdcr.ini

DMDSC 集群中 dmserver 的自动拉起是由 dmcss 执行的,如果不需要打开 dmcss 的自动拉起功能,则可以跳过此章节。否则需要修改 dmdcr.ini 中的自动拉起配置参数(将时间设置不为0即可),此参数修改完成后,需要重启dmcss 才可以生效,为了避免重启 dmcss 引发 dmasmsvr 被强制关闭,这里先将 dmcss dmasmsvr 都正常退出。

另外要注意,本示例中是用命令行方式启动,启动参数中指定以 Mount 方式拉起

dmserver,如果是用服务方式启动,服务脚本中也一定要指定以 Mount 方式拉起dmserver。

7 启动DMCSS、DMASM服务程序

个节点分别先后启动dmcss,dmasm程序。

手动启动 dmcss 命令:

./dmcss DCR_INI=/home/data/dmdcr.ini

手动启动 dmasmsvr 命令:

./dmasmsvr DCR_INI=/home/data/dmdcr.ini

8 启动主备库(注意实例都要使用 Mount 方式启动)

启动DSC0:

./dmserver /home/data/dsc0_config/dm.ini DCR_INI=/home/data/dmdcr.ini mount

启动DSC1:

./dmserver /home/data/dsc1_config/dm.ini DCR_INI=/home/data/dmdcr.ini mount

启动单节点备库

./dmserver /home/dmdba/dmdbms/data/DW_DSC/dm.ini mount

9 设置 OGUID和模式

启动disql

DSC任意一节点:

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>SP_SET_OGUID(1000);

SQL>ALTER DATABASE PRIMARY;

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

单节点:

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>SP_SET_OGUID(1000);

SQL>ALTER DATABASE STANDBY;

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

启动守护进程

启动DSC0守护进程:

./dmwatcher /home/data/dsc0_config/dmwatcher.ini

启动DSC1守护进程:

./dmwatcher /home/data/dsc1_config/dmwatcher.ini

启动单节点的守护进程:

./dmwatcher /home/dmdba/dmdbms/data/DW_DSC/dmwatcher.ini

启动监视器

启动配置在单节点备库的监视器:

./dmmonitor path=/home/dmdba/dmdbms/data/DW_DSC/dmmonitor.ini

至此 DMDSC 集群的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况

下,在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。

推荐使用达梦的云适配中心网站了解更多使用内容:https://eco.dameng.com,或者到云适配中心的社区去提问哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用 Docker 搭建 DM8 实时主备,可以按照以下步骤进行: 1. 安装 Docker 和 Docker Compose 首先需要安装 Docker 和 Docker Compose,可以参考 Docker 官方文档进行安装。 2. 下载 DM8 镜像文件 可以从 DM 官网下载 DM8 镜像文件,也可以使用以下命令从 Docker Hub 上下载: ``` docker pull pingcap/dm:latest ``` 3. 创建 DM8 配置文件 在本地创建一个名为 `dm-master.yaml` 的文件,用于配置 DM8 的主节点。以下是一个示例配置文件: ```yaml master-addr: 172.20.0.2:8261 name: master1 data-dir: /home/data/master1 log-file: /home/logs/master1.log log-level: "info" discovery-mode: "static" static-nodes: - 172.20.0.2:8291 - 172.20.0.3:8291 - 172.20.0.4:8291 web-port: 8281 ``` 其中,`master-addr` 表示当前节点的地址和端口号,`name` 是节点的名称,`data-dir` 是数据存储的目录,`log-file` 是日志文件的路径,`log-level` 是日志级别。 `discovery-mode` 表示节点发现的模式,这里使用静态模式,`static-nodes` 是静态模式下所有节点的地址和端口号。 `web-port` 是 DM8 的 Web 界面端口号。 在本地创建一个名为 `dm-worker.yaml` 的文件,用于配置 DM8 的工作节点。以下是一个示例配置文件: ```yaml name: worker1 data-dir: /home/data/worker1 log-file: /home/logs/worker1.log log-level: "info" server-id: 101 relay-dir: /home/relay_log meta: case-sensitive: true worker-addr: 172.20.0.2:8262 master-addr: 172.20.0.2:8261 relay-binlog-name: mysql-binlog relay-binlog-gtid: "" source-id: "mysql-replica-01" from: host: "172.20.0.5" user: "root" password: "password" routes: route-rule-1: schema-pattern: "test" target-schema: "test" target-instance: "mysql-replica-02" enable-sharding: false ``` 其中,`name` 是节点的名称,`data-dir` 是数据存储的目录,`log-file` 是日志文件的路径,`log-level` 是日志级别。 `server-id` 是工作节点的 ID,`relay-dir` 是中继日志的存储路径。 `worker-addr` 是当前节点的地址和端口号,`master-addr` 是主节点的地址和端口号。 `relay-binlog-name` 是指定中继日志的文件名,`relay-binlog-gtid` 是中继日志的 GTID。 `source-id` 是源实例的 ID,`from` 是源实例的连接信息。 `routes` 是数据路由的配置,这里只配置了一个路由规则,将 `test` 库的数据路由到名为 `mysql-replica-02` 的实例中。 4. 创建 Docker Compose 配置文件 在本地创建一个名为 `docker-compose.yaml` 的文件,用于启动 DM8 的主节点和工作节点。以下是一个示例配置文件: ```yaml version: "3.7" services: dm-master: image: pingcap/dm:latest container_name: dm-master volumes: - ./dm-master.yaml:/etc/dm-master/dm-master.yaml ports: - "8261:8261" - "8281:8281" dm-worker: image: pingcap/dm:latest container_name: dm-worker volumes: - ./dm-worker.yaml:/etc/dm-worker/dm-worker.yaml depends_on: - dm-master ports: - "8262:8262" ``` 其中,`dm-master` 是 DM8节点的容器,`dm-worker` 是 DM8 工作节点的容器。`volumes` 挂载了之前创建的两个 YAML 配置文件,`ports` 映射了节点的端口号。 5. 启动 Docker Compose 在命令行中执行以下命令,启动 Docker Compose: ``` docker-compose up -d ``` 6. 验证 DM8 实时主备 使用浏览器访问 `http://localhost:8281`,可以查看 DM8 的 Web 界面。在界面上可以查看主备节点的状态,以及数据同步的情况。可以在主节点上进行写入操作,验证数据同步是否正常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记忆无法磨灭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值