达梦数据库大规模并行集群(DMMPP)主备安装部署步骤

一.在两个节点上安装好DM软件、配置好用户、环境变量、资源限制等

二.初始化实例

1.在节点1上初始化出来两个库

./dminit path=/home/dmdba/ db_name=grp1_ep01 instance_name=GRP1_MPP_EP01

./dminit path=/home/dmdba/ db_name=grp2_ep02 instance_name=GRP2_MPP_EP02

2.在节点2上初始化出来两个库

./dminit path=/home/dmdba/ db_name=grp2_ep01 instance_name=GRP2_MPP_EP01

./dminit path=/home/dmdba/ db_name=grp1_ep02 instance_name=GRP1_MPP_EP02

说明:

grp1是一组,grp2是另外一组

ep01主为,ep02为备

则在组grp1中,grp1_ep01和grp1_ep02为主备

在组grp2中,grp2_ep01的grp2_ep02为主备

三.分别在两个节点4个实例自身的目录下创建本地归档目录/dmarch

/home/dmdba/grp2_ep02/dmarch

/home/dmdba/grp1_ep01/dmarch

/home/dmdba/grp2_ep01/dmarch

/home/dmdba/grp1_ep02/dmarch

四.备份还原

1.脱机备份还原前,刚刚初始化的库需要启动一下

1.1在节点1上,启动库后再退出

./dmserver /home/dmdba/grp1_ep01/dm.ini

./dmserver /home/dmdba/grp2_ep02/dm.ini

1.2在节点2上,启动库后再退出

./dmserver /home/dmdba/grp1_ep02/dm.ini

./dmserver /home/dmdba/grp2_ep01/dm.ini

2.备份还原

2.1把节点1的grp1_ep01的数据备份

backup database '/home/dmdba/grp1_ep01/dm.ini' full to backup_file1 backupset '/home/dmdba/backup_file_grp1'

2.2把备份文件传输到节点2上

scp -r backup_file_grp1/ 192.168.161.212:/home/dmdba/

2.3在节点2上进行备份还原

restore database '/home/dmdba/grp1_ep02/dm.ini' from backupset '/home/dmdba/backup_file_grp1'

recover database '/home/dmdba/grp1_ep02/dm.ini' from backupset '/home/dmdba/backup_file_grp1'

recover database '/home/dmdba/grp1_ep02/dm.ini' update db_magic

2.4把节点2的grp2_ep01的数据备份

backup database '/home/dmdba/grp2_ep01/dm.ini' full to backup_file1 backupset '/home/dmdba/backup_file_grp2'

2.5把备份文件传输到节点1上

scp -r backup_file_grp2 192.168.161.211:/home/dmdba/

2.6在节点1上进行备份还原

restore database '/home/dmdba/grp2_ep02/dm.ini' from backupset '/home/dmdba/backup_file_grp2'

recover database '/home/dmdba/grp2_ep02/dm.ini' from backupset '/home/dmdba/backup_file_grp2'

recover database '/home/dmdba/grp2_ep02/dm.ini' update db_magic

五.配置组grp1的主库ep01(路径:/home/dmdba/grp1_ep01)

1配置dm.ini

INSTANCE_NAME = GRP1_MPP_EP01

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

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

ALTER_MODE_STATUS = 0

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

ENABLE_OFFLINE_TS = 2

#不允许备库 OFFLINE 表空间

MAL_INI = 1

#打开 MAL 系统

ARCH_INI = 1

#打开归档配置

MPP_INI = 1

#启用 MPP 配置

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

2.配置dmmal.ini

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

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

[MAL_INST1]

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

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

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

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

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

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

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

[MAL_INST2]

 MAL_INST_NAME = GRP2_MPP_EP02

 MAL_HOST = 10.0.0.211

 MAL_PORT = 5337

 MAL_INST_HOST = 192.168.161.211

 MAL_INST_PORT = 5236

 MAL_DW_PORT = 5253

