DM达梦DSC共享集群+DW(DSC)


前言

参考之前的方法安装两套DSC集群,一套做主一套做备

DM数据库之共享集群(DSC)


一、规划

主库实例为 dsc1、dsc2
备库实例为 dscstd1、dscstd2
备份目录 /dm/dmbak/
主库dsc1 ip:192.168.16.141 私网IP:10.10.10.141
主库dsc2 ip:192.168.16.142 私网IP:10.10.10.142
备库dscstd1 ip:192.168.16.151 私网IP:10.10.10.151
备库dscstd2 ip:192.168.16.152 私网IP:10.10.10.152

二、主库数据恢复到备库

1.主库备份

关闭数据库service服务
使用 dmrman 工具备份数据库,主库任意一个DSC节点执行,使用dmdba用户操作

./dmrman use_ap=2 dcr_ini=/dm/dmdba/config/dmdcr.ini

执行 backup 全库。

backup database '/dm/dmdba/config/dsc1/dm.ini' backupset '/dm/dmbak/bakfull';

2.备份还原(备库执行)

备库关闭service数据库服务
拷贝主库备份到备库合适目录,执行以下命令

scp -r /dm/dmbak/bakfull 192.168.16.151:/dm/dmbak/

关闭数据库后,使用 dmrman 工具还原备库,dmdba 用户到安装目录的 bin 下执行以下命令:

./dmrman

执行 restore。

 restore database '/dm/dmdata/DAMENG/dm.ini' from backupset '/dm/dmbak/bakfull';

执行 recover。

recover database '/dm/dmdata/DAMENG/dm.ini' from backupset '/dm/dmbak/bakfull';

执行 recover update db_magic。

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

执行结果如下

recover database '/dm/dmdba/dmdbms/dmrw/dm.ini' update db_magic;
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[37904]
EP[0]'s apply_lsn[37904] >= end_lsn[37904]
recover successfully!
time used: 984.325(ms)

三.配置主库DSC参数(dmdba用户)

1.修改两个实例的配置文件 dm.ini

修改实例的 dm.ini 文件参数,执行以下命令:

vi /dm/dmdba/config/dsc1/dm.ini
vi /dm/dmdba/config/dsc1/dm.ini

主库两个节点修改以下参数值:

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
ARCH_INI = 1 #开启归档模式
MAL_INI = 1

2.修改归档配置文件 dmarch.ini

在config目录下修改 dmarch.ini,执行以下命令:

vi  /dm/dmdba/config/dsc1/dmarch.ini
vi  /dm/dmdba/config/dsc2/dmarch.ini

节点 DSC1添加以下内容:

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = dscstd1/dscstd2

节点DSC2添加以下内容:

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = dscstd1/dscstd2

3.修改MAL系统配置文件 dmmal.ini

在 DSC 集群的 dmmal.ini 文件基础上,增加备库的配置项。所有节点 dmmal.ini 文件内容是一致的,执行以下命令:

主备库文件内容要相同。

[mal_inst0]
mal_inst_name  = DSC1
mal_host       = 10.10.10.141
mal_port       = 9236
MAL_INST_HOST = 192.168.16.141     #实例的对外服务 IP 地址
MAL_INST_PORT = 5236     #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 3567     #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 4567     #实例监听守护进程 TCP 连接的端口

[mal_inst1]
mal_inst_name  = DSC2
mal_host       = 10.10.10.142
mal_port       = 9236
MAL_INST_HOST = 192.168.16.142
MAL_INST_PORT = 5236   #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 3567
MAL_INST_DW_PORT = 4567

[MAL_INST2]
MAL_INST_NAME = dscstd1
MAL_HOST = 10.10.10.151
MAL_PORT = 9236
MAL_INST_HOST = 192.168.16.151
MAL_INST_PORT = 5236
MAL_DW_PORT = 3567
MAL_INST_DW_PORT = 4567

