注册
DM8DW集群部署及验证测试
培训园地/ 文章详情 /

DM8DW集群部署及验证测试

山水清音 2023/09/07 1315 0 0

    本次模拟DM8DW集群部署及验证。

1. 安装包版本

    数据库: dm8_20230418_x86_rh6_64.iso
    操作系统: 银河麒麟V10 4.19.90-24.4.v2101.ky10.x86_64

2. 环境

2.1 DMDW集群规划

1.png

2.2基础环境设置

    如下操作三台主机都需依次执行:

  关闭防火墙和禁用开机启动:
[root@8-rwc89-node1 /]# systemctl stop firewalld
[root@8-rwc89-node1 /]# systemctl disable firewalld
[root@8-rwc89-node1 /]# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

  关闭SELINUX:
vi /etc/selinux/config
SELINUX=disabled
cat /etc/selinux/config

  创建dinstall组:
groupadd dinstall
  如下创建dmdba用户:
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba

  调整系统参数:
cat >> /etc/security/limits.conf << EOF   
dmdba  soft  nofile  65536
dmdba  hard  nofile  65536
dmdba  soft  core unlimited
dmdba  hard  core unlimited
EFO

  调整IO调度算法:
echo 'echo deadline > /sys/block/sdb/queue/scheduler' >> /etc/rc.local
source /etc/rc.local  

  添加用户环境变量:
su - dmdba
vi ~/.bash_profile
export DM_HOME="/dm8"
export LD_LIBRARY_PATH="/dm8/bin:$LD_LIBRARY_PATH"
export PATH="$DM_HOME/bin:$PATH"
source ~/.bash_profile

  创建相关目录:
mkdir /dm8
chown -R dmdba.dinstall /dm8/

2.3数据库部署

    DM数据库在Linux 环境下支持命令行安装和图形化安装,具体数据库部署可参考如下连接,这里不做赘述:
https://eco.dameng.com/community/training/5003d1d2c62b0e2e9d9732c0d2a7461f

3. 初始化实例及数据准备

3.1主机初始化实例、注册、开启归档:

  初始化实例:
[root@8-rwc89-node1 data]# su - dmdba
[dmdba@8-rwc89-node1 ~]$cd /dm8/bin
[dmdba@8-rwc89-node1/dm8/bin]$./dminit DB_NAME=DM01 INSTANCE_NAME=DMSVR01 PORT_NUM=5236 PATH=/dm8/data PAGE_SIZE=32 EXTENT_SIZE=16 CASE_SENSITIVE=1
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2024-04-17
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
 log file path: /dm8/data/DM01/DM0101.log
 log file path: /dm8/data/DM01/DM0102.log
write to dir [/dm8/data/DM01].
create dm database success. 2023-08-23 21:27:21

  注册数据库服务并启动:
[root@8-rwc89-node1 script]# cd /dm8/script/root/
[root@8-rwc89-node1 root]# ./dm_service_installer.sh -t dmserver -p DMSVR01 -dm_ini /dm8/data/DM01/dm.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSVR01.service → /usr/lib/systemd/system/DmServiceDMSVR01.service.
创建服务(DmServiceDMSVR01)完成
[root@8-rwc89-node1 root]# systemctl start DmServiceDMSVR01.service

  开启归档:
