达梦mpp+主备 详细过程

1、安装软件步骤参照 dm_dw.txt

第一节点           第二节点
EP01 (主)         EP02 (主)
EP12 (备)         EP11 (备)

2、安装mpp 主备

--------------------第一节点 0.101

(1)初始化实例
EP01主库:

./dminit PATH=/dm8/dmdata DB_NAME=EP01 INSTANCE_NAME="EP01" PORT_NUM=5239

EP12备库:

./dminit PATH=/dm8/dmdata DB_NAME=EP12 INSTANCE_NAME="EP12" PORT_NUM=5240

(2)初始化完成后,分别启动和停库一次
EP01主库:

./dmserver /dm8/dmdata/EP01/dm.ini

EP12备库:

cd /dm8/dmdbms/bin
./dmserver /dm8/dmdata/EP12/dm.ini

--------------------第二节点 0.102

(1)初始化实例
EP02主库:

cd /dm8/dmdbms/bin
./dminit PATH=/dm8/dmdata DB_NAME=EP02 INSTANCE_NAME="EP02" PORT_NUM=5239

EP11备库:

cd /dm8/dmdbms/bin
./dminit PATH=/dm8/dmdata DB_NAME=EP11 INSTANCE_NAME="EP11" PORT_NUM=5240

(2)初始化完成后,分别启动和停库一次
EP02主库:

cd /dm8/dmdbms/bin
./dmserver /dm8/dmdata/EP02/dm.ini

EP11备库:

cd /dm8/dmdbms/bin
./dmserver /dm8/dmdata/EP11/dm.ini

3、备份还原


(1)在服务器dm01上对主库EP01进行脱机备份:

cd /dm8/dmdbms/bin
./dmrman ctlstmt="backup database '/dm8/dmdata/EP01/dm.ini' full to BACKUP_FILE_01 backupset '/dm8/dmdata/EP01/BACKUP_FILE_01'"

(2)将备份拷贝到备库EP11所在的服务器dm02

cd /dm8/dmdata/EP01
scp -r BACKUP_FILE_01/ dmdba@192.168.1.102:/dm8/dmdata/EP11

(3)在服务器dm02执行脱机还原恢复更新
还原:

cd /dm8/dmdbms/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dm8/dmdata/EP11/dm.ini' FROM BACKUPSET '/dm8/dmdata/EP11/BACKUP_FILE_01'"

恢复:

cd /dm8/dmdbms/bin
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdata/EP11/dm.ini' FROM BACKUPSET '/dm8/dmdata/EP11/BACKUP_FILE_01'"

更新DB_MAGIC:

cd /dm8/dmdbms/bin
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdata/EP11/dm.ini' UPDATE DB_MAGIC"

6.4.2 将EP02的数据备份到EP12
(1)在服务器dm02上对主库EP02进行脱机备份:

cd /dm8/dmdbms/bin
./dmrman ctlstmt="backup database '/dm8/dmdata/EP02/dm.ini' full to BACKUP_FILE_11 backupset '/dm8/dmdata/EP02/BACKUP_FILE_11'"

(2)将备份拷贝传输到备库EP12所在的服务器dm01

cd /dm8/dmdata/EP02
scp -r BACKUP_FILE_11/ dmdba@192.168.1.101:/dm8/dmdata/EP12

(3)在服务器dm01执行脱机还原恢复更新
还原:

cd /dm8/dmdbms/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dm8/dmdata/EP12/dm.ini' FROM BACKUPSET '/dm8/dmdata/EP12/BACKUP_FILE_11'"

恢复:

cd /dm8/dmdbms/bin
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdata/EP12/dm.ini' FROM BACKUPSET '/dm8/dmdata/EP12/BACKUP_FILE_11'"

更新DB_MAGIC:

cd /dm8/dmdbms/bin
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdata/EP12/dm.ini' UPDATE DB_MAGIC"

4、 DM MPP配置

在两台服务器上配置 *******4个实例
(1)配置dm.ini文件

cd /dm8/dmdata/EP01/
vi dm.ini
INSTANCE_NAME        = EP01
PORT_NUM             = 5239         #数据库实例监听端口
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次的日志重演信息

cd /dm8/dmdata/EP12/
cd /dm8/dmdata/EP02/
cd /dm8/dmdata/EP11/