[MAL_INST3]
MAL_INST_NAME = dscstd2
MAL_HOST = 10.10.10.152
MAL_PORT = 9236
MAL_INST_HOST = 192.168.16.152
MAL_INST_PORT = 5236
MAL_DW_PORT = 3567
MAL_INST_DW_PORT = 4567

4.修改守护进程配置文件 dmwatcher.ini

在DSC两个实例下新建文件 dmwatcher.ini,执行以下命令:

/dm/dmdba/config/dsc1/dmwatcher.ini

节点DSC1

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #自动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 35 #本地实例故障认定时间
INST_INI = /dm/dmdba/config/dsc1/dm.ini#dm.ini 配置文件路径
DCR_INI = /dm/dmdba/config/dmdcr.ini #dmdcr.ini 配置文件路径
INST_OGUID = 100011 #守护系统唯一 OGUID 值
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能

节点DSC2

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 35
INST_INI = /dm/dmdba/config/dsc2/dm.ini#dm.ini 配置文件路径
DCR_INI = /dm/dmdba/config/dmdcr.ini #dmdcr.ini 配置文件路径
INST_OGUID = 100011
INST_AUTO_RESTART = 0

四.修改备库DSC参数

1.修改备库dsc两个实例dm.ini文件

使用 dmdba 用户,到数据库实例目录下

vi /dm/dmdba/config/dscstd1/dm.ini
vi /dm/dmdba/config/dscstd2/dm.ini

主库两个节点修改以下参数值:

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
ARCH_INI = 1 #开启归档模式
MAL_INI = 1

2.配置备库dsc两个实例dmarch.ini

在config目录下修改 dmarch.ini,执行以下命令:
节点 dscstd1添加以下内容:

vi  /dm/dmdba/config/dscstd1/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = dsc1/dsc2

节点dscstd2添加以下内容:

vi  /dm/dmdba/config/dscstd2/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = dsc1/dsc2

3.配置备库dsc两个实例dmwatcher.ini

在DSCSTD两个实例下新建文件 dmwatcher.ini,执行以下命令:
节点DSCSTD1

vi /dm/dmdba/config/dscstd1/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #自动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 35 #本地实例故障认定时间
INST_INI = /dm/dmdba/config/dscstd1/dm.ini#dm.ini 配置文件路径
DCR_INI = /dm/dmdba/config/dmdcr.ini #dmdcr.ini 配置文件路径
INST_OGUID = 100011 #守护系统唯一 OGUID 值
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能

节点DSCSTD2

vi /dm/dmdba/config/dscstd2/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 35
INST_INI = /dm/dmdba/config/dscstdd2/dm.ini#dm.ini 配置文件路径
DCR_INI = /dm/dmdba/config/dmdcr.ini #dmdcr.ini 配置文件路径
INST_OGUID = 100011
INST_AUTO_RESTART = 0

五、启动数据库

1.启动所有实例到 mount 状态

DSC1进入bin目录启动到mount,执行以下命令:

./dmserver /dm/dmdba/config/dsc1/dm.ini dcr_ini=/dm/dmdba/config/dmdcr.ini mount

DSC2进入bin启动到mount,执行以下命令:

./dmserver /dm/dmdba/config/dsc2/dm.ini dcr_ini=/dm/dmdba/config/dmdcr.ini mount

DSCSTD1进入bin目录启动到mount,执行以下命令:

./dmserver /dm/dmdba/config/dscstd1/dm.ini dcr_ini=/dm/dmdba/config/dmdcr.ini mount

DSCSTD2进入bin启动到mount,执行以下命令:

./dmserver /dm/dmdba/config/dscstd2/dm.ini dcr_ini=/dm/dmdba/config/dmdcr.ini mount

主库DSC任意节点修改数据库模式为 primary,执行以下命令:

SP_SET_OGUID(100011);
ALTER DATABASE PRIMARY;

备库DSCSTD修改数据库模式为 standby,执行以下命令:

SP_SET_OGUID(100011);
ALTER DATABASE STANDBY;