SQL> alter database mount;
操作已执行
已用时间: 2.853(毫秒). 执行号:0.
SQL>alter database add archivelog 'DEST=/dm8/dmarch,TYPE=local,FILE_SIZE=128,SPACE_LIMIT=2048';
操作已执行
已用时间: 2.183(毫秒). 执行号:0.
SQL> alter database archivelog;
操作已执行
已用时间: 19.797(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 7.519(毫秒). 执行号:0.

3.2联机备份、脱机还原方式:

    本次采用的联机备份、脱机还原方式。

  对主库进行联机备份操作
SQL> backup database full BACKUPSET '/dm8/dmbak/db_full_bak_01';
  拷贝备份文件到备库所在机器
scp -r db_full_bak_01 root@172.26.8.90:/dm8/dmbak
  在备机执行脱机数据库还原与恢复 ./dmrman CTLSTMT="RESTORE DATABASE TO '/dm8/data/DM01' FROM BACKUPSET '/dm8/dmbak/db_full_bak_01'"
./dmrman CTLSTMT="RECOVER DATABASE  '/dm8/data/DM01/dm.ini' FROM BACKUPSET '/dm8/dmbak/db_full_bak_01'"
./dmrman CTLSTMT="RECOVER DATABASE  '/dm8/data/DM01/dm.ini' UPDATE DB_MAGIC"

4. 配置主备库

4.1依次配置主库dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini、启动、修改oguid、改模式

    1.在主库按照集群规划配置dm.ini,具体如下:

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

    2.配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,主库配置如下:
cp /dm8/samples/ini_script/UTF-8/dmmal_example.ini dmmal.ini
vim dmmal.ini

MAL_CONN_FAIL_INTERVAL = 30 #判定 MAL 链路断开的时间
[MAL_INST1]
 MAL_INST_NAME = DMSVR01  #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
 MAL_HOST = 192.168.1.89  #MAL 系统监听 TCP 连接的 IP 地址
 MAL_PORT = 55101  #MAL 系统监听 TCP 连接的端口
 MAL_INST_HOST = 172.26.8.89  #实例的对外服务 IP 地址
 MAL_INST_PORT = 5236  #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 65101   #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 45101  #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
 MAL_INST_NAME =  DMSVR02
 MAL_HOST = 192.168.1.90
 MAL_PORT = 55121
 MAL_INST_HOST = 172.26.8.90
 MAL_INST_PORT = 5236
 MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121

    3.修改 dmarch.ini,配置本地归档和实时归档。主库配置如下:

[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMSVR02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 2048 #单位 Mb,0 表示无限制,范围 1024~2147483647M

    4.配置主库dmwatcher.ini, 配置守护进程,配置为全局守护类型,使用自动切换模式。
cp /dm8/samples/ini_script/UTF-8/dmwatcher_example.ini dmwatcher.ini
vim dmwatcher.ini

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

    5.启动主库,以 Mount 方式启动主库

./dmserver /dm8/data/DM01/dm.ini mount

    注意:一定要以 mount 方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo 日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。
    6.设置主库OGUID
    启动命令行工具 disql,登录主库设置 OGUID 值。

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

    注意: 系统通过 OGUID 值确定一个守护进程组,由用户保证 OGUID 值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的 OGUID 值。
    7.修改主库模式
    启动命令行工具 disql,登录主库修改数据库为 primary 模式

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

4.2依次配置备库dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini、启动、修改oguid、改模式

    1.调整备库dm.ini 参数修改如下:

#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = DMSVR02
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

    2.配置备库dmmal.ini
    因各主备库的 dmmal.ini 配置必须完全一致,故从主机scp一个dmmal.ini文件到备库即可。
    3.配置备库dmarch.ini
    修改 dmarch.ini,配置本地归档和实时归档。当前实例 DMSVR02是备库,如 DMSVR01切换为新的备库,需要向DMSVR01步数据,因此实时归档的 ARCH_DEST 配置为DMSVR01。

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME  #实时归档类型
ARCH_DEST = DMSVR01 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 2048 #单位 Mb,0 表示无限制,范围 1024~2147483647M

    注意:可将主库dmarch.ini scp发送到备库做微调即可。
    4.配置备库dmwatcher.ini
    修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。
cp /dm8/samples/ini_script/UTF-8/dmwatcher_example.ini dmwatcher.ini
vim dmwatcher.ini

[GROUP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI =  /dm8/data/DM01/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
注意:可将主库dmwatcher.ini scp发送到备库,调整去掉RLOG_SEND_THRESHOLD保持即可。

    5.启动备库
    以mount方式启动备库

./dmserver /dm8/data/DM01/dm.ini mount 

    6.修改备库oguid
    启动命令行工具 dIsql,登录备库设置 OGUID 值。

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

    7.修改备库模式
    启动命令行工具 disql,登录备库修改数据库为 standby 模式。

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
SQL>alter database standby;   
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);  

4.3 配置监视器

    配置监视器由于主库和实时备库的守护进程配置为自动切换模式,因此这里必须配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知 实时备库接管为新的主库,具有自动故障处理的功能。 配置确认监视器时可以选择配置单实例监视器或配置多实例监视器,下面将介绍配置单实例监视器时 dmmonitor.ini 配置文件中的配置信息。
    配置单实例监视器 修改 dmmonitor.ini 配置确认监视器,其中MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。

MON_DW_CONFIRM = 0 #确认监视器模式
MON_LOG_PATH = /dm8/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GROUP1]
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.1.89:65101
MON_DW_IP = 192.168.1.90:65121

4.4启动守护进程

    启动各个主备库上的守护进程:

./dmwatcher /dm/data/DAMENG/dmwatcher.ini

4.5启动监视器

    多实例确认监视器系统中,需逐个单独启动各监视器。
    启动监视器:

./dmmonitor ./dmmonitor.ini

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

4.6注册删除相关服务

  主备注册数据库服务mount启动:
/dm8/script/root/dm_service_installer.sh -p DMSVR01 -t dmserver -dm_ini /dm8/data/DM01/dm.ini -m mount
/dm8/script/root/dm_service_installer.sh -p DMSV02 -t dmserver -dm_ini /dm8/data/DM01/dm.ini -m mount        
  主备注册watcher开机启动:
/dm8/script/root/dm_service_installer.sh -p DMSVR01 -t dmwatcher -watcher_ini /dm8/data/DM01/dmwatcher.ini
/dm8/script/root/dm_service_installer.sh -p DMSV02 -t dmwatcher -watcher_ini /dm8/data/DM01/dmwatcher.ini
  第三方主机上注册监视器:
/dm8/script/root/dm_service_installer.sh -p DMMO -t dmmonitor -monitor_ini /dm8/bin/dmmonitor.ini
  删除注册服务:
[root@8-rwc89-node1 bin]# /dm8/script/root/dm_service_uninstaller.sh -n DmServiceDMSVR01
是否删除服务(DmServiceDMSVR01)?(Y/y:是 N/n:否): y
删除服务文件(/usr/lib/systemd/system/DmServiceDMSVR01.service)完成
删除服务(DmServiceDMSVR01)完成
  查询和禁止开机启动项:
systemctl list-unit-files --type=service | grep enable |grep Dm
systemctl disable DmServicenode2_b2.service

4.7关于DMDW关闭数据守护系统

    关闭守护系统时,必须按照一定的顺序来关闭守护进程和数据库实例。特别是自动切换模式退出顺序不正确,可能会引起主备切换,甚至造成守护进程组分裂。通过监视器执行 Stop Group 命令关闭数据守护系统,是最简单、安全的方式。命令执行成功后,数据库实例正常关闭。但守护进程并没有真正退出,而是将状态切换为Shutdown 状态。Stop Group 命令内部流程如下:

  1. 通知守护进程切换为 Shutdown 状态
  2. 通知主库退出
  3. 通知其他备库退出
        如果使用手动方式关闭数据守护系统,请严格按照以下顺序执行:
  4. 如果启动了确认监视器,先关闭确认监视器(防止自动接管)
  5. 关闭备库守护进程(防止重启实例)
  6. 关闭主库守护进程(防止重启实例)
  7. Shutdown 主库
  8. Shutdown 备库
        如果是只关闭主库,并且不想引发备库自动接管,有以下两种方法:
    方法一:
    1.通过 Detach database 命令将所有备库分离
    2.通过 Stop database 命令退出主库
    方法二:严格按照以下顺序执行:
  9. 通过 Stop dmwatcher 命令关闭所有守护进程监控
  10. 手动正常退出主库
        如果是只关闭备库,并且不想引发主库发送日志失败进入 Suspend 状态,请严格按照
    以下顺序执行:
  11. 通过 Detach database 命令将备库分离出数据守护系统
  12. 正常退出备库(手动退出或者通过 Stop database 命令退出)    注意: 关闭整个数据守护系统时,先关闭主库再关闭备库,顺序一定不能错。对于本地守护类型的库,在关闭数据守护系统时,不受此顺序限制。

5. DMDW主备公共或内部网故障

5.1公共网络故障

    主库公共网络故障,主备库正常、内部网络正常情况下,用户无法连接主库执行正常的数据库操作。这种情况下,用户可以通过 Switchover 命令,将备库切换为主库,确保数据库服务不受影响。
    读写分离集群中备库公共网络故障,主备库正常、内部网络正常情况下,用户的所有请求会自动分发到主库执行。
    如上两种情况很好理解,这里不做赘述及验证。

5.2 内部网络故障

    在测试验证前先了解DMDW初始状态为:DMSVR01主机,DMSVR02备机,各类型验证前先恢复到初始状态;同时介绍下数据库几种状态。
    MOUNT:配置状态(可修改数据可归档状态,主备机模式等),不能读写数据文件
    OPEN:数据库的正常状态。此时数据库可以对外提供读写服务,可以读写数据文件。
    SUSPEND:只读状态,此时数据库只能读不能写,一旦修改数据,执行commit数据库将被挂起。
    SHUTDOWN:关闭状态
WCTLSTAT:守护进程控制文件状态,包括 Valid/Split/Invalid 三种状态,对于配置为本地守护类型的实例,由于不需要有守护进程控制文件,该字段值为 NULL。
    WSTATUS:守护进程状态,取自控制守护进程。
    DMDW对内部网络的可靠性提出了很高的要求,但是在实际应用中(比如异地容灾),存在很多不可控因素,内部网络无法保证绝对可靠。守护进程和守护进程之间、守护进程和监视器之间通过超时机制来检测是否出现故障,当内部网络出现故障时,超过设置时间未收到远程消息,会认定远程故障。
    自动切换模式下,当发生主库内部网络故障而其他网络均正常时,归档失败,主库Suspend,会导致连接主库的会话被挂起,一直无法返回,备库自动接管后,这些会话连接无法自动切换到新主库上。为此,DM 采用超时机制断开由于归档失败导致挂起时的所有会话,通过配置 dm.ini 中的 SESS_FREE_IN_SUSPEND 实现,默认 60s详见手册。测试验证如下图:

3.jpg

    网络故障恢复后,对于手动切换模式,没有强制接管的情况下,主库的守护进程会自动判断备库是否能加入,能加入则启动 Recovery 流程。测试验证如下图:
4.jpg
    对于自动切换模式已经被接管的情况,守护进程会将被接管的老主库强制退出(Shutdown),老主库重启后,还需要守护进程再去判断是否可作为备库重加入守护系统,如果可以,则启动恢复流程(切换为 Standy模式,重新将实例 Open),如果不能,才修改为分裂状态。测试验证如下图:
5.jpg
    当内部网络是由于拔掉网线、或者禁用网卡等原因导致的故障,MAL 系统检测到链路断开的时间由 dmmal.ini 中 配 置 的 MAL_CHECK_INTERVAL 以 及MAL_CONN_FAIL_INTERVAL 决定。会话的中断时间会比杀掉实例、掉电等花费的时间长。
下面举例说明:
dmmal.ini 配置
MAL_CHECK_INTERVAL = 10
MAL_CONN_FAIL_INTERVAL = 10
dmwatcher.ini 配置
DW_ERROR_TIME = 10
    拔掉备库网线后,主库上 MAL 检测线程根据 MAL_CHECK_INTERVAL 间隔检查,时间<=10s ,检查 认 定 网 络故 障 需 要 10s ,再加上 守 护 进 程 认 定 远程网 络 故 障 时 间DW_ERROR_TIME 为 10s,在最坏的情况下,应用连接等待主库响应最长的时间可能会是三个时间的累加,也许会达到 30s。
    手动切换模式下,主库或备库内网异常时会接收守护进程(DMSVR01)或(DMSVR02)消息超时,集群守护状态会对应显示实例WSTATUS的状态ERROR,主备库disql登录都处于正常打开状态;主库内网恢复后,实例守护进程(DMSVR01)状态切换 [NONE-->OPEN]。重新加入集群。备库网络恢复后,实例守护进程(DMSVR02)状态切换 [NONE-->OPEN],同时主库进入如下状态改变改变后加入集群,期间不涉及主备库切换:
6.jpg

6. 问题处理及理解

6.1问题处理:

问题1:
[dmdba@8-rwc89-node1 /dm8/bin]$./dmserver /dm8/data/DM01/dm.ini mount
file dm.key not found, use default license!
Global parameter value of DW_PORT is illegal, use max value!
Value of [MAL_PORT] is invalid in [/dm8/data/DM01/dmmal.ini]!
Read ini file(/dm8/data/DM01/dmmal.ini) error in line 7, code(-803)
MAL sys initialization failed!
dmserver startup failed, code = -803 [Invalid ini config value]
nsvr_ini_file_read failed, [code: -803]
处理: 注意端口设置不能超过65535;dm.ini DW_PORT和 dmmal.ini MAL_INST_DW_PORT不能相同;

问题2:
[dmdba@8-rwc90-node2 /dm8/bin]$./dmwatcher /dm8/data/DM01/dmwatcher.ini
DMWATCHER[4.0] V8
Read ini warning, default backup path [/dm8/data/DM01/bak] does not exist.
DMWATCHER[4.0] IS READY
处理:
cd /dm8/data/DM01/
mkdir bak

问题3:
[monitor] 2023-08-24 01:13:08: dmmonitor(mid:272769128) create link to dmwatcher(172.26.8.90:65121) error, code=-9402, please check configuration!!!
[monitor] 2023-08-24 01:13:08: dmmonitor(mid:272769128) create link to dmwatcher(172.26.8.90:65121) error, code=-6010, oguid or group_name mismatch, please check configuration!!!
处理::注意脚本启动权限,dmdba启动后正常。

问题4:
启动时提示
dmserver startup in mount status with not initialized database
处理:
数据库未正常启停,数据库至少要正常启停一次;

问题5:
启动dmwatcher后数据库没有自动OPEN
问题现象:
1.启动dmwatcher后数据库没有自动OPEN。
2.启动dmmonitor后,没有备库信息,主库状态为MOUNT。
主库
[dmdba@8-rwc90-node2]$ disql SYSDBA/DM01SYSDBA:5236
Server[LOCALHOST:5236]:mode is primary, state is mount
login used time : 4.614(ms)
disql V8
SQL> select status$ from v$instance;
LINEID STATUS$


1 MOUNT
used time: 12.026(ms). Execute id is 0.
尝试手动启动,报错
SQL> alter database open;
alter database open;
[-720]:Error in line: 1
Dmwatcher is active, or current configuration(ALTER_MODE_STATUS) not allowed to alter database.
used time: 0.733(ms). Execute id is 0.
处理:
主、备库的防火墙开机自启和selinux没有关闭, 关闭主、备库的防火墙和selinux,恢复正常。同时关闭开机自启。

历史问题6:
主备数据库不一致
启动监视器后,发现主备一直是在mount的状态,没有被守护进程拉起到open状态,查看最后两个lsn信息,发现主备不一致。最后将主库重新备份,备机通过这个备份还原。
然后通过以下顺序启动,可以看到,主备均变为OPEN状态
启动主库实例(mount)
启动备库实例(mount)
启动主库守护进程
启动备库守护进程
启动监视器
处理:
不一致实际在启动主备实例(mount)时就可以看到,会打印输出信息。

历史问题7:
OGUID
在执行 sp_set_oguid(453331); 要保证主备都设置,且设置的一致。
处理:
在出现上面问题6后,将备库重新还原,但忘记重新设置 OGUID,也导致了主备一致mount。

历史问题8:
重启顺序
1.关闭监视器
2.关闭主库守护进程
3.关闭备库守护进程
4.关闭主库实例
5.关闭备库实例
6.启动主库实例(mount)
7.启动备库实例(mount)
8.启动主库守护进程
9.启动备库守护进程
10.启动监视器

6.2个人理解:

    DMDW通过日志重演实现数据复制, 通过数据复制,形成了实例和数据的冗余, 通过实例和数据的冗余,实现高可用; DM使用REDO LOG是物理日志;实时主备的数据流向在同一时间内是单向的,即同时只能有一个主;主备是一套实现高可用的功能,包括数据复制、状态检测和故障处理。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服