两节点检查:
grep -E 'INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|MAL_INI|ARCH_INI|MPP_INI|RLOG_SEND_APPLY_MON' /dm8/dmdata/EP*/dm.ini 

(2)配置dmmal.ini
各主库和备库的 dmmal.ini 配置必须完全一致。

MAL_CHECK_INTERVAL     = 5              #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5              #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME          = EP01           #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST               = 192.168.0.101  #MAL系统监听TCP连接的IP地址
MAL_PORT               = 5337           #MAL 系统监听TCP连接的端口
MAL_INST_HOST          = 192.168.1.101  #实例的对外服务IP地址
MAL_INST_PORT          = 5239           #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT            = 5253           #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT       = 5243           #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME          = EP02
MAL_HOST               = 192.168.0.102
MAL_PORT               = 5337
MAL_INST_HOST          = 192.168.1.102
MAL_INST_PORT          = 5239
MAL_DW_PORT            = 5253
MAL_INST_DW_PORT       = 5243

[MAL_INST3]
MAL_INST_NAME          = EP12
MAL_HOST               = 192.168.0.101
MAL_PORT               = 5338
MAL_INST_HOST          = 192.168.1.101
MAL_INST_PORT          = 5240
MAL_DW_PORT            = 5254
MAL_INST_DW_PORT       = 5244

[MAL_INST4]
MAL_INST_NAME          = EP11
MAL_HOST               = 192.168.0.102
MAL_PORT               = 5338
MAL_INST_HOST          = 192.168.1.102
MAL_INST_PORT          = 5240
MAL_DW_PORT            = 5254
MAL_INST_DW_PORT       = 5244

cp /dm8/dmdata/EP01/dmmal.ini /dm8/dmdata/EP12/dmmal.ini
scp /dm8/dmdata/EP01/dmmal.ini 192.168.1.102:/dm8/dmdata/EP02/dmmal.ini
scp /dm8/dmdata/EP01/dmmal.inil 192.168.1.102:/dm8/dmdata/EP11/dmmal.ini

(3)配置dmarch.ini
修改dmarch.ini,配置实时归档。除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。当前实例EP01是主库,需要向MPP备库EP11同步数据,因此实时归档的ARCH_DEST配置为EP11。

cd /dm8/dmdata/EP01   *******4个实例  *****

[ARCHIVE_REALTIME1]
ARCH_TYPE          =  REALTIME                 #实时归档类型
ARCH_DEST          =  EP11                     #实时归档目标实例名  *********************注意

[ARCHIVE_LOCAL1]
ARCH_TYPE          =  LOCAL                    #本地归档类型
ARCH_DEST          =  /dm8/dmdata/EP01/bak    #本地归档文件存放路径  ********************注意
ARCH_FILE_SIZE     =  128                      #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT   =  1024                     #单位 Mb,0 表示无限制,范围 1024~4294967294M

cd /dm8/dmdata/EP12/       **********注意对应关系**************
cd /dm8/dmdata/EP02/
cd /dm8/dmdata/EP11/

(4)配置dmmpp.ctl
dmmpp.ctl是二进制文件,由dmmpp.ini文本通过dmctlcvt工具转换而来先配置dmmpp.ini:

[service_name1]
mpp_seq_no    = 0
mpp_inst_name = EP01
[service_name2]
mpp_seq_no    = 1
mpp_inst_name = EP02

转换dmmpp.ini为dmmpp.ctl(bin目录下):

cd /dm8/dmdbms/bin
./dmctlcvt TYPE=2 SRC=/dm8/dmdata/EP01/dmmpp.ini DEST=/dm8/dmdata/EP01/dmmpp.ctl

cp /dm8/dmdata/EP01/dmmpp.ctl /dm8/dmdata/EP12/dmmpp.ctl
scp /dm8/dmdata/EP01/dmmpp.ctl 192.168.1.102:/dm8/dmdata/EP02/dmmpp.ctl
scp /dm8/dmdata/EP01/dmmpp.ctl 192.168.1.102:/dm8/dmdata/EP11/dmmpp.ctl

--------------------第一节点 0.101
-----配置主库EP01
(1)以mount方式启动主库

cd /dm8/dmdbms/bin
./dmserver /dm8/dmdata/EP01/dm.ini mount