2.启动守护进程

dmdba 用户下,到数据库安装目录的 bin 下执行(所有节点都执行)。
DSC1

./dmwatcher /dm/dmdba/config/dsc1/dmwatcher.ini

DSC2

./dmwatcher /dm/dmdba/config/dsc2/dmwatcher.ini

DSCSTD1

./dmwatcher /dm/dmdba/config/dscstd1/dmwatcher.ini

DSCSTD2

./dmwatcher /dm/dmdba/config/dscstd2/dmwatcher.ini

守护进程启动后,会将 Mount 的实例 Open。

3.配置监视器 dmmonitor.ini,本示例在备库dscstd1上配置

新建dmmonitor.ini文件

vi /dm/dmdata/config/dmmonitor.ini 

添加以下内容:

MON_DW_CONFIRM = 0 #0监控监视器模式 1确认监视器模式
MON_LOG_PATH = /dm/dmdata/monitor_log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 64
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 0
[GRP1]
MON_INST_OGUID = 100011
MON_DW_IP = 10.10.10.141:3567/10.10.10.142:3567        #心跳地址:端口
MON_DW_IP = 10.10.10.151:3567/10.10.10.152:3567

启动监视器,执行以下命令:

./dmmonitor /dm/dmdata/config/dmmonitor.ini 

启动后输入 show 命令查看集群状态。

六、注册服务

以上启动为前台方式启动,仅用户搭建过程中验证配置。配置没问题后需要将实例,守护进程和确认监视器注册为系统服务。
使用 root 用户,到数据库安装目录的 script/root 下,执行。

1.注册服务

注册守护进程服务(主备库都执行)。
节点dsc1

./dm_service_installer.sh -t dmwatcher -p dsc1 -watcher_ini /dm/dmdba/config/dsc1/dmwatcher.ini

节点dsc2

./dm_service_installer.sh -t dmwatcher -p dsc2 -watcher_ini /dm/dmdba/config/dsc2/dmwatcher.ini

节点dscstd1

./dm_service_installer.sh -t dmwatcher -p dscstd1 -watcher_ini /dm/dmdba/config/dscstd1/dmwatcher.inii

节点dscstd2

./dm_service_installer.sh -t dmwatcher -p dscstd2 -watcher_ini /dm/dmdba/config/dscstd2/dmwatcher.ini

注册监视器服务(只需在监视器服务器上执行),执行以下命令:

./dm_service_installer.sh -t dmmonitor -p confirm -monitor_ini /dm/dmdada/config/dmmonitor.ini

2.以服务方式启动

主备库在各自节点启动数据库实例,执行以下命令:

systemctl start DmServiceds1
systemctl start DmServiceds2
systemctl start DmServicedsstd1
systemctl start DmServicedsstd2

主备库在各自节点启动守护进程,执行以下命令:

systemctl start DmWatcherServicedsc1
systemctl start DmWatcherServicedsc2
systemctl start DmWatcherServicedscstd1
systemctl start DmWatcherServicedscstd2

监控服务器(主备外)启动监视器,执行以下命令:

systemctl start DmMonitorServiceconfirm

七、disql 客户端验证

使用 disql 客户端登录主库,创建测试表,插入数据,执行以下命令:

./disql SYSDBA/SYSDBA@192.168.16.141:5236

SQL 提示符下执行以下命令:

create table test(id int);
insert into test values (1);
commit;

使用 disql 客户端登录备库,查询测试表验证,执行以下命令:

./disql SYSDBA/SYSDBA

SQL 提示符下执行以下命令:

select * from test;
服务器[LOCALHOST:5236]:处于备库打开状态
登录使用时间: 6.908(毫秒)
disql V8
SQL> select * from test;

行号     ID         
---------- -----------
1          1

已用时间: 9.111(毫秒). 执行号:2.

总结

更多信息可前往达梦官网社区
https://eco.dameng.com/docs/zh-cn/ops/standard-dsc-cluster.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值