DM7 达梦 数据库 数据守护(Data Watch) -- 实时主备环境搭建

1 环境说明

本示例中组名为“GRP1”,配置为实时主备,主库命名为“GRP1_RT_01 ”,备库命名为“GRP1_RT_02 ”。

配置环境说明:
主机类型     IP地址                                        实例名                           操作系统
主库         192.168.80.161 (外部服务)
                192.168.227.161(内部通信)     GRP1_RT_01                 redhat6.6
备库        192.168.80.162 (外部服务)
                192.168.227.162(内部通信)     GRP1_RT_02                redhat6.6
监控        192.168.80.160                                                                        redhat6.6

端口规划:
实例名                 PORT_NUM     DW_PORT          MAL_HOST               MAL_PORT     MAL_DW_PORT
GRP1_RT_01     5236                 5237                   192.168.227.161             5238             5239
GRP1_RT_02     5236                 5237                   192.168.227.162             5238              5239
一、数据准备
注:为了简化搭建流程,建议在主库上完成数据库的初始化,并进行相关配置文件的创建和修改后,
再将主机中数据库的文件夹scp到备机上并在备机修改部分配置文件的参数即可。

2集群实施步骤
2.1配置A机器
2.1.1实例、备份数据
(一)在主机上初始化数据库

若主机上之前没有数据库,则需要按如下步骤初始化数据库:
1、进入安装目录下的bin文件夹,执行./dminit工具
(dminit工具的相关参数可查阅《DM7系统管理员手册》7.3节表7.1),此处仅制定数据库安装路径,其他参数不指定即使用默认值:
dminit path=数据库实例路径

[dmdba@localhost ~]$ dminit help   默认的
SYSDBA_PWD                  set SYSDBA password(SYSDBA), password length must between 9 and 48
SYSAUDITOR_PWD              set SYSAUDITOR password(SYSAUDITOR), password length must between 9 and 48
DB_NAME                     database name(DAMENG)
INSTANCE_NAME               instance name(DMSERVER)   --修改数据库实例名字即可
PORT_NUM                    listener port(5236)

--初始化实例
source .bash_profile
[dmdba@bin]# dminit PATH=/dm7/data/   

--启动服务
[dmdba@bin]# dmserver /dm7/data/DAMENG/dm.ini
......
nsvr_process_before_open begin.
nsvr_process_before_open success.
SYSTEM IS READY.
已经启动成功,另起一个窗口执行,如果要结束的话,直接ctrl+C


在/data/dm7/script/root目录下有2个可执行程序,注意,均需要用root账号执行。
其中dm_service_installer.sh为安装服务的脚本,dm_service_uninstaller.sh为卸载脚本,本次安装执行过程如下:

其中dm_service_installer.sh命令参数及说明如下
-t     服务类型,包括dmimon,dmap,dmserver,dmwatch,dmrww,dmwmon,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr
-p     服务名后缀,对于dmimon,dmap服务类型无效    --实例名就可
-i     ini文件路径,对于dmimon,dmap服务类型无效
-d     dmdcr.ini文件路径,只针对dmserver服务类型生效,可选
-m     设置服务器启动模式open或mount,只针对dmserver服务类型生效,可选
-y     设置依赖服务,此选项只针对systemd服务环境下的dmserver和dmasmsvr服务生效
-s     服务脚本路径,设置则忽略除-y外的其他参数选项
-h     帮助

其中-i 参数中的/data/dm/data/testdb/dm.ini文件是在上一步初始化数据库后生成的。


2、注册数据库服务
进入安装路径下/script/root文件夹,执行./dm_service_installer.sh即可注册服务:
./dm_service_installer.sh -t dmserver -p 服务名后缀 -i ini文件路径

注册成功后将在安装目录下的bin文件夹生成以“”DmService+服务名后缀”命名的执行文件,
使用该文件并配合{start|stop|status|condrestart|restart}命令即可对数据库服务进行相应的操作。

3、对于新初始化的库,需要先正常启动并正常退出,关闭数据库后再进行后面的步骤。
4、在主库对各个配置文件进行配置,然后将整个数据文件夹(/opt/dmdbms/bin/DAMENG)scp到备库。
5、在备库对配置文件相关参数进行修改。