MAL_INST_DW_PORT = 5243

[MAL_INST3]

 MAL_INST_NAME = GRP1_MPP_EP02

 MAL_HOST = 10.0.0.212

 MAL_PORT = 5338

 MAL_INST_HOST = 192.168.161.212

 MAL_INST_PORT = 5237

 MAL_DW_PORT = 5254

MAL_INST_DW_PORT = 5244

[MAL_INST4]

 MAL_INST_NAME = GRP2_MPP_EP01

 MAL_HOST = 10.0.0.212

 MAL_PORT = 5338

 MAL_INST_HOST = 192.168.161.212

 MAL_INST_PORT = 5237

 MAL_DW_PORT = 5254

MAL_INST_DW_PORT = 5244

3.配置dmarch.ini

[ARCHIVE_REALTIME1]

ARCH_TYPE = REALTIME #实时归档类型

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

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

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

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

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

4.配置dmmpp.ini

[service_name1]

mpp_seq_no = 0

mpp_inst_name = GRP1_MPP_EP01

[service_name2]

mpp_seq_no = 1

mpp_inst_name = GRP2_MPP_EP01

使用dmctlcvt进行转换,DM软件安装的bin目录下执行以下命令

./dmctlcvt type=2 src=/home/dmdba/grp1_ep01/dmmpp.ini dest=/home/dmdba/grp1_ep01/dmmpp.ctl

5.启动并连接库,配置主库OGUID,设置为primary

./dmserver /home/dmdba/grp1_ep01/dm.ini mount

./disql /nolog

Sp_set_oguid(45330);

Alter database primary;

六.配置组grp2的主库ep01(路径:/home/dmdba/grp2_ep01)

1.配置dm.ini

INSTANCE_NAME = GRP2_MPP_EP01                                              

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

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

ALTER_MODE_STATUS = 0

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

ENABLE_OFFLINE_TS = 2

#不允许备库 OFFLINE 表空间

MAL_INI = 1

#打开 MAL 系统

ARCH_INI = 1

#打开归档配置

MPP_INI = 1

#启用 MPP 配置

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

2.配置dmmal.ini

同grp1_ep01

3.配置dmarch.ini

[ARCHIVE_REALTIME1]

ARCH_TYPE = REALTIME

ARCH_DEST = GRP2_MPP_EP02

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/dmdba/grp2_ep01/dmarch

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

4.配置dmmpp.ctl

同grp1_ep01,把dmmpp.ctl文件拷贝过来就行了

5.启动并连接库,配置主库OGUID,设置为primary

./dmserver /home/dmdba/grp2_ep01/dm.ini mount

./disql /nolog

Sp_set_oguid(45331);

Alter database primary;

七.配置组grp1的备库ep02(路径:/home/dmdba/grp1_ep02)

1.配置dm.ini

INSTANCE_NAME = GRP1_MPP_EP02                                              

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

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

ALTER_MODE_STATUS = 0

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

ENABLE_OFFLINE_TS = 2

#不允许备库 OFFLINE 表空间

MAL_INI = 1

#打开 MAL 系统

ARCH_INI = 1

#打开归档配置

MPP_INI = 1

#启用 MPP 配置

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

2.配置dmmal.ini

同grp1_ep01

3.配置dmarch.ini

[ARCHIVE_REALTIME1]

ARCH_TYPE = REALTIME

ARCH_DEST = GRP1_MPP_EP01

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/dmdba/grp1_ep02/dmarch

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

4.配置dmmpp.ctl

同grp1_ep01,把dmmpp.ctl文件拷贝过来就行了

5.启动并连接库,配置主库OGUID,设置为primary

./dmserver /home/dmdba/grp1_ep02/dm.ini mount

./disql /nolog

Sp_set_oguid(45330);

Alter database standby;

八.配置组grp2的备库ep02(路径:/home/dmdba/grp2_ep02)

1.配置dm.ini

INSTANCE_NAME = GRP2_MPP_EP02                                              

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

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

