DM数据守护读写分离集群
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数据守护读写分离集群相关推荐
- DM数据守护集群搭建
DM数据守护集群搭建 文章目录 DM数据守护集群搭建 一.概述 二.系统结构图 三.基本概念 (1)主库 (2)备库 (3)Redo日志 (4)Redo日志传输 (5)Redo日志重演 (6)守护进程 ...
- 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 ...
- 达梦-主备与读写分离集群
DM8-主备与读写分离集群 文章目录 DM8-主备与读写分离集群 1. 基本概念 1.1 DM集群 1.2 DM归档类型 2. 数据守护集群 2.1 概念 2.2 数据守护集群架构及原理 2.3 守护 ...
- 数据库高性能读写分离集群操作说明
1.系统概述 在一个高并发的事务型系统中,当写事务占的比例相对读事务相对较小时,可以借助DM7的主备系统备机可读的特点,将读事务转移到备机执行,减少单节点的并发压力,通过增加备机节点资源,提高系统的并 ...
- 金仓数据库KingbaseES主备和读写分离集群使用手册(日常运维管理)
对应10小节作的整改,包括但不限于一键启动的检查项目.对属于一键启动的检查项作个说明即可,比如 本检查属于一键启动默认检查项. 目录 7.1. 集群启停 ¶ 7.1.1. 一键启停方式 ¶ 7.1.2 ...
- MySQL8读写分离集群
文章目录 前言 MySQL读写分离原理 搭建MySQL读写分离集群 MySQL8.0之前 MySQL8.0之后 后记 前言 上一期介绍并实现了MySQL的主从复制,由于主从复制架构仅仅能解决数据冗余备 ...
- Windows 2012 always on 读写分离集群搭建配置
Windows 2012 always on 读写分离集群搭建配置. Always on简介 AlwaysOn 可用性组 (SQL Server) AlwaysOn 可用性组功能是一个提供替代数据库镜 ...
- Maxscale读写分离集群过渡PXC集群
一.实验环境 第一次写博客,欢迎大家交流指正!!! 不喜勿喷!!! 操作系统 : Centos7.5虚拟机 数据库软件 : mysql-5.7.17 主机名 ip地址 角色 web33 192.168 ...
- DM数据库主备集群部署
DM数据库主备集群部署 一.部署规划 主备集群作为最简单的高可用架构,顾名思义为主对外提供数据服务,备库作为备库,故障发生时可以进行数据库主备切换.而切换可分为自动切换和手动切换两种模式.下面介绍的是 ...
最新文章
- 分布式高性能消息处理中心HPMessageCenter
- 聚类方法(Clustering)
- 监听页面滚动触发事件,页面停止滚动触发事件
- 解决Mysql安装之后没有my.ini配置文件问题
- 短链接生成接口、长链接转换短链接,可根据ip归属地个性化跳转、随机跳转
- 飞桨paddlepaddle论文复现——BigGAN论文翻译解读
- 做产品也要造概念,讲故事,用优雅的措辞美化自己
- 【脑洞大开】神经网络vs非公理化推理系统(NARS)
- 计算机云维护是做什么的,IT运维是什么?云时代下的运维人员是怎样的?
- EndNote安装与使用
- EXCEL中如何让某些行列固定不动
- 论文阅读(13) 水母游泳过程中的神经机械波共振(2021)
- 端午送粽子祝福微信小程序源码下载支持打赏模式带背景音乐
- java实现手机扫二维码登陆
- Android平台基于asmack实现XMPP协议中的PubSub机制
- 史上最完整的人工智能书单大全
- 冯诺依曼体系结构、操作系统的认识
- 那些年啊,那些事——一个程序员的奋斗史 ——90
- Qt QTabWidget详解
- 微信公众号之智能绑定实现初始版本