[root@localhost ~]# /dm7/script/root/dm_service_installer.sh -t dmserver -i /dm7/data/DAMENG/dm.ini -p GRP1_RT_01
Move the service script file(/dm7/bin/DmServiceGRP1_RT_01 to /etc/rc.d/init.d/DmServiceGRP1_RT_01)
Finished to create the service (DmServiceGRP1_RT_01)

ctrl+C关闭前一个启动的窗口,正常启停服务一次,
root@localhost ~]# service DmServiceGRP1_RT_01 start
Starting DmServiceGRP1_RT_01: stty: standard input: Inappropriate ioctl for device
                                                           [ OK ]
[root@localhost ~]# service DmServiceGRP1_RT_01 stop
Stopping DmServiceGRP1_RT_01:                              [ OK ]
[root@localhost ~]#

状态停留的stop,然后修改主库的文件
注册成功后将在安装目录下的bin文件夹生成以“”DmService+服务名后缀”命名的执行文件,使用该文件并配合{start|stop|status|condrestart|restart}命令即可对数据库服务进行相应的操作。
3、对于新初始化的库,需要先正常启动并正常退出,关闭数据库后再进行后面的步骤。(开归档,正常启动)
4、在主库对各个配置文件进行配置,然后将整个数据文件夹(/opt/dmdbms/bin/DAMENG)scp到备库。
5、在备库对配置文件相关参数进行修改。


--------------------------------------------------------

3.数据守护搭建
在搭建数据守护系统前,应注意数据守护系统中各实例使用的 DM 服务器版本应一致,同时还应注意各实例所在主机的操作系统位数、大小端模式、时区及时间设置都应一致,以
免系统在运行时出现意想不到的错误。
3.1 数据准备
配置数据守护之前,必须先同步实例数据,确保两者保持完全一致;主库可以是新初始化的数据,也可以是正在生产、使用中的数据。DM 提供了两种方式初始化同步实例数据,
数据文件拷贝以及备份还原方式。不能使用分别初始化库的方法,原因如下:
1. 每个库都有一个永久魔数(permenant_magic),主库传送日志时会判断这个值是否一样,确保来自同一个库,不同的库传送不了日志
2. 由于 dminit 初始化数据库时,会生成随机密钥用于加密,每次生成的密钥都不相同,备库无法解析采用主库密钥加密的数据

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

准备数据时,如果主库是新初始化的库,先正常启动并正常退出,然后再使用数据文件拷贝或者备份还原方式准备备库数据。3.1.1 数据文件拷贝
如果搭建数据守护之前,数据库系统已经上线运行了,那么我们可以通过拷贝数据文件
的方式实现主库和备库的数据同步。具体步骤包括:
1. 正常关闭数据库
service DmServiceGRP1_RT_01 stop
2. 严格按照数据文件在主库上的分布,拷贝数据文件到备库的对应目录
3. 如果数据文件统一存放在一个目录下,则直接拷贝整个目录即可

scp -r /dm7/data/ dmdba@192.168.80.162:/dm7/data/

3. 使用 scp 命令拷贝目录时要加上 /
我在使用 scp 命令从主库向备库拷贝全库备份目录时,提示目录不存在,在目录后加上斜杠后问题解决。

或者创建目录:
备机创建目录data
mkdir /dm7/data


[dmdba@localhost DAMENG]$ pwd
/dm7/data/DAMENG
[dmdba@localhost DAMENG]$ ll *ini
-rw-r--r-- 1 dmdba dinstall   252 Jun  3 17:23 dmarch.ini
-rw-r--r-- 1 dmdba dinstall 44029 Jun  3 17:22 dm.ini
-rw-r--r-- 1 dmdba dinstall   479 Jun  3 17:16 sqllog.ini
[dmdba@localhost DAMENG]$

 

#####数据守护搭建    官网文档--136页

配置实时主备
以下配置可以先在主库完成,完成所有配置后将整个数据库文件夹scp到备库后,再在备库对部分主备不同的配置参数进行局部修改即可。
这样可以减少配置工作量,还能确保主备必须一致的参数一定相同。
注意:在初始化数据库后,部分配置文件可能不存在,需要自己手动创建。

cd /dm7/data/DAMENG
3.1.2配置 dm.ini    备份之后,清空源文件,直接添加以下内容   ####这样还不行,必须得在里面修改  ,实例名和DW_PORT这两个
注:备库需要修改INSTANCE_NAME。