ALTER_MODE_STATUS = 0

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

ENABLE_OFFLINE_TS = 2

#不允许备库 OFFLINE 表空间

MAL_INI = 1

#打开 MAL 系统

ARCH_INI = 1

#打开归档配置

MPP_INI = 1

#启用 MPP 配置

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

2.配置dmmal.ini

同grp1_ep01

3.配置dmarch.ini

[ARCHIVE_REALTIME1]

ARCH_TYPE = REALTIME

ARCH_DEST = GRP2_MPP_EP01

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/dmdba/grp2_ep02/dmarch

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

4.配置dmmpp.ctl

同grp1_ep01,把dmmpp.ctl文件拷贝过来就行了

5.启动并连接库,配置主库OGUID,设置为primary

./dmserver /home/dmdba/grp1_ep02/dm.ini mount

./disql /nolog

Sp_set_oguid(45331);

Alter database standby;

九.配置守护进程dmwatcher.ini

一般来说每个独立的实例都有单独的守护进程,由于同一台机器上有不同组的实例,可以只配置一组守护进程

1.节点1上创建config目录用来存放dmwatcher.ini文件

2.dmwatcher.ini添加内容如下

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = AUTO #自动切换模式

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

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

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

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

INST_INI = /home/dmdba/grp1_ep01/dm.ini #dm.ini 配置文件路径

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

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

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

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

[GRP2]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = AUTO #自动切换模式

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

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

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

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

INST_INI = /home/dmdba/grp2_ep02/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.节点2上创建config目录用来存放dmwatcher.ini文件,参考步骤1

4.dmwatcher.ini文件中添加如下内容

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = AUTO #自动切换模式

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

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

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

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

INST_INI = /home/dmdba/grp1_ep02/dm.ini #dm.ini 配置文件路径

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

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

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

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

[GRP2]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = AUTO #自动切换模式

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

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

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

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

INST_INI = /home/dmdba/grp2_ep01/dm.ini #dm.ini 配置文件路径

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

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

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

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

5.启动守护进程

在两个节点上分别启动

./dmwatcher /home/dmdba/config/dmwatcher.ini

./dmwatcher /home/dmdba/config/dmwatcher.ini

守护进程会自动启动已配置过的所有库,所以只需要在两个节点上分别启动守护进程就行了,不需要再单独去启动两组的四个库了

十.配置监视器dmmonitor.ini

守护进程配置的自动切换,所以要在两个节点之外的第三个节点上配置确认监视器

1.在第三台安装好DM软件的机器上,创建配置文件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 = 0 #不限定日志文件总占用空间

[GRP1]

MON_INST_OGUID = 45330 #组 GRP1 的唯一 OGUID 值 #以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT‖的形式配置

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

MON_DW_IP = 10.0.0.211:5253

MON_DW_IP = 10.0.0.212:5253

[GRP2]

MON_INST_OGUID = 45331 #组 GRP2 的唯一 OGUID 值 #以下配置为监视器到组 GRP2 的守护进程的连接信息,以―IP:PORT‖的形式配置

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

MON_DW_IP = 10.0.0.211:5254

MON_DW_IP = 10.0.0.212:5254

2.启动监视器

./dmmonitor /home/dmdba/config/dmmonitor.ini

3.确认集群状态

可以看到两组(GRP1、GRP2)里的WSTATUS为OPEN、INST_OK为OK、ISTATUS为OPEN,集群状态正常,这个是前台测试集群是否正常,实际使用过程中一般都会注册服务,然后让服务在后台运行

十一.注册服务

1.注册守护进程,两个节点上都执行

./dm_service_installer.sh -t dmwatcher -p DMMPP -watcher_ini /home/dmdba/config/dmwatcher.ini

注册守护进程后直接启动,守护进程会自动启动已配置过的实例,两个节点上都需要启动

systemctl start DmWatcherServiceDMMPP

