达梦读写分离集群搭建

本篇文章介绍用虚拟机搭建达梦读写分离集群(一个主库和两个即时备库

1,操作环境

虚拟机软件:VMware Workstation Pro

操作系统:centos7

数据库版本:DM8

2,安装前规划

IP规划:

主机名

服务ip

心跳ip

数据库名

实例名

备注

dm01

192.168.230.51

192.168.230.51

dmdb

RW1

主库

dm02

192.168.230.52

192.168.230.52

dmdb

RW2

备库

dm03

192.168.230.53

192.168.230.53

dmdb

RW3

备库

        dm04

192.168.230.54

监视器

端口规划:

实例名

实例端口

MAL 系统监听 TCP 连接的端口

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

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

RW1

5236

7336

7436

7536

RW2

5236

7336

7436

7536

RW3

5236

7336

7436

7536

目录规划:

数据库软件安装目录

/home/dmdba/dmdbms

实例安装目录

/dmdata/

归档日志存放目录

/dmdata/dmarch/

备份文件存放目录

/dmdata/dmbak/

3,安装数据库软件

      在4台虚拟机上安装好达梦数据库软件(具体可参考前面的单机部署安装),此步骤可暂不初始化实例。

4,读写分离集群搭建

(1)在主库跟备库上初始化实例

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下执行如下命令,完成实例的初始化

./dminit path=/dmdata db_name=dmdb

(2)准备备库数据

为了保证主库与备库的数据完全一致,搭建时,将主库进行全库备份,然后将主库的全库备份还原到备库。备份前需开启归档,操作如下:

1)配置 dm.ini,打开 ARCH_INI 参数

使用dmdba用户,执行如下命令:

vim /dmdata/dmdb/dm.ini

修改如下内容:

ARCH_INI = 1 #打开归档配置

2)配置 dmarch.ini

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dmdata/dmarch #本地归档文件存放路径

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

ARCH_SPACE_LIMIT = 20480 #单位 Mb,0 表示无限制,范围 1024~2147483647M

开启归档后,使用dmrman工具进行备份和还原操作。

1)在主库进行全库备份

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

./dmrman

备份全库:

backup database '/dmdata/dmdb/dm.ini' backupset '/home/dmdba/bakfull';

2)还原备库

将备份的文件/home/dmdba/bakfull拷贝到两台备库服务器上。

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

./dmrman

还原数据库:

restore database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';

恢复数据库:

recover database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';

recover database '/dmdata/dmdb/dm.ini'  update db_magic;

(3)配置dm.ini

使用dmdba用户,进入/dmdata/dmdb/目录下,修改dm.ini配置文件

vim /dmdata/dmdb/dm.ini

dm01主库修改如下内容:

INSTANCE_NAME =RW1

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

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

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

dm02备库修改如下内容:

INSTANCE_NAME =RW2

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

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

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

dm03备库修改如下内容:

INSTANCE_NAME =RW3

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

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

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

(4)配置dmmal.ini

使用dmdba用户,进入/dmdata/dmdb/目录下,执行如下命令:

vim /dmdata/dmdb/dmmal.ini

主库跟两个备库均需添加如下内容:

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

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

[MAL_INST1]

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

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

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

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

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

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

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

[MAL_INST2]

MAL_INST_NAME =RW2

MAL_HOST = 192.168.230.52

MAL_PORT = 7336

MAL_INST_HOST = 192.168.230.52

MAL_INST_PORT = 5236

MAL_DW_PORT = 7436

MAL_INST_DW_PORT = 7536

[MAL_INST3]

MAL_INST_NAME =RW3

MAL_HOST = 192.168.230.53

MAL_PORT = 7336

MAL_INST_HOST = 192.168.230.53

MAL_INST_PORT = 5236

MAL_DW_PORT = 7436

MAL_INST_DW_PORT = 7536

(5)配置dmarch.ini

使用dmdba用户,进入/dmdata/dmdb/目录下,执行如下命令:

vim /dmdata/dmdb/dmarch.ini

dm01主库需添加的内容:

[ARCHIVE_TIMELY1]

ARCH_TYPE = TIMELY #即时归档类型

ARCH_DEST = RW2 #即时归档目标实例名

[ARCHIVE_TIMELY2]

ARCH_TYPE = TIMELY #即时归档类型

ARCH_DEST = RW3 #即时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dmdata/dmarch #本地归档文件存放路径

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

ARCH_SPACE_LIMIT = 20480 #单位 Mb,0 表示无限制,范围 1024~2147483647M

dm02备库需添加的内容:

[ARCHIVE_TIMELY1]

ARCH_TYPE = TIMELY #即时归档类型

ARCH_DEST = RW1 #即时归档目标实例名

[ARCHIVE_TIMELY2]

ARCH_TYPE = TIMELY #即时归档类型

ARCH_DEST = RW3 #即时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST =/dmdata/dmarch #本地归档文件存放路径

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

ARCH_SPACE_LIMIT = 20480 #单位 Mb,0 表示无限制,范围 1024~2147483647M

dm03备库需添加的内容:

[ARCHIVE_TIMELY1]

ARCH_TYPE = TIMELY #即时归档类型

ARCH_DEST = RW1 #即时归档目标实例名

[ARCHIVE_TIMELY2]

ARCH_TYPE = TIMELY #即时归档类型

ARCH_DEST = RW2 #即时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dmdata/dmarch #本地归档文件存放路径

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

ARCH_SPACE_LIMIT = 20480 #单位 Mb,0 表示无限制,范围 1024~2147483647M

(6)配置dmwatcher.ini

使用dmdba用户,进入/dmdata/dmdb/目录下,执行如下命令:

vim /dmdata/dmdb/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 = /dmdata/dmdb/dm.ini #dm.ini 配置文件路径

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

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

(7)启动主库,设置 OGUID,修改数据库模式

以 Mount 方式启动主库

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令: 

./dmserver /dmdata/dmdb/dm.ini mount

重新打开一个命令窗口,使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

./disql SYSDBA/SYSDBA

使用disql工具,设置主库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);

设置数据库为 Primary 模式

SQL>alter database primary;

(8)启动备库,设置 OGUID,修改数据库模式

以 Mount 方式启动备库

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令: 

./dmserver /dmdata/dmdb/dm.ini mount

重新打开一个命令窗口,使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

./disql SYSDBA/SYSDBA

使用disql工具,设置备库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);

设置数据库为Standby模式

SQL>alter database standby;

(9)配置确认监视器

在监视器服务器上配置确认监视器,使用dmdba用户,进入/home/dmdba/dmdbms/目录下,执行如下命令:

vim /home/dmdba/dmdbms/dmmonitor.ini

添加如下内容:

MON_DW_CONFIRM = 1 #确认监视器模式

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

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

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

MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间

[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.230.51:7436

MON_DW_IP = 192.168.230.52:7436

MON_DW_IP = 192.168.230.53:7436

(10)启动读写分离集群

1)启动守护进程(先启动主库,再启动备库)

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

./dmwatcher /dmdata/dmdb/dmwatcher.ini

2)启动确认监视器(在监视器服务器上启动)

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

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

(11)JDBC 接口连接说明

JDBC 连接串中可设置以下连接属性:

rwSeparate 是否使用读写分离系统,缺省为 0;取值(0 不使用,1 使用)。

rwPercent 分发到主库的事务占主备库总事务的百分比,有效值 0~100,缺省值25。

<DRIVER>dm.jdbc.driver.DmDriver</DRIVER>

<URL>jdbc:dm://192.168.0.206:5236?rwSeparate=1&rwPercent=10</URL>

达梦社区:https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值