INSTANCE_NAME              = GRP1_RT_01  #数据库实例名      ### 修改  
PORT_NUM                       = 5236  #数据库实例监听端口
DW_PORT           = 5237  #守护环境下,监听守护进程连接端口  ### 修改  
DW_INACTIVE_INTERVAL       = 60  #接收守护进程消息超时时间              ###最后添加
ALTER_MODE_STATUS          = 0  #不允许手工方式修改实例模式/状态     ### 修改
ENABLE_OFFLINE_TS          = 2  #不允许备库OFFLINE表空间        ### 修改
MAL_INI                    = 1  #打开MAL系统                   ### 修改
ARCH_INI                   = 1  #打开归档配置               ### 修改
RLOG_SEND_APPLY_MON        = 64  #统计最近64次的日志发送信息


3.1.4配置 dmmal.ini    
配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,
MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,
MAMAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:


MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
 MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
 MAL_HOST = 192.168.227.161 #MAL 系统监听 TCP 连接的 IP 地址  ---(内网1)
 MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口
 MAL_INST_HOST = 192.168.80.161 #实例的对外服务 IP 地址---(外网1)
 MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
 MAL_DW_PORT = 5239 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
 MAL_INST_NAME = GRP1_RT_02
 MAL_HOST = 192.168.227.162     ---(内网2)
 MAL_PORT = 5238
 MAL_INST_HOST = 192.168.80.162---(外网2)
 MAL_INST_PORT = 5236
 MAL_DW_PORT = 5239

 

3.3 配置 dmarch.ini
修改 dmarch.ini,配置本地归档和实时归档。除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。
当前实例 GRP1_RT_01 是主库,需要向 GRP1_RT_02(实时备库)同步数据,因此实时归档的 ARCH_DEST 配置为 GRP1_RT_02。
注:备库需要修改ARCH_DEST为GRP1_RT_01。
   
[ARCHIVE_TIMELY1]
  ARCH_TYPE                = TIMELY  #即时归档类型
  ARCH_DEST                = GRP1_RT_02  #即时归档目标实例名
[ARCHIVE_LOCAL1]
  ARCH_TYPE                = LOCAL  #本地归档类型
  ARCH_DEST                = /dm7/data/DAMENG/arch/  #本地归档文件存放路径
  ARCH_FILE_SIZE           = 256  #单位MB,本地单个归档文件最大值
  ARCH_SPACE_LIMIT         = 0  #单位MB,0表示无限制,范围1024~4294967294MB

 


4 配置 dmwatcher.ini及dmwatcher.ctl
注:dmwatcher.ini主要用于后面生成dmwatcher.ctl,两个文件主备一致,无需修改任何参数。

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL   #故障手动切换模式----修改
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dm7/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm7/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

 

3.5 配置 dmwatcher.ctl
同一个守护进程组,必须使用同一份 dmwatcher.ctl。因此,只需要使用 dmctlcvt 工具生成一份 dmwatcher.ctl 文件,然后分别拷贝到各个数据库目录下即可。
在配置完成 dmwatcher.ini 后,使用 dmctlcvt 工具生成 dmwatcher.ctl:

[dmdba@localhost DAMENG]$ pwd
/dm7/data/DAMENG
[dmdba@localhost DAMENG]$ vim dmmal.ini
[dmdba@localhost DAMENG]$ vim dmarch.ini
[dmdba@localhost DAMENG]$ vim dmwatcher.ini
[dmdba@localhost DAMENG]$ dmctlcvt TYPE=3 SRC=/dm7/data/DAMENG/dmwatcher.ini DEST=/dm7/data/DAMENG
DMCTLCVT V7.6.0.142-Build(2019.03.12-103811)ENT
Can not open ini file !
convert txt to ctl success!
[dmdba@localhost DAMENG]$

 


dmdba@localhost DAMENG]$ cd GRP1/
[dmdba@localhost GRP1]$ ll
total 4
-rw-r--r-- 1 dmdba dinstall 512 Jun  3 17:45 dmwatcher.ctl
[dmdba@localhost GRP1]$ mv dmwatcher.ctl ../
[dmdba@localhost GRP1]$

