1 安装环境
  • 操作系统:CentOS Linux release 7.9.2009 x64
  • 硬盘空间:20G
  • 软件版本:DM8企业版
1.1 服务器信息
IP地址 节点类型 操作系统 备注
192.168.11.131 Primary CentOS Linux release 7.9.2009 x64 主节点
192.168.11.132 Standby CentOS Linux release 7.9.2009 x64 备节点
192.168.11.139 Monitor CentOS Linux release 7.9.2009 x64 确认监视器
1.2 节点配置信息
组名/实例 MAL_HOST/ MAL_INST_ MAL_PORT MAL_INST_PORT MAL_DW_PORT MAL_INST_DW_PORT
DMDW.DW1 192.168.11.131 11131 5236 51131 61131
DMDW.DW2 192.168.11.132 11132 5236 51132 61132
2 安装前准备
2.1 安装DM8并初始化

2.2 准备初始化数据

2.2.1 物理备份初始数据库

# 联机、脱机均可[dmdba@localhost ~]$ dmrman ctlstmt="backup database '/opt/dmdb/data/DAMENG/dm.ini' backupset '/opt/dmdb/dwbak_2022-01-07'"
[dmdba@localhost ~]$ scp -r /opt/dmdb/dwbak_2022-01-07 root@192.168.11.131:/opt/dmdb/
[dmdba@localhost ~]$ scp -r /opt/dmdb/dwbak_2022-01-07 root@192.168.11.132:/opt/dmdb/ # 主从节点服务器上将备份集目录权限设置为dmdba
[root@localhost ~]# chown -R dmdba:dminstall /opt/dmdb/dwbak_2022-01-07/
# 主从节点服务器上还原同一备份集
[root@localhost ~]# su - dmdba
[dmdba@localhost ~]$ dmrman ctlstmt="restore database '/opt/dmdb/data/DAMENG/dm.ini' from backupset '/opt/dmdb/dwbak_2022-01-07'"
# 热备需要recover
[dmdba@localhost ~]$ dmrman ctlstmt="recover database '/opt/dmdb/data/DAMENG/dm.ini' from backupset '/opt/dmdb/dwbak_2022-01-07'"
# 更新用于区分不同节点的数据库魔数
[dmdba@localhost ~]$ dmrman ctlstmt="recover database '/opt/dmdb/data/DAMENG/dm.ini' update db_magic"
2.3 主备节点服务器

2.3.1 主备设置全局配置 — dm.ini

[dmdba@localhost ~]$ vim /opt/dmdb/data/DAMENG/dm.iniALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1

2.3.2 主节点设置归档配置 — dmarch.ini

