DM读写分离搭建过程

目录

1.环境说明:

2安装数据库

3配置主库 GRP1_RWW_01

3.1配置dm.ini

3.2配置 dmmal.ini(主备库一致)

3.3配置 dmarch.ini

3.4配置 dmwatcher.ini

3.5启动主库

4配置备库(以GRP1_RWW_02为例)

4.1配置 dm.ini

4.2配置 dmmal.ini(主备库一致)

4.3配置 dmarch.ini

4.4配置 dmwatcher.ini

4.5启动备库

5配置监视器

5.1配置确认监视器

5.2启动进程

6注册服务

6.1服务关闭顺序

6.2注册服务

7.配置dm_svc.conf


1.环境说明:

192.168.1.101/192.168.1.102/192.168.1.103主备集群为例,参考的时候只需将标颜色的ip地址替换即可。

应用

ip

prot

GRP1_RWW_01集群

GRP1_RWW__01主库

192.168.1.101

32141

PORT_NUM实例的对外服务端口

52141

MAL_DW_PORT实例对应的守护进程监听TCP连接的端口

61141

MAL_PORT系统监听TCP连接的端口

33141

MAL_INST_DW_PORT守护环境下,监听守护进程连接端口

GPR1_RWW_02备库

192.168.1.102

32142

实例的对外服务端口

52142

实例对应的守护进程监听TCP连接的端口

61142

系统监听TCP连接的端口

33142

守护环境下,监听守护进程连接端口

GPR1_RWW_03备库

192.168.1.103 

32143

PORT_NUM

52143

MAL_DW_PORT

61143

MAL_PORT

33143

MAL_INST_DW_PORT

监视器

192.168.1.104

oguid:453332

2安装数据库

四台机器都安装了DM数据库

安装路径为:/home/dmdba/dmdbms

数据库路径为:/home/dmdba/dmdbms/data

归档路径为:/home/dmdba/dmdbms/arch

备份路径为:/home/dmdba/dmdbms/backup

2.1主备库初始化实例,配置归档

./dminit path=/home/dmdba/dmdbms/data EXTENT_SIZE=32 PAGE_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=y CHARSET=1

初始化成功后将以正常方式启动,并退出一次

对于新初始化的库,首次启动不允许使用 mount 方式,需要先正常启动并正常

退出,然后才允许 mount 方式启动。

./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini

2.2数据准备

主库脱机备份,复制备份文件到两个备库,备库脱机还原,更新DBMAGIC。

脱机备份:

BACKUP DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET'/home/dmdba/dmdbms/data/BACKUP_FILE_01';

scp:

scp -r BACKUP_FILE_01 dmdba@192.168.1.102:/home/dmdba/dmbms/

backup

scp -r BACKUP_FILE_01 dmdba@192.168.1.101:/home/dmdba/dmbms/

backup

两个备库脱机还原恢复:

可以先校验备份集:

CHECK BACKUPSET '/home/dmdba/dmdbms/backup/BACKUP_FILE';

RESTORE DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini

' FROM BACKUPSET '/home/dmdba/dmdbms/backup/BACKUP_FILE

_01';

因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤。 

RECOVER DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' UPDATE

DB_MAGIC;

恢复之后,用disql登录查看主备FLSN和CLSN以及永久魔数是否相同,相同再进行下一步。

./disql SYSDBA/SYSDBA@localhost:32141

./disql SYSDBA/SYSDBA@localhost:32142

./disql SYSDBA/SYSDBA@localhost:32143

select permanent_magic;
select file_LSN,cur_LSN from V$rlog;
 

3配置主库 GRP1_RWW_01

3.1配置dm.ini

INSTANCE_NAME = GRP1_RWW_01

PORT_NUM = 32141 #数据库实例监听端口

DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间

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

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

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

3.2配置 dmmal.ini(主备库一致)

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

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

[MAL_INST1]