(2)配置OGUID
启动命令行工具 DIsql,使用MPP类型为LOCAL方式,登录主库设置OGUID值。

cd /dm8/dmdbms/bin
./disql SYSDBA/SYSDBA@192.168.1.101:5239#"{mpp_type=local}"

SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
sp_set_oguid(1393331);
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
alter database primary;

-----配置备库EP12
(3)以mount方式启动备库

cd /dm8/dmdbms/bin
./dmserver /dm8/dmdata/EP12/dm.ini mount

(4)配置OGUID
启动命令行工具DIsql,使用MPP类型为LOCAL方式,登录主库设置OGUID值。

cd /dm8/dmdbms/bin
./disql SYSDBA/SYSDBA@192.168.1.101:5240#"{mpp_type=local}"

SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
sp_set_oguid(1393332);
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
ALTER DATABASE STANDBY;

--------------------第二节点 0.102
-----配置主库EP02
(1)以mount方式启动主库

cd /dm8/dmdbms/bin
./dmserver /dm8/dmdata/EP02/dm.ini mount

(2)配置OGUID
启动命令行工具DIsql,使用MPP类型为LOCAL方式,登录主库设置OGUID值。

cd /dm8/dmdbms/bin
./disql SYSDBA/SYSDBA@192.168.1.102:5239#"{mpp_type=local}"

SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
sp_set_oguid(1393332);
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
alter database primary;

-----配置主库EP11
(3)以mount方式启动备库

cd /dm8/dmdbms/bin
./dmserver /dm8/dmdata/EP11/dm.ini mount

(4)配置OGUID
启动命令行工具DIsql,使用MPP类型为LOCAL方式,登录主库设置OGUID值。

cd /dm8/dmdbms/bin
./disql SYSDBA/SYSDBA@192.168.1.102:5240#"{mpp_type=local}"

SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
sp_set_oguid(1393331);
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
ALTER DATABASE STANDBY;

------------------------------守护进程
dm01 dmwatcher.ini

vi /dm8/dmdata/EP01/dmwatcher.ini

[GRP1]
DW_TYPE              = GLOBAL                                #全局守护类型
DW_MODE              = AUTO                                  #自动切换模式
DW_ERROR_TIME        = 10                                    #远程守护进程故障认定时间
INST_RECOVER_TIME    = 60                                    #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME      = 10                                    #本地实例故障认定时间
INST_OGUID           = 1393331                               #守护系统唯一OGUID值
INST_INI             = /dm8/dmdata/EP01/dm.ini               #dm.ini配置文件路径
INST_AUTO_RESTART    = 1                                     #打开实例的自动启动功能
INST_STARTUP_CMD     = /dm8/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           = 1393332                               #守护系统唯一OGUID值
INST_INI             = /dm8/dmdata/EP12/dm.ini               #dm.ini配置文件路径
INST_AUTO_RESTART    = 1                                     #打开实例的自动启动功能
INST_STARTUP_CMD     = /dm8/dmdbms/bin/dmserver              #命令行方式启动
RLOG_SEND_THRESHOLD  = 0                                     #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                     #指定备库重演日志的时间阈值,默认关闭

dm02 dmwatcher.ini

vi /dm8/dmdata/EP02/dmwatcher.ini


[GRP1]
DW_TYPE              = GLOBAL                                #全局守护类型
DW_MODE              = AUTO                                  #自动切换模式
DW_ERROR_TIME        = 10                                    #远程守护进程故障认定时间
INST_RECOVER_TIME    = 60                                    #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME      = 10                                    #本地实例故障认定时间
INST_OGUID           = 1393331                               #守护系统唯一OGUID值
INST_INI             = /dm8/dmdata/EP11/dm.ini               #dm.ini配置文件路径
INST_AUTO_RESTART    = 1                                     #打开实例的自动启动功能
INST_STARTUP_CMD     = /dm8/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           = 1393332                               #守护系统唯一OGUID值
INST_INI             = /dm8/dmdata/EP02/dm.ini               #dm.ini配置文件路径
INST_AUTO_RESTART    = 1                                     #打开实例的自动启动功能
INST_STARTUP_CMD     = /dm8/dmdbms/bin/dmserver              #命令行方式启动
RLOG_SEND_THRESHOLD  = 0                                     #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                     #指定备库重演日志的时间阈值,默认关闭