2.注册数据库实例服务,两个节点上都执行,每个节点上都有两个实例,为了便于区分,grp1的服务后缀统一为DMMPP1,grp2的服务后缀统一为DMMPP2

节点1上

./dm_service_installer.sh -t dmserver -p DMMPP1 -dm_ini /home/dmdba/grp1_ep01/dm.ini

 ./dm_service_installer.sh -t dmserver -p DMMPP2 -dm_ini /home/dmdba/grp2_ep02/dm.ini

节点2上

./dm_service_installer.sh -t dmserver -p DMMPP1 -dm_ini /home/dmdba/grp1_ep02/dm.ini

./dm_service_installer.sh -t dmserver -p DMMPP2 -dm_ini /home/dmdba/grp2_ep01/dm.ini

3.注册监视器服务,只在监视器节点上配置。若需要配置多监视器,则在需要的节点上配置普通监视器即可

./dm_service_installer.sh -t dmmonitor -p DMMPP -monitor_ini /home/dmdba/config/dmmonitor.ini

十二.配置集群访问

修改客户端的dm_svc.conf文件

LANGUAGE=(cn)

# 全局配置区

DMMPP=(192.168.161.211:5236,192.168.161.212:5236,192.168.161.211:5237,192.168.161.212:5237)

TIME_ZONE=(+480) #表示+8:00 时区

LOGIN_ENCRYPT=(0)

DIRECT=(Y)

# 服务配置区

[DMMPP]

TIME_ZONE=(+480) #表示+8:00 时区

LOGIN_MODE=(1)设置只登录主库

SWITCH_TIME=(3) #在服务器之间切换的次数

SWITCH_INTERVAL=(10) #在服务器之间切换的时间间隔,单位为毫秒

十三.测试

1.多次连接集群,查看连接的节点是否会有变化

确认以集群的方式连接会自动负载到不同的节点

2.连接MPP集群

./disql SYSDBA/SYSDBA@DMMPP

3.建立分布列表

CREATE TABLE T_LIST(C1 INT, C2 CHAR(10)) DISTRIBUTED BY LIST (C1) (VALUES(1,2,3,4,5) ON GRP1_MPP_EP01,VALUES(6,7,8,9,10) ON GRP2_MPP_EP01);

说明: 建立表T_LIST根据C1字段进行分布。值为1-5的数据行分部到A机器实例名为GRP1_MPP_EP01的库内。值为6-10的分部到B机器实例名为GRP2_MPP_EP01的库内。

4.插入数据

insert into T_LIST values(1,'aa');

insert into T_LIST values(2,'bb');

insert into T_LIST values(8,'cc');

insert into T_LIST values(10,'dd');

Commit

5.以local的方式分别登录组grp1和grp2的主节点查看数据分布情况

确认数据是按照建表的规则分布的

6.登录组grp1的备库ep02查看

确认备库中也有数据

7.确认以集群的方式连接后,现在的节点信息

现在连接的是节点2,即组grp1的主库ep01

8.打开确认监视器,只有确认监视器打开的情况下库才会自动切换

./dmmonitor /home/dmdba/config/dmmonitor.ini

9.在节点1上找到ep01的进程,直接kill -9

10.在之前登录的界面再次查看表信息和节点信息

11.查看期间确认监视器打印出来的信息

 

在打印出来的信息中可以看到,在组grp1的主库ep01出现故障(使用kill进程的方式进行模拟)的时候,确认监视器会自动对组grp1进行接管,之后组grp1的备库ep02接管成功

 

注意:

现在网上很多文档里写的MPP集群用本地或者全局模式登录的时候,是./disql SYSDBA/SYSDBA*LOCAL@DMMPP这种模式,现在DM8已经更换了方式,之前的连接方式已经不能使用了,现在连接模式是./disql SYSDBA/SYDBA@DMMPP#”{MPP_TPYE=LOCAL}”,如下

 

更多资讯请上达梦技术社区了解:https://eco.dameng.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值