MAL_INST_NAME = GRP1_RWW_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST = 192.168.1.101 #MAL 系统监听 TCP 连接的 IP 地址

MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口

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

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

MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口

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

[MAL_INST2]

MAL_INST_NAME = GRP1_RWW_02

MAL_HOST = 192.168.1.102

MAL_PORT = 61142

MAL_INST_HOST = 192.168.1.102

MAL_INST_PORT = 32142

MAL_DW_PORT = 52142

MAL_INST_DW_PORT = 33142

[MAL_INST3]

MAL_INST_NAME = GRP1_RWW_03

MAL_HOST = 192.168.1.103

MAL_PORT = 61143

MAL_INST_HOST = 192.168.1.103

MAL_INST_PORT = 32143

MAL_DW_PORT = 52143

MAL_INST_DW_PORT = 33143

3.3配置 dmarch.ini

ARCH_WAIT_APPLY = 1 #强一致性,等待备库做完日志

[ARCHIVE_REALTIME1]

ARCH_TYPE = REALTIME #实时归档类型

ARCH_DEST = GRP1_RWW_02 #实时归档目标实例名

[ARCHIVE_REALTIME2]

ARCH_TYPE = REALTIME #实时归档类型

ARCH_DEST = GRP1_RWW_03 #实时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /home/dmdba/dmdbms/arch #本地归档文件存放路径

ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M (必须改成非0)

3.4配置 dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = AUTO #自动切换模式

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

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

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

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

INST_INI = /home/dmdba/dmdbms/data/DAMENG/dm.ini #dm.ini 配置文件路径

INST_AUTO_RESTART = 1 #打开实例的自动启动功能

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

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

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

3.5启动主库

 mount 方式启动主库

cd /home/dmdba/dmdbms/bin/

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

进入disql, 

 ./disql SYSDBA/SYSDBA

设置OGUID值:

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

SQL>sp_set_oguid(453332);

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

SQL>alter database primary;

登录主库修改数据库为 primary 模式

4配置备库(以GRP1_RWW_02为例)

GRP1_RWW_03的配置文件只需要修改实例名、端口号、归档目标。为了方便,路径都设置成一样的。

4.1​​​​​​​配置 dm.ini

INSTANCE_NAME = GRP1_RWW_02 

PORT_NUM = 32142 #数据库实例监听端口

DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间

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

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

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

​​​​​​​4.2配置 dmmal.ini主备库一致

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

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

[MAL_INST1]

MAL_INST_NAME = GRP1_RWW_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST = 192.168.1.101 #MAL 系统监听 TCP 连接的 IP 地址

MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口

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

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

MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口

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

[MAL_INST2]

MAL_INST_NAME = GRP1_RWW_02

MAL_HOST = 192.168.1.102

MAL_PORT = 61142

MAL_INST_HOST = 192.168.1.102

MAL_INST_PORT = 32142

MAL_DW_PORT = 52142

MAL_INST_DW_PORT = 33142

[MAL_INST3]

MAL_INST_NAME = GRP1_RWW_03

MAL_HOST = 192.168.1.103

MAL_PORT = 61143

MAL_INST_HOST = 192.168.1.103

MAL_INST_PORT = 32143

MAL_DW_PORT = 52143

MAL_INST_DW_PORT = 33143

​​​​​​​4.3配置 dmarch.ini

ARCH_WAIT_APPLY = 1 #强一致性,等待备库做完日志

[ARCHIVE_REALTIME1]

ARCH_TYPE = REALTIME #实时归档类型

ARCH_DEST = GRP1_RWW_01 #实时归档目标实例名

[ARCHIVE_REALTIME2]

ARCH_TYPE = REALTIME #实时归档类型

ARCH_DEST = GRP1_RWW_03 #实时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /home/dmdba/dmdbms/data/arch #本地归档文件存放路径

ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M (必须改成非0)  

​​​​​​​4.4配置 dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = AUTO #自动切换模式

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

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

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

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