-----------------起动守护进程,自动将实例open
dm01:

cd /dm8/dmdbms/bin
./dmwatcher /dm8/dmdata/EP01/dmwatcher.ini

dm02:

cd /dm8/dmdbms/bin
./dmwatcher /dm8/dmdata/EP02/dmwatcher.ini

---------------------监视器

第三台机器

vi /dm8/dmdata/dmmonitor.ini

MON_DW_CONFIRM      = 1                     #确认监视器模式
MON_LOG_PATH        =/dm8/dmdbms/log        #监视器日志文件存放路径
MON_LOG_INTERVAL    = 60                    #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 32                    #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0                     #不限定日志文件总占用空间

[GRP1]
MON_INST_OGUID      = 1393331               #组GRP1的唯一OGUID值

#以下配置为监视器到组GRP1的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP对应dmmal.ini中的 MAL_HOST,PORT对应dmmal.ini中的 MAL_DW_PORT
MON_DW_IP          = 192.168.0.101:5253
MON_DW_IP          = 192.168.0.102:5254

[GRP2]
MON_INST_OGUID     = 1393332                #组GRP2的唯一OGUID值

#以下配置为监视器到组GRP2的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP对应 dmmal.ini 中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP          = 192.168.0.101:5253
MON_DW_IP          = 192.168.0.102:5254

----------------起动监视器

cd /dm8/dmdbms/bin
./dmmonitor /dm8/dmdata/dmmonitor.ini

------------------------------------------------注册为系统服务


/dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p MPPWT01 -watcher_ini /dm8/dmdata/EP01/dmwatcher.ini
/dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p MPPWT02 -watcher_ini /dm8/dmdata/EP02/dmwatcher.ini


------------------------------------------------测试

disql SYSDBA/SYSDBA@192.168.1.101:5239

select name from v$instance;
create table DM_TEST_0604 as select * from sysobjects;
select count(*) from DM_TEST_0604;
create user DMTS identified by "DmTS#0614";
grant resource,public to DMTS;
select * from dba_role_privs where GRANTEE='DMTS';


disql SYSDBA/SYSDBA@192.168.1.102:5240
select name from v$instance;

select count(*) from DM_TEST_0604;
select * from dba_role_privs where GRANTEE='DMTS';



---------------------------遇到问题

1、本地登录报密码错误,全局登录没问题。刚安装,密码没有修改过。

[dmdba@dm1 ~]$ disql SYSDBA/SYSDBA*local@localhost:5236
[-2501]:用户名或密码错误.
disql V8
用户名:^C
[dmdba@dm1 ~]$
[dmdba@dm1 ~]$ disql SYSDBA/SYSDBA@localhost:5236

服务器[localhost:5236]:处于普通打开状态
登录使用时间 : 11.294(ms)
disql V8
SQL>

原因:DM7和DM8的写法不一样,DM8更复杂些

./disql SYSDBA/SYSDBA@192.168.1.64:5236#“{mpp_type=local}”

2、./dmmonitor /dm8/dmdata/dmmonitor.ini
监视器报错:

dmmonitor(mid:1652601407) create link to dmwatcher(192.168.0.102:5253) error, code=-9402, please check configuration!!!
dmmonitor(mid:1652601407) create link to dmwatcher(192.168.0.102:5253) error, code=-6010, oguid or group_name mismatch, please check configuration!!!

原因:
组GRP的唯一OGUID 不匹配

第二台主机 dmwatcher.ini 写成了这样,

[GRP1]
INST_OGUID           = 1393332                               #守护系统唯一OGUID值
INST_INI             = /dm8/dmdata/EP02/dm.ini               #dm.ini配置文件路径

[GRP2]
INST_OGUID           = 1393331                               #守护系统唯一OGUID值
INST_INI             = /dm8/dmdata/EP11/dm.ini               #dm.ini配置文件路径

虽然实例 oguid能对上,但忽略了 ”[GRP1] 1393332“ 应该为 ”1393331“

到此文章结束,有不足地方,欢迎批正!
更多达梦技术资讯,请访问达梦技术社区:
达梦数据库 - 新一代大型通用关系数据库 | 达梦云适配中心
https://eco.dameng.com/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值