#默认生成控制文件有个子目录,需要移动到父目录中:
#拷贝生成的 dmwatcher.ctl 文件到数据文件目录/dm7/data/DAMENG
[dmdba@localhost DAMENG]$ ll dmwatcher.ctl
-rw-r--r-- 1 dmdba dinstall 512 Jun  3 17:52 dmwatcher.ctl
[dmdba@localhost DAMENG]$ pwd
/dm7/data/DAMENG

3.1. 主备库配置文件能拷贝就不要手工设置。
dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini这四个配置文件必须进行设置和创建才能启动数据守护,适合拷贝的配置文件有下面几个。

dmmal.ini:这个文件两个节点的配置完全一样,在主节点配置好后直接复制到备节点即可。
我在实验时主节点实例能 mount 启动,备节点相应实例不能 mount 启动,我手工反复修改备节点 dmmal.ini文件半小时未能解决。
最后,直接删除备节点 dmmal.ini 文件,再将主节点 dmmal.ini 文件拷贝到 备节点,再次以 mount 方式启动 备节点成功。
**dmarch.ini:**基本一样,将 ARCH_DEST=DW01 改成对方的实例名即可。
dmwatcher.ini:两个节点的配置完全一样,在主节点配置好后直接复制到备节点即可。
dm.ini: 里面有实例的大量配置信息,不适合拷贝
命令:
scp /dm/data/DW01/dmmal.ini 192.168.1.20:dm/data/DW02/


3.2  配置B机器,只需要修改以下两个文件即可
vim dm.ini             ###INSTANCE_NAME = GRP1_RT_02
vim dmarch.ini         ###ARCH_DEST = GRP1_RT_01

 

4、以mount启动主库和备库

4.1 检查数据一致性
依次到每个实例上,切换到执行码目录/dm7/bin,以 mount 方式启动数据库。
dmserver /dm7/data/DAMENG/dm.ini mount

[dmdba@localhost ~]$ dmserver /dm7/data/DAMENG/dm.ini mount
version info: enterprise
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V7.6.0.142-Build(2019.03.12-103811)ENT  startup...
License will expire on 2020-09-10
ckpt lsn: 39931
ndct db load finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
到这个状态,数据库已经可以登录了,但是必须得另外打开一个窗口去用disql登录
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

启动命令行工具 DIsql,分别登录各个实例查询 LSN 值,如果主库和备库的 FILE_LSN和 CUR_LSN 值相同,可以确保数据完全一致。

SQL>select file_LSN, cur_LSN from v$rlog;
--结果如下;
行号 FILE_LSN CUR_LSN
LINEID     FILE_LSN             CUR_LSN             
---------- -------------------- --------------------
1          39931                39931


检查实例的永久魔数是否一致:
SQL>select permanent_magic;
--结果如下;
行号 PERMANENT_MAGIC
LINEID     PERMANENT_MAGIC     
---------- --------------------
1          1370451585

确保 LSN 和永久魔数都一致的情况下,正常关闭各个实例,继续配置数据守护。
4.2 守护进程控制文件
对于故障场景中,某个全局守护类型的实例所在机器故障,数据无法继续使用的情况下,
从当前的有效主库直接拷贝数据文件或者备份还原方式重新准备数据后,需要同时拷贝主库
的守护进程控制文件 dmwatcher.ctl 到实例的数据文件目录下。

 

[dmdba@localhost ~]$ disql
disql V7.6.0.142-Build(2019.03.12-103811)ENT
username:
password:

Server[LOCALHOST:5236]:mode is normal, state is mount
login used time: 6.353(ms)
SQL> sp_set_oguid(453331);
DMSQL executed successfully
used time: 31.936(ms). Execute id is 1.
系统通过 OGUID 值确定一个守护进程组,由用户保证 OGUID 值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的 OGUID 值。

主库修改数据库模式
在主库的bin文件夹下执行./disql启动命令行工具,并执行以下语句修改数据库为 primary 模式:

SQL>alter database primary;

 

配置备库
1)以mount方式启动;
dmserver /dm7/data/DAMENG/dm.ini mount

2)设置OGUID值,值需要和主库的值保持一致;
sp_set_oguid(453331);

3)修改数据库模式,如果当前数据库不是 normal 模式,需要先修改 dm.ini 中ALTER_MODE_STATUS 值为 1,
允许修改数据库模式,修改 Standby 模式成功后再改回为 0。如果是 normal 模式,请忽略下面的第 1 步和第 3 步:
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); ----第 1 步
SQL>alter database standby; ----第 2 步
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); ----第 3 步

 