INST_INI = /home/dmdba/dmdbms/data/DAMENG/dm.ini #dm.ini 配置文件路径

INST_AUTO_RESTART = 1 #打开实例的自动启动功能

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

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

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

​​​​​​​​​​​​​​4.5启动备库

以 mount 方式启动备库

 cd /home/dmdba/dmdbms/bin/

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

 cd /home/dmdba/dmdbms/bin/

进入disql, 

 ./disql SYSDBA/SYSDBA:32142

设置OGUID值:

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

SQL>sp_set_oguid(453332);

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

SQL>alter database standby;

登录备库修改数据库为 Standby 模式

5配置监视器

5.1配置确认监视器

 vi dmmonitor.ini

MON_DW_CONFIRM = 1 #确认监视器模式

MON_LOG_PATH = /home/dmdba/dmdbms/data/log #监视器日志文件存放路径

MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件

MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M

MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间(必须改为非0)

[GRP1]

MON_INST_OGUID = 453332 #组 GRP1 的唯一 OGUID 值

#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置

#IP 对应 dmmal.ini 中的 MAL_HOST, PORT 对应 dmmal.ini 中的 MAL_DW_PORT

MON_DW_IP = 192.168.1.101:52141

MON_DW_IP = 192.168.1.102:52142

MON_DW_IP = 192.168.1.103:52143

​​​​​​​5.2启动进程

1.先启动主备库实例进程(之前启动后若未关闭,可忽略此步骤)

 cd /home/dmdba/dmdbms/bin/

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

2.启动主备库守护进程

 cd /home/dmdba/dmdbms/bin/

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

3.启动监视器

./dmmonitor /home/dmdba/dmdbms/monitor/dmmonitor.ini

在监视器上执行 show 命令查看主备库实例和守护进程处于正常,状态关闭进程,注册服务。

WSTATUS和ISTATUS都为OPEN ,主备的FLSN、CLSN四个值都相同(这里都是28238)。(上图只截到了两个库的状态)

6注册服务

关闭进程,注册服务。

6.1服务关闭顺序

1.关闭监视器

2.关闭备机守护进程

3.关闭主机守护进程

4.关闭主机实例

5.关闭备机实例

6.2注册服务

注意实例服务以mount方式注册

注意不要搞错了对应服务所在的机器。

​​​​​​​主库注册实例服务

 cd /home/dmdba/dmdbms/script/root

 ./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/data/DAMENG/dm.ini -m mount -p GRP1_RWW_01

​​​​​​​主库注册守护进程服务

 ./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini -p dm1

​​​​​​​备库注册实例服务

 cd /home/dmdba/dmdbms/script/root

 ./dm_service_installer.sh -t dmserver -i /home/dmdba/dmdbms/data/DAMENG/dm.ini -m mount -p GRP1_RWW_02

 ./dm_service_installer.sh -t dmserver -i /home/dmdba/dmdbms/data/DAMENG/dm.ini -m mount -p GRP1_RWW_03

​​​​​​​​​​​​​​备库注册守护进程服务

 ./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini -p dm2

./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini -p dm3

​​​​​​​注册监视器服务

 ./dm_service_installer.sh -t dmmonitor -monitor_ini /home/dmdba/dmdbms/monitor/dmmonitor.ini -p dmmon

7.配置dm_svc.conf

使用DM数据守护,一般要求编辑DM_svc.conf文件配置连接服务名,以实现故障自动重连。

Windows平台下位于%SystemRoot%\system32目录

Linux平台下位于/etc目录

编辑DM_svc.conf文件(注意符号都是英文的):

TIME_ZONE=(480)

LANGUAGE=(cn)

DM_RWC=(192.168.1.101:32141,192.168.1.102:32142,192.168.1.103:32143)

LOGIN_MODE=(1)

[DM_RWC]

LOGIN_MODE=(1)

RW_SEPARATE=(1) 

更多相关资料参考达梦云适配中心:

 达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心 (dameng.com)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值