[dmdba@localhost ~]$ vim /opt/dmdb/data/DAMENG/dmarch.iniARCH_WAIT_APPLY = 0[ARC_TL]
ARCH_TYPE = TIMELY
ARCH_DEST = DW2[ARC_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dmdb/data/DAMENG/arch
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 204800

2.3.3 备节点设置归档配置 — dmarch.ini

[dmdba@localhost ~]$ vim /opt/dmdb/data/DAMENG/dmarch.iniARCH_WAIT_APPLY = 0 [ARC_TL]
ARCH_TYPE = TIMELY
ARCH_DEST = DW1 [ARC_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dmdb/data/DAMENG/arch
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 204800

2.3.4 主备均设置通信配置 — dmmal.ini

[dmdba@localhost ~]$ vim /opt/dmdb/data/DAMENG/dmmal.ini MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5 [MAL_INST1]
MAL_INST_NAME = DW1
MAL_HOST = 192.168.11.131
MAL_PORT = 11131
MAL_INST_HOST = 192.168.11.131
MAL_INST_PORT = 5236
MAL_DW_PORT = 51131
MAL_INST_DW_PORT = 61131 [MAL_INST2]
MAL_INST_NAME = DW2
MAL_HOST = 192.168.11.132
MAL_PORT = 11132
MAL_INST_HOST = 192.168.11.132
MAL_INST_PORT = 5236
MAL_DW_PORT = 51132
MAL_INST_DW_PORT = 61132

2.3.5 主备均设置守护配置 — dmwatcher.ini

[dmdba@localhost ~]$ vim /opt/dmdb/data/DAMENG/dmwatcher.ini[DMDW]
DW_TYPE = GLOBA
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 654321
INST_INI = /opt/dmdb/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /opt/dmdb/dmdbms/bin/dmserver

2.3.6 主节点注册数据库、守护服务

# 注意:注册服务需要root权限
[root@localhost ~]# /opt/dmdb/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /opt/dmdb/data/DAMENG/dm.ini -p DW1
[root@localhost ~]# /opt/dmdb/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dmdb/data/DAMENG/dmwatcher.ini -p DW1

2.3.7 备节点注册数据库、守护服务

[root@localhost ~]# /opt/dmdb/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /opt/dmdb/data/DAMENG/dm.ini -p DW2
[root@localhost ~]# /opt/dmdb/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dmdb/data/DAMENG/dmwatcher.ini -p DW2

2.3.8 主备节点数据库以mount启动

[dmdba@localhost ~]$ /opt/dmdb/dmdbms/bin/DmServiceDW1 start mount
[dmdba@localhost ~]$ /opt/dmdb/dmdbms/bin/DmServiceDW2 start mount

2.3.9 设置主节点OGUID和模式

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(654321);
SQL> alter database primary;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

2.3.10 设置备节点OGUID和模式

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(654321);
SQL> alter database standby;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

2.3.11 启动主备守护服务(进程)

# 131节点
[dmdba@localhost ~]$ /opt/dmdb/dmdbms/bin/DmWatcherServiceDW1 start
# 132节点
[dmdba@localhost ~]$ /opt/dmdb/dmdbms/bin/DmWatcherServiceDW2 start
2.4 监视器服务器

2.4.1 设置监视器配置 — dmmonitor.ini

[dmdba@localhost ~]$ vim /opt/dmdb/data/DAMENG/dmmonitor.ini MON_DW_CONFIRM = 1
MON_LOG_PATH = /opt/dmdb/data/DAMENG/log/monitor
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0 [DMDW]
MON_INST_OGUID = 654321
MON_DW_IP = 192.168.11.131:51131
MON_DW_IP = 192.168.11.132:51132

2.4.2 注册监控服务

[root@localhost ~]# /opt/dmdb/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -monitor_ini /opt/dmdb/data/DAMENG/dmmonitor.ini -p MT

2.4.3 启动监视器服务

[dmdba@localhost ~]$ /opt/dmdb/dmdbms/bin/DmMonitorServiceMT start
2.5 功能测试

2.5.1 数据同步

2.5.1.1 主节点写入数据

SQL> CREATE USER "TEST" IDENTIFIED BY testuserpwd;
SQL> CREATE TABLE "TEST"."USERS"("ID" INT IDENTITY(1, 1) NOT NULL, "USERNAME" VARCHAR(50) );
SQL> insert into "TEST"."USERS"("USERNAME") VALUES ("jc");
SQL> commit;

2.5.1.2 备节点查询数据

SQL> select * from test.users;

2.5.2 自动接管

2.5.2.1 模拟主节点网络故障

# 主节点服务器
[root@localhost ~]# service network stop # 原备节点服务器
[root@localhost ~]# su - dmdbaLast login: Thu Jan 6 23:45:06 CST 2022 on pts/1-bash-4.2$ disql disql V8用户名:密码: 服务器[LOCALHOST:5236]:处于主库打开状态

2.5.2.2 模拟主节点网络恢复

# 原主节点服务器

[root@localhost ~]# service network start

# 检测原主节点是否重新已备库加入

[root@localhost ~]# su - dmdbaLast login: Fri Jan 7 02:59:36 CST 2022 on pts/0-bash-4.2$ disqldisql V8用户名:密码:服务器[LOCALHOST:5236]:处于备库打开状态

2.5.3 手动切换

2.5.3.1 登陆监视器

[dmdba@localhost ~]$ vim /opt/dmdb/data/DAMENG/dmmonitor_normal.iniMON_DW_CONFIRM = 0
MON_LOG_PATH = /opt/dmdb/data/DAMENG/log/monitor
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0 [DMDW]
MON_INST_OGUID = 654321
MON_DW_IP = 192.168.11.131:51131
MON_DW_IP = 192.168.11.132:51132# 登陆监视器
[dmdba@localhost ~]$ dmmonitor /opt/dmdb/data/DAMENG/dmmonitor_normal.ini
login用户名:密码:[monitor]     2022-01-07 15:24:36: 登录监视器成功!

2.5.3.2 选择可切换为主库的节点

choose switchoverCan choose one of the following instances to do switchover:1: DW1

2.5.3.3 手动切换主节点

switchover dw1[monitor]     2022-01-07 15:24:45: 开始切换实例DW1……

2.5.4 读写分离

2.5.4.1 配置客户端服务名

[dmdba@localhost ~]$ vim /etc/dm_svc.confdmdw=(192.168.11.132:5236,192.168.11.131:5236)
RW_SEPARATE=(1)

2.5.4.2 使用服务名登陆

[dmdba@localhost ~]$ disql SYSDBA/SYSDBA@dmdw 服务器[192.168.11.131:5236]:处于主库打开状态   <----- 由此提示符可知,disql默认首先连接到了主库(为了路由分发可用备库) SQL> select instance_name,host_name,STATUS$,MODE$ from v$instance; 行号   INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ------------- --------- ------- -------1     DW2      dmdw2   OPEN  STANDBY    <------ 只读查询默认被分配到了备份 SQL> select * from test.users limit 1 for update;       <------ 使用for update语句指示该查询是为了修改而读取 行号   ID     USERNAME
---------- ----------- --------
1     1      jcSQL> select instance_name,host_name,STATUS$,MODE$ from v$instance;行号   INSTANCE_NAME HOST_NAME STATUS$ MODE$ ---------- ------------- --------- ------- -------1     DW1      dmdw1   OPEN  PRIMARY     <------ 未commit之前再次查询当前实例可知,该连接仍是连接的主库SQL> commit;SQL> select instance_name,host_name,STATUS$,MODE$ from v$instance; 行号   INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ------------- --------- ------- -------1     DW2      dmdw2   OPEN  STANDBY    <------ commit之后再次查询当前实例可知,该连接已将只读查询再次分发到备库

https://eco.dameng.com

DM数据守护读写分离集群相关推荐

  1. DM数据守护集群搭建

    DM数据守护集群搭建 文章目录 DM数据守护集群搭建 一.概述 二.系统结构图 三.基本概念 (1)主库 (2)备库 (3)Redo日志 (4)Redo日志传输 (5)Redo日志重演 (6)守护进程 ...

  2. DM数据守护集群部署

    DM数据守护集群部署 部署规划 A机器 B机器 心跳ip(MAL_HOST) 172.16.1.1 172.16.1.2 业务ip(对外ip) 192.168.56.145 192.168.56.14 ...

  3. 达梦-主备与读写分离集群

    DM8-主备与读写分离集群 文章目录 DM8-主备与读写分离集群 1. 基本概念 1.1 DM集群 1.2 DM归档类型 2. 数据守护集群 2.1 概念 2.2 数据守护集群架构及原理 2.3 守护 ...

  4. 数据库高性能读写分离集群操作说明

    1.系统概述 在一个高并发的事务型系统中,当写事务占的比例相对读事务相对较小时,可以借助DM7的主备系统备机可读的特点,将读事务转移到备机执行,减少单节点的并发压力,通过增加备机节点资源,提高系统的并 ...

  5. 金仓数据库KingbaseES主备和读写分离集群使用手册(日常运维管理)

    对应10小节作的整改,包括但不限于一键启动的检查项目.对属于一键启动的检查项作个说明即可,比如 本检查属于一键启动默认检查项. 目录 7.1. 集群启停 ¶ 7.1.1. 一键启停方式 ¶ 7.1.2 ...

  6. MySQL8读写分离集群

    文章目录 前言 MySQL读写分离原理 搭建MySQL读写分离集群 MySQL8.0之前 MySQL8.0之后 后记 前言 上一期介绍并实现了MySQL的主从复制,由于主从复制架构仅仅能解决数据冗余备 ...

  7. Windows 2012 always on 读写分离集群搭建配置

    Windows 2012 always on 读写分离集群搭建配置. Always on简介 AlwaysOn 可用性组 (SQL Server) AlwaysOn 可用性组功能是一个提供替代数据库镜 ...

  8. Maxscale读写分离集群过渡PXC集群

    一.实验环境 第一次写博客,欢迎大家交流指正!!! 不喜勿喷!!! 操作系统 : Centos7.5虚拟机 数据库软件 : mysql-5.7.17 主机名 ip地址 角色 web33 192.168 ...

  9. DM数据库主备集群部署

    DM数据库主备集群部署 一.部署规划 主备集群作为最简单的高可用架构,顾名思义为主对外提供数据服务,备库作为备库,故障发生时可以进行数据库主备切换.而切换可分为自动切换和手动切换两种模式.下面介绍的是 ...

最新文章

  1. 分布式高性能消息处理中心HPMessageCenter
  2. 聚类方法(Clustering)
  3. 监听页面滚动触发事件,页面停止滚动触发事件
  4. 解决Mysql安装之后没有my.ini配置文件问题
  5. 短链接生成接口、长链接转换短链接,可根据ip归属地个性化跳转、随机跳转
  6. 飞桨paddlepaddle论文复现——BigGAN论文翻译解读
  7. 做产品也要造概念,讲故事,用优雅的措辞美化自己
  8. 【脑洞大开】神经网络vs非公理化推理系统(NARS)
  9. 计算机云维护是做什么的,IT运维是什么?云时代下的运维人员是怎样的?
  10. EndNote安装与使用
  11. EXCEL中如何让某些行列固定不动
  12. 论文阅读(13) 水母游泳过程中的神经机械波共振(2021)
  13. 端午送粽子祝福微信小程序源码下载支持打赏模式带背景音乐
  14. java实现手机扫二维码登陆
  15. Android平台基于asmack实现XMPP协议中的PubSub机制
  16. 史上最完整的人工智能书单大全
  17. 冯诺依曼体系结构、操作系统的认识
  18. 那些年啊,那些事——一个程序员的奋斗史 ——90
  19. Qt QTabWidget详解
  20. 微信公众号之智能绑定实现初始版本

热门文章

  1. 第二十三章《斗地主游戏》第3节:项目完整代码
  2. 企业级DevOps容器云平台流水线综合解决方案详解(一)
  3. 六石管理学:突然看到两个男同事聊天,预判离职
  4. 【oracle】oracle11g 搭建
  5. 名帖291 董其昌 行书《乐志论》
  6. 乌镇互联网大会发布15项世界领先科技成果
  7. Window 的标志
  8. 洗地机哪个品牌好用,洗地机十大品牌分享
  9. 摄像头 UIImagePickerController拍照和视频录制
  10. 关于input=file的用法