4.3配置监视器
确认监视器的主要功能是在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。
配置监视器主要是在监视器服务器或虚拟机上配置dmmonitor.ini文件,该文件建议与dm.ini放在同一个文件夹中。
配置文件MON_DW_IP 中的 IP 和 PORT 和dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致:

4.3.1配置 dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm7/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值 #以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.227.161:5239      (内网1)
MON_DW_IP = 192.168.227.162:5239      (内网2)

 

有中文注释可能不行,另外需要注意[GRP1]需要与dmwatcher.ini中的一致
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm7/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.227.161:5239
MON_DW_IP = 192.168.227.162:5239  


5 启动守护进程
启动各个主备库上的守护进程:
[dmdba@localhost DAMENG1]$ dmwatcher /dm7/data/DAMENG/dmwatcher.ini
DMWATCHER[2.1] V7.6.0.142-Build(2019.03.12-103811)ENT
DMWATCHER[2.1] IS READY

[dmdba@localhost DAMENG2]$ dmwatcher /dm7/data/DAMENG/dmwatcher.ini
DMWATCHER[2.1] V7.6.0.142-Build(2019.03.12-103811)ENT
DMWATCHER[2.1] IS READY

守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。
守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例 Open,并切换为 Open 状态。

6启动监视器
6.1启动监视器:
dmmonitor /dm7/data/DAMENG/dmmonitor.ini
监视器提供一系列命令,支持当前守护系统状态查看以及故障处理,可输入 help 命令,
查看各种命令说明使用,结合实际情况选择使用。
至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,
在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处
于 Open 状态,即为正常运行状态。

 

https://www.cndba.cn/dave/article/3866?tdsourcetag=s_pctim_aiomsg

6.2 监视器使用
命令    含义
list    列出所有实例对应守护进程的配置信息
show    显示所有实例组的信息
tip    查看系统当前运行状态
login    登录监视器
logout    退出登录
choose switchover <组名>    显示可切换为Primary实例的列表
switchover <组名>.<实例名>    使用指定组的指定实例,切换为Primary实例
choose takeover <组名>    显示可接管故障Primary实例的列表
takeover <组名>.<实例名>    使用指定组的指定实例,接管故障Primary实例
choose takeover force <组名>    显示可强制接管故障Primary实例的列表
takeover force <组名>.<实例名>    使用指定组的指定实例,强制接管故障Primary实例
主机故障后,登录备机执行SELECT SF_DW_CHECK_TAKEOVER();返回1代表可以接管,0表示不能接管。
监视器提供一系列命令,支持当前守护系统状态查看以及故障处理,可输入 help 命令,查看各种命令说明使用,结合实际情况选择使用。
至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。
7 验证
7.1 主库创建测试表

[dave@www.cndba.cn1 ~]$ disql SYSDBA/SYSDBA

Server[LOCALHOST:5236]:mode is primary, state is open
login used time: 9.780(ms)
disql V7.6.0.95-Build(2018.09.13-97108)ENT
Connected to: DM 7.1.6.95
SQL> create table cndba as select * from sysobjects;
executed successfully
used time: 42.341(ms). Execute id is 4.
SQL> select count(1) from cndba;

LINEID     COUNT(1)            
---------- --------------------
1          1274

used time: 1.756(ms). Execute id is 5.
SQL>

7.2 备库查询

[dave@www.cndba.cn2 ~]$ disql SYSDBA/SYSDBA@LOCALHOST:5237

Server[LOCALHOST:5237]:mode is standby, state is open
login used time: 20.949(ms)
disql V7.6.0.95-Build(2018.09.13-97108)ENT
Connected to: DM 7.1.6.95
SQL> select count(1) from cndba;

LINEID     COUNT(1)            
---------- --------------------
1          1274

used time: 5.907(ms). Execute id is 4.
SQL>

同步正常。

8 注册服务

在上面的测试过程,守护金进程和监视器都是我们直接启动的,如果命令中断,就无法运行。 因此需要将这些注册到服务里,方便管理。 注册过程

[root@dm2 ~]# cd /dm7/script/root
[root@dm2 root]# ./dm_service_installer.sh -help
Usage: dm_service_installer.sh -t service_type [-p service_name_postfix] [-i ini_file] [-d dcr_ini_file] [-m open|mount]
  or dm_service_installer.sh [ -s service_file_path ]
  or dm_service_installer.sh -h
   -t     Service Type, include: dmimon,dmap,dmserver,dmwatch,dmrww,dmwmon,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr.
   -p     Service Name Postfix, is invalid for dmimon,dmap.
   -i     The path of the ini file, is invalid for dmimon,dmap.
   -d     The path of dmdcr.ini, is valid for dmserver only, select.
   -m     Set the start modeof the server, include:open or mount, is valid for dmserver only, select.
   -s     The path of the service script file, if set this parameter, and ignore other parameter.
   -h     Help
[root@dm2 root]#

DM实例注册参考如下博客,这里不再描述:

    DM7 达梦数据库 通过dminit 创建 并 注册 数据库实例
    https://www.cndba.cn/dave/article/3580

8.1 注册守护进程

分别在所有节点用root用户执行:

#备库:
#-p 指定的是服务名的后缀:
[root@dm2 root]# /dm7/script/root/dm_service_installer.sh -t dmwatcher -i /dm7/data/DAMENG/dmwatcher.ini -p GRP1_RT_02
Move the service script file(/dm7/bin/DmWatcherServiceGRP1_RT_02 to /etc/rc.d/init.d/DmWatcherServiceGRP1_RT_02)
Finished to create the service (DmWatcherServiceGRP1_RT_02)
[root@dm2 root]#

#主库:
[root@dm1 ~]# /dm7/script/root/dm_service_installer.sh -t dmwatcher -i /dm7/data/DAMENG/dmwatcher.ini -p GRP1_RT_01
Move the service script file(/dm7/bin/DmWatcherServiceGRP1_RT_01 to /etc/rc.d/init.d/DmWatcherServiceGRP1_RT_01)
Finished to create the service (DmWatcherServiceGRP1_RT_01)
[root@dm1 ~]#


#启动服务:
[dave@www.cndba.cn1 GRP1_DAVE_01]$ service DmWatcherServiceGRP1_RT_01 start
Starting DmWatcherServicedm1:                              [ OK ]
[dave@www.cndba.cn1 GRP1_DAVE_01]$
[dave@www.cndba.cn1 GRP1_DAVE_01]$ ps -ef|grep watcher
dmdba    27120     1  0 13:08 pts/3    00:00:00 /dm7/bin/svc_ctl_linux dmwatcher /dm7/data/DAMENG/dmwatcher.ini
dmdba    27179 25475  0 13:08 pts/3    00:00:00 grep watcher
[dave@www.cndba.cn1 GRP1_DAVE_01]$

[dave@www.cndba.cn2 GRP1_DAVE_02]$ service DmWatcherServiceGRP1_RT_02 start
Starting DmWatcherServicedm2:                              [ OK ]
[dave@www.cndba.cn2 GRP1_DAVE_02]$ ps -ef|grep watcher
dmdba    10889     1  0 13:08 pts/1    00:00:00 /dm7/bin/svc_ctl_linux dmwatcher /dm7/data/GRP1_DAVE_02/dmwatcher.ini
dmdba    10949 10340  0 13:09 pts/1    00:00:00 grep watcher
[dave@www.cndba.cn2 GRP1_DAVE_02]$

8.2 注册监视器

在监视节点用root用户执行:

[root@monitor ~]# /dm7/script/root/dm_service_installer.sh -t dmmonitor -i /dm7/data/DAMENG/dmmonitor.ini -p GRP1_RT
Move the service script file(/dm7/bin/DmMonitorServiceGRP1_RT to /etc/rc.d/init.d/DmMonitorServiceGRP1_RT)
Finished to create the service (DmMonitorServiceGRP1_RT)
[root@monitor ~]#


启动service:
[root@monitor ~]# service DmMonitorServiceGRP1_RT start
Starting DmMonitorServicedave:                             [ OK ]
[root@monitor ~]# ps -ef|grep monitor
avahi     1274     1  0 03:54 ?        00:00:00 avahi-daemon: running [monitor-2.local]
dmdba    22847     1  0 07:10 pts/1    00:00:00 /dm7/bin/svc_ctl_linux dmmonitor /dm7/data/dmmonitor.ini
root     22865 22525  0 07:11 pts/1    00:00:00 grep monitor
[root@monitor ~]#

至此2节点的数据守护搭建完成。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值