暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

达梦数据库主备实时集群搭建和维护

IT小Chen 2022-10-12
3436

:环境说明

1.1 硬件需求

至少需要三台服务器,1主、1从、1监视器,由于资源有限,将监视器安装在主库机器上,本次实验使用2台虚拟机。

1.2 网络需求

心跳IP 和外部IP不同网段,本次实验没有单独配置心跳IP,和外部IP相同。

1.3 注意事项

在搭建数据守护系统前,应注意数据守护系统中各实例使用的 DM 服务器版本应一致,同时还应注意各实例所在主机的操作系统位数、大小端模式、时区及时间设置都应一致,以及使用同一个用户启动 DM 服务器和守护进程 dmwatcher,以免系统在运行时出现意想不到的错误。


主库

备库

监视库

主机名

cjc-db-03

cjc-db-04

cjc-db-03

物理IP

172.16.6.101

172.16.6.102

172.16.6.101

心跳IP

172.16.6.101

172.16.6.102

172.16.6.101

数据库端口

5238

5238

5238

MAL_INST_DW_PORT

33141

33142


MAL_PORT

61141

61142


MAL_DW_PORT

52141

52142


DBNAME

CHEN

CJC


数据库版本

V8

V8


参考:

    https://eco.dameng.com/document/dm/zh-cn/pm/data-guard-construction.html

    二:环境准备

    配置数据守护 V4.0 之前,必须先通过备份还原方式同步各数据库的数据,确保各数据的数据保持完全一致。主库可以是新初始化的数据库,也可以是正在生产、使用中的数据库。

    不能使用分别初始化库或者直接拷贝数据文件的方法,原因如下:

    1.每个库都有一个永久魔数(permenant_magic),一经生成,永远不会改变,主库传送日志时会判断这个值是否一样,确保是来自同一个数据守护环境中的库,否则传送不了日志。

    2.由于 dminit 初始化数据库时,会生成随机密钥用于加密,每次生成的密钥都不相同,备库无法解析采用主库密钥加密的数据。

    3.每个库都有一个数据库魔数(DB_MAGIC),每经过一次还原、恢复操作,DB_MAGIC 就会产生变化,需要通过这种方式来区分同一个数据守护环境中各个不同的库。

    2.1主库脱机备份

    启动DMAP服务

      [dmdba@cjc-db-03 dm8]$ cd dm8/bin/service_template/
      [dmdba@cjc-db-03 service_template]$ ./DmAPService start

      脱机备份

        [dmdba@cjc-db-03 service_template]$ dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/CHEN/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/bak/BACKUP_FILE_01'"

        查看备份文件

          [dmdba@cjc-db-03 bak]$ ll -rth BACKUP_FILE_01/
          total 7.1M
          -rw-r--r--. 1 dmdba dinstall 7.0M Oct 10 15:33 BACKUP_FILE_01.bak
          -rw-r--r--. 1 dmdba dinstall 81K Oct 10 15:33 BACKUP_FILE_01.meta

          压缩

            [dmdba@cjc-db-03 dm8]$ tar -zcvf bak.tar.gz bak/

            传到备库

              [dmdba@cjc-db-03 dm8]$ scp bak.tar.gz dmdba@172.16.6.102:/dm8

              2.2 备库脱机恢复

              安装DM数据库软件

                [dmdba@cjc-db-04 mnt]$ ./DMInstall.bin -i

                创建DM数据库实例

                  [dmdba@cjc-db-04 mnt]$ dminit path=/dm8/data DB_NAME=CJC instance_name=CJC port_num=5238

                  恢复备份

                    [dmdba@cjc-db-04 dm8]$ tar -zxvf bak.tar.gz 
                    [dmdba@cjc-db-04 dm8]$ dm8/bin/service_template/DmAPService start
                    [dmdba@cjc-db-04 dm8]$ dmrman CTLSTMT="restore database '/dm8/data/CJC/dm.ini' from backupset '/dm8/bak/BACKUP_FILE_01'"
                    [dmdba@cjc-db-04 dm8]$ dmrman CTLSTMT="recover database '/dm8/data/CJC/dm.ini' from backupset '/dm8/bak/BACKUP_FILE_01'"
                    [dmdba@cjc-db-04 dm8]$ dmrman CTLSTMT="recover database '/dm8/data/CJC/dm.ini' update DB_MAGIC "

                    三:配置主库 CHEN

                    库名和实例名:CHEN

                      [dmdba@cjc-db-03 CHEN]$ disql SYSDBA/Dameng123:5238
                      Server[LOCALHOST:5238]:mode is normal, state is open
                      login used time : 6.215(ms)
                      disql V8
                      SQL> select name from v$database;
                      LINEID NAME
                      ---------- ----
                      1 CHEN
                      used time: 14.585(ms). Execute id is 500.
                      SQL> select instance_name from v$instance;
                      LINEID INSTANCE_NAME
                      ---------- -------------
                      1 CHEN
                      used time: 1.817(ms). Execute id is 501.

                      3.1配置 dm.ini(主库)

                      在主库机器上配置主库的实例名为 CHENdm.ini 参数修改如下:

                      注意:

                      1.实例名,总长度不能超过16

                      2.下面参数已经存在dm.ini文件中,需要修改对应的值。

                        [dmdba@cjc-db-03 CHEN]$ vi dm.ini
                          INSTANCE_NAME = CHEN
                          PORT_NUM = 5238 ##数据库实例监听端口
                          DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间,默认60
                          ALTER_MODE_STATUS = 1 ##不允许手工方式修改实例模式/状态/OGUID,默认1
                          ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间,默认1
                          MAL_INI = 1 ##打开MAL系统,默认0
                          ARCH_INI = 1 ##打开归档配置,默认0
                          RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息,默认64

                          3.2配置 dmmal.ini(主库)

                          配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,

                          MAL_HOST 使用内部网络 IP

                          MAL_PORT dm.ini PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

                            [dmdba@cjc-db-03 CHEN]$ vi dmmal.ini
                              MAL_CHECK_INTERVAL = 5         ##MAL链路检测时间间隔
                              MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间
                              [MAL_INST1]
                              MAL_INST_NAME = CHEN ##实例名,和dm.ini中的INSTANCE_NAME一致
                              MAL_HOST = 172.16.6.101 ##MAL系统监听TCP连接的IP地址
                              MAL_PORT = 61141 ##MAL系统监听TCP连接的端口
                              MAL_INST_HOST = 172.16.6.101 ##实例的对外服务IP地址
                              MAL_INST_PORT = 5238 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致
                              MAL_DW_PORT = 52141 ##实例本地的守护进程监听TCP连接的端口
                              MAL_INST_DW_PORT = 33141 ##实例监听守护进程TCP连接的端口
                              [MAL_INST2]
                              MAL_INST_NAME = CJC
                              MAL_HOST = 172.16.6.102
                              MAL_PORT = 61142
                              MAL_INST_HOST = 172.16.6.102
                              MAL_INST_PORT = 5238
                              MAL_DW_PORT = 52142
                              MAL_INST_DW_PORT = 33142

                              3.3配置 dmarch.ini(主库)

                              修改 dmarch.ini,配置本地归档和实时归档。

                              除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。

                              当前实例 CHEN 是主库,需要向 CJC(实时备库)同步数据,因此实时归档的 ARCH_DEST 配置为 CJC

                                [dmdba@cjc-db-03 CHEN]$ mkdir arch
                                [dmdba@cjc-db-03 CHEN]$ pwd
                                /dm8/data/CHEN
                                  [dmdba@cjc-db-03 CHEN]$ vi dmarch.ini
                                    [ARCHIVE_REALTIME]
                                    ARCH_TYPE = REALTIME ##实时归档类型
                                    ARCH_DEST = CJC ##实时归档目标实例名
                                    [ARCHIVE_LOCAL1]
                                    ARCH_TYPE = LOCAL ##本地归档类型
                                    ARCH_DEST = dm8/data/CHEN/arch ##本地归档文件存放路径
                                    ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值
                                    ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制,范围1024~2147483647M

                                    3.4配置 dmwatcher.ini(主库)

                                    修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。

                                      [dmdba@cjc-db-03 CHEN]$ vi dmwatcher.ini
                                        [GRP1]
                                        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/CHEN/dm.ini ##dm.ini配置文件路径
                                        INST_AUTO_RESTART = 1 ##打开实例的自动启动功能
                                        INST_STARTUP_CMD = dm8/bin/dmserver ##命令行方式启动
                                        RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭
                                        RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭

                                        3.5启动主库

                                        Mount 方式启动主库

                                          [root@cjc-db-03 dm8]# systemctl stop DmServiceCJC.service
                                          [dmdba@cjc-db-03 CHEN]$ dmserver dm8/data/CHEN/dm.ini mount
                                            file dm.key not found, use default license!


                                            version info: develop
                                            DM Database Server 64 V8 03134283890-20220720-165295-10045 startup...
                                            Normal of FAST
                                            Normal of DEFAULT
                                            Normal of RECYCLE
                                            Normal of KEEP
                                            Normal of ROLL
                                            Database mode = 0, oguid = 0
                                            License will expire on 2023-07-20
                                            file lsn: 39941
                                            ndct db load finished
                                            ndct second level fill fast pool finished
                                            ndct third level fill fast pool finished
                                            ndct second level fill fast pool finished
                                            ndct third level fill fast pool 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.

                                            注意

                                            一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;

                                            并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。

                                            数据守护配置结束后,守护进程会自动Open数据库。

                                            3.6设置 OGUID

                                            启动命令行工具 DIsql,登录主库设置 OGUID 值。

                                              [dmdba@cjc-db-03 CHEN]$ disql SYSDBA/Dameng123:5238
                                              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值。

                                              3.7修改数据库模式

                                              启动命令行工具 DIsql,登录主库修改数据库为 Primary 模式

                                                SQL>alter database primary;

                                                四:配置备库 CJC

                                                4.1配置 dm.ini(备库)

                                                在主库机器上配置主库的实例名为 CJCdm.ini 参数修改如下:

                                                注意:

                                                1.实例名,总长度不能超过16

                                                2.下面参数已经存在dm.ini文件中,需要修改对应的值。

                                                  [dmdba@cjc-db-04 dm8]$ cd dm8/data/CJC/
                                                  [dmdba@cjc-db-04 CJC]$ vi dm.ini
                                                    INSTANCE_NAME = CJC
                                                    PORT_NUM = 5238 ##数据库实例监听端口
                                                    DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间,默认60
                                                    ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID,默认1
                                                    ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间,默认1
                                                    MAL_INI = 1 ##打开MAL系统,默认0
                                                    ARCH_INI = 1 ##打开归档配置,默认0
                                                    RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志重演信息

                                                    4.2配置 dmmal.ini(备库)

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

                                                      [dmdba@cjc-db-04 CJC]$ vi dmmal.ini
                                                        MAL_CHECK_INTERVAL = 5         ##MAL链路检测时间间隔
                                                        MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间
                                                        [MAL_INST1]
                                                        MAL_INST_NAME = CHEN ##实例名,和dm.ini中的INSTANCE_NAME一致
                                                        MAL_HOST = 172.16.6.101 ##MAL系统监听TCP连接的IP地址
                                                        MAL_PORT = 61141 ##MAL系统监听TCP连接的端口
                                                        MAL_INST_HOST = 172.16.6.101 ##实例的对外服务IP地址
                                                        MAL_INST_PORT = 5238 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致
                                                        MAL_DW_PORT = 52141 ##实例本地的守护进程监听TCP连接的端口
                                                        MAL_INST_DW_PORT = 33141 ##实例监听守护进程TCP连接的端口
                                                        [MAL_INST2]
                                                        MAL_INST_NAME = CJC
                                                        MAL_HOST = 172.16.6.102
                                                        MAL_PORT = 61142
                                                        MAL_INST_HOST = 172.16.6.102
                                                        MAL_INST_PORT = 5238
                                                        MAL_DW_PORT = 52142
                                                        MAL_INST_DW_PORT = 33142

                                                        4.3配置 dmarch.ini(备库)

                                                        修改 dmarch.ini,配置本地归档和实时归档。

                                                        除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。

                                                        当前实例 CJC 是备库,守护系统配置完成后,可能在各种故障处理中,CJC 切换为新的主库,正常情况下,CHEN 会切换为新的备库,需要向 CHEN 同步数据,因此实时归档的 ARCH_DEST 配置为 CHEN

                                                          [dmdba@cjc-db-04 CJC]$ vi dmarch.ini
                                                            [ARCHIVE_REALTIME]
                                                            ARCH_TYPE = REALTIME ##实时归档类型
                                                            ARCH_DEST = CHEN ##实时归档目标实例名
                                                            [ARCHIVE_LOCAL1]
                                                            ARCH_TYPE = LOCAL ##本地归档类型
                                                            ARCH_DEST = dm8/data/CJC/arch ##本地归档文件路径
                                                            ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值
                                                            ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制,范围1024~2147483647M

                                                            4.4配置 dmwatcher.ini(备库)

                                                            修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。

                                                              [GRP1]
                                                              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/CJC/dm.ini##dm.ini配置文件路径
                                                              INST_AUTO_RESTART = 1 ##打开实例的自动启动功能
                                                              INST_STARTUP_CMD = dm8/bin/dmserver ##命令行方式启动
                                                              RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭

                                                              4.5启动备库

                                                              Mount 方式启动备库

                                                                [dmdba@cjc-db-04 CJC]$ dmserver dm8/data/CJC/dm.ini mount
                                                                [dmdba@cjc-db-04 dm8]$ disql SYSDBA/Dameng123:5238

                                                                注意

                                                                一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。

                                                                4.6设置 OGUID

                                                                启动命令行工具 DIsql,登录备库设置 OGUID 值为 453331

                                                                  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值。

                                                                  4.6修改数据库模式

                                                                  启动命令行工具 DIsql,登录备库修改数据库为 Standby 模式。

                                                                  如果当前数据库不是 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步

                                                                    五:配置监视器

                                                                    CJC-DB-03机器上配置。

                                                                    配置监视器时可以选择配置单实例监视器或配置多实例监视器,下面将分别介绍配置单实例监视器以及多实例监视器时 dmmonitor.ini 配置文件中的配置信息。

                                                                    配置单实例监视器

                                                                    由于主库和实时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。

                                                                    和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。

                                                                    注意

                                                                    故障自动切换模式下,必须配置确认监视器,且确认监视器最多只能配置一个

                                                                    5.1 配置dmmonitor.ini

                                                                    修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP PORT dmmal.ini 中的 MAL_HOST MAL_DW_PORT 配置项保持一致。

                                                                      [dmdba@cjc-db-03 CHEN]$ vi dmmonitor.ini
                                                                        MON_DW_CONFIRM = 1       ##确认监视器模式
                                                                        MON_LOG_PATH = dm8/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值
                                                                        MON_DW_IP = 172.16.6.101:52141
                                                                        MON_DW_IP = 172.16.6.102:52142

                                                                        六:配置主从

                                                                        6.1启动守护进程

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

                                                                        主:

                                                                          [dmdba@cjc-db-03 CHEN]$ dmwatcher dm8/data/CHEN/dmwatcher.ini

                                                                          从:

                                                                            [dmdba@cjc-db-04 ~]$ dmwatcher dm8/data/CHEN/dmwatcher.ini

                                                                            守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。

                                                                            守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例 Open,并切换为 Open 状态。

                                                                            6.2启动监视器

                                                                              [dmdba@cjc-db-03 CHEN]$ dmmonitor dm8/data/CHEN/dmmonitor.ini    

                                                                              监视器提供一系列命令,支持当前守护系统状态查看以及故障处理,可输入 help 命令,查看各种命令说明使用,结合实际情况选择使用。

                                                                              至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。

                                                                              七:数据同步测试

                                                                              7.1 主库新增数据

                                                                              主库

                                                                                [dmdba@cjc-db-03 dm8]$ disql SYSDBA/Dameng123:5238
                                                                                SQL> select name,status$,role$ from v$database;
                                                                                LINEID NAME STATUS$ ROLE$
                                                                                ---------- ---- ----------- -----------
                                                                                1 CHEN 4 1

                                                                                创建表

                                                                                  SQL> create table t1(id int);
                                                                                  executed successfully
                                                                                  used time: 39.548(ms). Execute id is 6.
                                                                                  SQL> insert into t1 values(1),(2),(3);
                                                                                  affect rows 3
                                                                                  used time: 3.138(ms). Execute id is 7.
                                                                                  SQL> commit;
                                                                                  executed successfully
                                                                                  used time: 30.124(ms). Execute id is 8.

                                                                                  7.2从库检查数据同步

                                                                                  从库

                                                                                    [dmdba@cjc-db-04 ~]$ disql SYSDBA/Dameng123:5238
                                                                                    Server[LOCALHOST:5238]:mode is standby, state is open
                                                                                    login used time : 5.973(ms)
                                                                                    disql V8
                                                                                    SQL> select name,status$,role$ from v$database;
                                                                                    LINEID NAME STATUS$ ROLE$
                                                                                    ---------- ---- ----------- -----------
                                                                                    1 CHEN 4 2
                                                                                    used time: 9.511(ms). Execute id is 100.
                                                                                    SQL> select * from t1;
                                                                                    LINEID ID
                                                                                    ---------- -----------
                                                                                    1 1
                                                                                    2 2
                                                                                    3 3
                                                                                    used time: 3.325(ms). Execute id is 102.

                                                                                    从库只读

                                                                                      SQL> insert into t1 values(4),(5);
                                                                                      insert into t1 values(4),(5);
                                                                                      [-2018]:Error in line: 1
                                                                                      Try to insert/update/delete table table is not temporary or contains lob on standby mode.
                                                                                      used time: 2.128(ms). Execute id is 0.

                                                                                      八:数据库主从切换

                                                                                      使用dmmonitor工具进行主从切换

                                                                                      相关命令如下

                                                                                        37.switchover [group_name[.]] [db_name] --switchover specified database of specified group as primary database
                                                                                        38.takeover [group_name[.]] [db_name] --use specified database of specified group to takeover as primary database
                                                                                        39.takeover force [group_name[.]] [db_name] --use specified database of specified group to takeover as primary database forcefully

                                                                                        8.1 手动切换

                                                                                        查看主从状态

                                                                                          show global info
                                                                                            2022-10-10 16:50:51
                                                                                            #================================================================================#
                                                                                            GROUP OGUID MON_CONFIRM MODE MPP_FLAG
                                                                                            GRP1 453331 TRUE AUTO FALSE
                                                                                            <<DATABASE GLOBAL INFO:>>
                                                                                            DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                            172.16.6.101 52141 2022-10-10 16:50:50 GLOBAL VALID OPEN CHEN OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
                                                                                            DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                            172.16.6.102 52142 2022-10-10 16:50:50 GLOBAL VALID OPEN CJC OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
                                                                                            #================================================================================#

                                                                                            开始切换

                                                                                              switchover GRP1.CJC
                                                                                                [monitor] 2022-10-10 16:40:15: Not login dmmonitor or server public key changed, please try to login again!

                                                                                                登录

                                                                                                  login
                                                                                                  username:SYSDBA
                                                                                                  password:
                                                                                                  [monitor] 2022-10-10 16:50:19: Login dmmonitor success!

                                                                                                  再次切换

                                                                                                    switchover GRP1.CJC

                                                                                                    日志如下:

                                                                                                      [monitor] 2022-10-10 16:51:27: Start to switchover instance CJC
                                                                                                      [monitor] 2022-10-10 16:51:27: Notify dmwatcher(CHEN) switch to SWITCHOVER status
                                                                                                      [monitor] 2022-10-10 16:51:27: Dmwatcher process CHEN status switching [OPEN-->SWITCHOVER]
                                                                                                      [monitor] 2022-10-10 16:51:29: Switch dmwatcher CHEN to SWITCHOVER status success
                                                                                                      [monitor] 2022-10-10 16:51:29: Notify dmwatcher(CJC) switch to SWITCHOVER status
                                                                                                      [monitor] 2022-10-10 16:51:29: Dmwatcher process CJC status switching [OPEN-->SWITCHOVER]
                                                                                                      [monitor] 2022-10-10 16:51:29: Switch dmwatcher CJC to SWITCHOVER status success
                                                                                                      [monitor] 2022-10-10 16:51:29: Instance CHEN start to execute sql SP_SET_GLOBAL_DW_STATUS(0, 6)
                                                                                                      [monitor] 2022-10-10 16:51:29: Instance CHEN execute sql SP_SET_GLOBAL_DW_STATUS(0, 6) success
                                                                                                      [monitor] 2022-10-10 16:51:29: Instance CJC start to execute sql SP_SET_GLOBAL_DW_STATUS(0, 6)
                                                                                                      [monitor] 2022-10-10 16:51:29: Instance CJC execute sql SP_SET_GLOBAL_DW_STATUS(0, 6) success
                                                                                                      [monitor] 2022-10-10 16:51:29: Instance CHEN start to execute sql ALTER DATABASE MOUNT
                                                                                                      [monitor] 2022-10-10 16:51:29: Instance CHEN execute sql ALTER DATABASE MOUNT success
                                                                                                      [monitor] 2022-10-10 16:51:29: Instance CJC start to execute sql SP_APPLY_KEEP_PKG()
                                                                                                      [monitor] 2022-10-10 16:51:29: Instance CJC execute sql SP_APPLY_KEEP_PKG() success
                                                                                                      [monitor] 2022-10-10 16:51:29: Instance CJC start to execute sql ALTER DATABASE MOUNT
                                                                                                      [monitor] 2022-10-10 16:51:29: Instance CJC execute sql ALTER DATABASE MOUNT success
                                                                                                      [monitor] 2022-10-10 16:51:29: Instance CHEN start to execute sql ALTER DATABASE STANDBY
                                                                                                      [monitor] 2022-10-10 16:51:30: Instance CHEN execute sql ALTER DATABASE STANDBY success
                                                                                                      [monitor] 2022-10-10 16:51:30: Instance CJC start to execute sql ALTER DATABASE PRIMARY
                                                                                                      [monitor] 2022-10-10 16:51:31: Instance CJC execute sql ALTER DATABASE PRIMARY success
                                                                                                      [monitor] 2022-10-10 16:51:31: Notify instance CJC to change all arch status to be invalid
                                                                                                      [monitor] 2022-10-10 16:51:31: Succeed to change all instances arch status to be invalid
                                                                                                      [monitor] 2022-10-10 16:51:31: Instance CHEN start to execute sql ALTER DATABASE OPEN FORCE
                                                                                                      [monitor] 2022-10-10 16:51:32: Instance CHEN execute sql ALTER DATABASE OPEN FORCE success
                                                                                                      [monitor] 2022-10-10 16:51:32: Instance CJC start to execute sql ALTER DATABASE OPEN FORCE
                                                                                                      [monitor] 2022-10-10 16:51:32: Instance CJC execute sql ALTER DATABASE OPEN FORCE success
                                                                                                      [monitor] 2022-10-10 16:51:32: Instance CHEN start to execute sql SP_SET_GLOBAL_DW_STATUS(6, 0)
                                                                                                      [monitor] 2022-10-10 16:51:32: Instance CHEN execute sql SP_SET_GLOBAL_DW_STATUS(6, 0) success
                                                                                                      [monitor] 2022-10-10 16:51:32: Instance CJC start to execute sql SP_SET_GLOBAL_DW_STATUS(6, 0)
                                                                                                      [monitor] 2022-10-10 16:51:32: Instance CJC execute sql SP_SET_GLOBAL_DW_STATUS(6, 0) success
                                                                                                      [monitor] 2022-10-10 16:51:32: Notify dmwatcher(CHEN) switch to OPEN status
                                                                                                      [monitor] 2022-10-10 16:51:32: Dmwatcher process CHEN status switching [SWITCHOVER-->OPEN]
                                                                                                      [monitor] 2022-10-10 16:51:32: Switch dmwatcher CHEN to OPEN status success
                                                                                                      [monitor] 2022-10-10 16:51:32: Notify dmwatcher(CJC) switch to OPEN status
                                                                                                      [monitor] 2022-10-10 16:51:33: Dmwatcher process CJC status switching [SWITCHOVER-->OPEN]
                                                                                                      [monitor] 2022-10-10 16:51:33: Switch dmwatcher CJC to OPEN status success
                                                                                                      [monitor] 2022-10-10 16:51:33: Notify group(GRP1)'s dmwatcher to do clear
                                                                                                      [monitor] 2022-10-10 16:51:34: Clean request of dmwatcher processer CHEN success
                                                                                                      2022-10-10 16:51:34
                                                                                                      #================================================================================#
                                                                                                      GROUP OGUID MON_CONFIRM MODE MPP_FLAG
                                                                                                      GRP1 453331 TRUE AUTO FALSE
                                                                                                      <<DATABASE GLOBAL INFO:>>
                                                                                                      DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                      172.16.6.102 52142 2022-10-10 16:51:33 GLOBAL VALID OPEN CJC OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
                                                                                                      EP INFO:
                                                                                                      INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
                                                                                                      172.16.6.102 5238 OK CJC OPEN PRIMARY 0 0 REALTIME VALID 6432 43497 6432 43498 NONE
                                                                                                      <<DATABASE GLOBAL INFO:>>
                                                                                                      DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                      172.16.6.101 52141 2022-10-10 16:51:34 GLOBAL VALID OPEN CHEN OK 1 1 OPEN STANDBY DSC_OPEN REALTIME INVALID
                                                                                                      EP INFO:
                                                                                                      INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
                                                                                                      172.16.6.101 5238 OK CHEN OPEN STANDBY 0 0 REALTIME INVALID 6431 42139 6431 42139 NONE
                                                                                                      DATABASE(CHEN) APPLY INFO FROM (CJC), REDOS_PARALLEL_NUM (1):
                                                                                                      DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[6431, 6431, 6431], (RLSN, SLSN, KLSN)[42139, 42139, 42139], N_TSK[0], TSK_MEM_USE[0]
                                                                                                      REDO_LSN_ARR: (42139)
                                                                                                      #================================================================================#
                                                                                                      [monitor] 2022-10-10 16:51:34: Clean request of dmwatcher processer CJC success
                                                                                                      [monitor] 2022-10-10 16:51:34: Switchover instance CJC success
                                                                                                      [monitor] 2022-10-10 16:51:35: Dmwatcher process CJC status switching [OPEN-->RECOVERY]
                                                                                                      WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
                                                                                                      2022-10-10 16:51:35 RECOVERY OK CJC OPEN PRIMARY VALID 5 43498 43498
                                                                                                      [monitor] 2022-10-10 16:51:38: Dmwatcher process CJC status switching [RECOVERY-->OPEN]
                                                                                                      WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
                                                                                                      2022-10-10 16:51:37 OPEN OK CJC OPEN PRIMARY VALID 5 43499 43499

                                                                                                      查看主从状态,切换成功

                                                                                                        show global info
                                                                                                          2022-10-10 16:53:01
                                                                                                          #================================================================================#
                                                                                                          GROUP OGUID MON_CONFIRM MODE MPP_FLAG
                                                                                                          GRP1 453331 TRUE AUTO FALSE
                                                                                                          <<DATABASE GLOBAL INFO:>>
                                                                                                          DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                          172.16.6.102 52142 2022-10-10 16:53:01 GLOBAL VALID OPEN CJC OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
                                                                                                          DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                          172.16.6.101 52141 2022-10-10 16:53:01 GLOBAL VALID OPEN CHEN OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
                                                                                                          #================================================================================#

                                                                                                          新主库插入数据测试

                                                                                                            [dmdba@cjc-db-04 ~]$ disql SYSDBA/Dameng123:5238
                                                                                                            SQL> insert into t1 values(4),(5);
                                                                                                            SQL> commit;

                                                                                                            新从库查询数据同步

                                                                                                              [dmdba@cjc-db-03 ~]$ disql SYSDBA/Dameng123:5238
                                                                                                              SQL> select * from t1;
                                                                                                              LINEID ID
                                                                                                              ---------- -----------
                                                                                                              1 1
                                                                                                              2 2
                                                                                                              3 3
                                                                                                              4 4
                                                                                                              5 5
                                                                                                              used time: 6.220(ms). Execute id is 600.

                                                                                                              回切

                                                                                                                switchover GRP1.CHEN

                                                                                                                查看主从状态,回切成功

                                                                                                                  show global info
                                                                                                                  2022-10-10 16:56:38
                                                                                                                  #================================================================================#
                                                                                                                  GROUP OGUID MON_CONFIRM MODE MPP_FLAG
                                                                                                                  GRP1 453331 TRUE AUTO FALSE
                                                                                                                  <<DATABASE GLOBAL INFO:>>
                                                                                                                  DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                                  172.16.6.101 52141 2022-10-10 16:56:38 GLOBAL VALID OPEN CHEN OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
                                                                                                                  DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                                  172.16.6.102 52142 2022-10-10 16:56:37 GLOBAL VALID OPEN CJC OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
                                                                                                                  #================================================================================#

                                                                                                                  8.2自动切换

                                                                                                                  停止主库

                                                                                                                    SQL> shutdown immediate;
                                                                                                                    executed successfully
                                                                                                                    used time: 2.060(ms). Execute id is 0.

                                                                                                                    查看主从状态

                                                                                                                      show global info
                                                                                                                      2022-10-10 16:59:20
                                                                                                                      #================================================================================#
                                                                                                                      GROUP OGUID MON_CONFIRM MODE MPP_FLAG
                                                                                                                      GRP1 453331 TRUE AUTO FALSE
                                                                                                                      <<DATABASE GLOBAL INFO:>>
                                                                                                                      DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                                      172.16.6.101 52141 2022-10-10 16:59:20 GLOBAL VALID OPEN CHEN OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
                                                                                                                      DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                                      172.16.6.102 52142 2022-10-10 16:59:19 GLOBAL VALID OPEN CJC OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
                                                                                                                      #================================================================================#

                                                                                                                      原主库被自动拉起了,没有发生自动切换

                                                                                                                      查看dmwatcher自动启动主库日志:

                                                                                                                        Waitpid error!
                                                                                                                        file dm.key not found, use default license!
                                                                                                                        version info: develop
                                                                                                                        DM Database Server 64 V8 03134283890-20220720-165295-10045 startup...
                                                                                                                        Normal of FAST
                                                                                                                        Normal of DEFAULT
                                                                                                                        Normal of RECYCLE
                                                                                                                        Normal of KEEP
                                                                                                                        Normal of ROLL
                                                                                                                        Database mode = 1, oguid = 453331
                                                                                                                        License will expire on 2023-07-20
                                                                                                                        file lsn: 45230
                                                                                                                        ndct db load finished
                                                                                                                        ndct second level fill fast pool finished
                                                                                                                        ndct third level fill fast pool finished
                                                                                                                        ndct second level fill fast pool finished
                                                                                                                        ndct third level fill fast pool 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.
                                                                                                                        iid page's trxid[13037]
                                                                                                                        NEXT TRX ID = 13038
                                                                                                                        pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 to_release_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 to_release_pages, 0 mgr pages, 0 mgr recs!
                                                                                                                        iid page's trxid[14039]
                                                                                                                        NEXT TRX ID = 15041.
                                                                                                                        total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
                                                                                                                        pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
                                                                                                                        pseg_crash_trx_rollback end
                                                                                                                        pseg recv finished
                                                                                                                        nsvr_process_before_open begin.
                                                                                                                        nsvr_process_before_open success.
                                                                                                                        total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
                                                                                                                        pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
                                                                                                                        pseg_crash_trx_rollback end

                                                                                                                        九:日常维护

                                                                                                                        9.1停数据库

                                                                                                                        dmmonitor相关命令

                                                                                                                          19.startup dmwatcher [group_name] --startup watching specified group
                                                                                                                          20.stop dmwatcher [group_name] --stop watching specified group
                                                                                                                          21.startup group [group_name] --startup all databases of specified group
                                                                                                                          22.stop group [group_name] --exit all databases of specified group
                                                                                                                          23.kill group [group_name] --kill all active databases of specified group
                                                                                                                            stop group GRP1

                                                                                                                            停止所有数据库

                                                                                                                              [monitor] 2022-10-10 17:07:25: Stop dmwatcher process of instance CHEN[PRIMARY, OPEN, ISTAT_SAME:TRUE]
                                                                                                                              [monitor] 2022-10-10 17:07:25: Dmwatcher process CHEN status switching [OPEN-->SHUTDOWN]
                                                                                                                              [monitor] 2022-10-10 17:07:26: Stop dmwatcher process of instance CHEN[PRIMARY, OPEN, ISTAT_SAME:TRUE] success
                                                                                                                              [monitor] 2022-10-10 17:07:26: Stop dmwatcher process of instance CJC[STANDBY, OPEN, ISTAT_SAME:TRUE]
                                                                                                                              [monitor] 2022-10-10 17:07:26: Dmwatcher process CJC status switching [OPEN-->SHUTDOWN]
                                                                                                                              [monitor] 2022-10-10 17:07:26: Stop dmwatcher process of instance CJC[STANDBY, OPEN, ISTAT_SAME:TRUE] success
                                                                                                                              [monitor] 2022-10-10 17:07:26: Notify instance(CHEN) shutdown.

                                                                                                                              查看状态,停止成功

                                                                                                                                show global info
                                                                                                                                2022-10-10 17:08:02
                                                                                                                                #================================================================================#
                                                                                                                                GROUP OGUID MON_CONFIRM MODE MPP_FLAG
                                                                                                                                GRP1 453331 TRUE AUTO FALSE
                                                                                                                                ERROR DATABASE:
                                                                                                                                <<DATABASE GLOBAL INFO:>>
                                                                                                                                DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                                                172.16.6.101 52141 2022-10-10 17:08:01 GLOBAL VALID SHUTDOWN CHEN ERROR 1 1 SHUTDOWN PRIMARY DSC_OPEN REALTIME VALID
                                                                                                                                DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                                                172.16.6.102 52142 2022-10-10 17:08:01 GLOBAL VALID SHUTDOWN CJC ERROR 1 1 SHUTDOWN STANDBY DSC_OPEN NONE VALID
                                                                                                                                #================================================================================#

                                                                                                                                9.2停止dmwatcher

                                                                                                                                  stop dmwatcher GRP1

                                                                                                                                  SHUTDOWN状态下无法停止dmwatcher

                                                                                                                                    [monitor] 2022-10-10 17:08:59: Dmwatcher CHEN is already in SHUTDOWN status
                                                                                                                                    [monitor] 2022-10-10 17:08:59: Dmwatcher CJC is already in SHUTDOWN status
                                                                                                                                    [monitor] 2022-10-10 17:08:59: Cannot stop dmwatcher process group GRP1

                                                                                                                                    执行crtl+c强制中断

                                                                                                                                    9.3停止dmmonitor

                                                                                                                                    执行crtl+c强制中断

                                                                                                                                    9.4启动

                                                                                                                                    先启动dmwatcher

                                                                                                                                    主库

                                                                                                                                      dmwatcher /dm8/data/CHEN/dmwatcher.ini

                                                                                                                                      从库

                                                                                                                                        dmwatcher /dm8/data/CJC/dmwatcher.ini

                                                                                                                                        再启动dmmonitor

                                                                                                                                          dmmonitor /dm8/data/CHEN/dmmonitor.ini

                                                                                                                                          可以看到,数据库自动启动了

                                                                                                                                            [dmdba@cjc-db-03 CHEN]$ dmmonitor /dm8/data/CHEN/dmmonitor.ini
                                                                                                                                            [monitor] 2022-10-10 17:16:14: DMMONITOR[4.0] V8
                                                                                                                                            [monitor] 2022-10-10 17:16:14: DMMONITOR[4.0] IS READY.
                                                                                                                                            [monitor] 2022-10-10 17:16:15: Received message from(CHEN)
                                                                                                                                            WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
                                                                                                                                            2022-10-10 17:16:14 OPEN OK CHEN OPEN PRIMARY VALID 8 48148 48149
                                                                                                                                            [monitor] 2022-10-10 17:16:15: Received message from(CJC)
                                                                                                                                            WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
                                                                                                                                            2022-10-10 17:16:14 OPEN OK CJC OPEN STANDBY VALID 8 48148 48148

                                                                                                                                            查看进程

                                                                                                                                              [dmdba@cjc-db-03 ~]$ ps -ef|grep dmm|grep -v grep
                                                                                                                                              dmdba 6322 4182 0 17:16 pts/1 00:00:00 dmmonitor /dm8/data/CHEN/dmmonitor.ini
                                                                                                                                              [dmdba@cjc-db-03 ~]$ ps -ef|grep dmw|grep -v grep
                                                                                                                                              dmdba 6213 4731 0 17:15 pts/3 00:00:00 dmwatcher /dm8/data/CHEN/dmwatcher.ini
                                                                                                                                              [dmdba@cjc-db-03 ~]$ ps -ef|grep dms|grep -v grep
                                                                                                                                              dmdba 6227 1 0 17:15 ? 00:00:00 /dm8/bin/dmserver /dm8/data/CHEN/dm.ini mount

                                                                                                                                              通过dmmonitor启动

                                                                                                                                              启动数据库

                                                                                                                                                startup group GRP1

                                                                                                                                                启动dmwatcher

                                                                                                                                                  startup dmwatcher GRP1

                                                                                                                                                  手动启动方式

                                                                                                                                                  监控服务器

                                                                                                                                                    dmmonitor /dm8/data/CHEN/dmmonitor.ini

                                                                                                                                                    主库

                                                                                                                                                      dmserver /dm8/data/CHEN/dm.ini
                                                                                                                                                      dmwatcher /dm8/data/CHEN/dmwatcher.ini

                                                                                                                                                      从库

                                                                                                                                                        dmserver /dm8/data/CJC/dm.ini
                                                                                                                                                        dmwatcher /dm8/data/CJC/dmwatcher.ini

                                                                                                                                                        9.5 dmwatcher常用命令

                                                                                                                                                        查看帮助信息

                                                                                                                                                          help
                                                                                                                                                          Dameng dmwatcher supports the following command:
                                                                                                                                                          1.help --dmwatcher help info
                                                                                                                                                          2.status --show dmwatcher status
                                                                                                                                                          3.show --show local database information of all dmwatcher groups
                                                                                                                                                          4.show group group_name --show local database information of specified group
                                                                                                                                                          5.show version --show self dmwatcher version
                                                                                                                                                          6.show monitor config --help for dmmonitor configuration
                                                                                                                                                          7.show link --show tcp connect info of local dmwatcher
                                                                                                                                                          8.exit --exit dmwatcher
                                                                                                                                                          status
                                                                                                                                                          2022-10-10 17:06:17
                                                                                                                                                          --------------------------
                                                                                                                                                          GROUP_NAME = GRP1
                                                                                                                                                          DW_STATUS = OPEN
                                                                                                                                                          DW_SUB_STATUS = SUB_STATE_START

                                                                                                                                                          9.6 dmmonitor常用命令

                                                                                                                                                          查看帮助信息help

                                                                                                                                                            help
                                                                                                                                                            Dmmonitor supports the following commands:
                                                                                                                                                            NOTE:
                                                                                                                                                            [group_name] in command should be specified if exists more than one group,
                                                                                                                                                            [db_name] in command should be specified if exists more than one instance,
                                                                                                                                                            [group_name] and [db_name] should be separated by '.'
                                                                                                                                                            for [show monitor] command, if [db_name] is empty, then use first active dmwatcher in dmmonitor ini file.
                                                                                                                                                            #=============================================================================================#
                                                                                                                                                            #------------------------------------FOR GLOBAL COMMAND---------------------------------------#
                                                                                                                                                            1.help --show help information
                                                                                                                                                            2.exit --exit dmmonitor
                                                                                                                                                            3.show version --show self dmmonitor version
                                                                                                                                                            4.show global info --show global database information of all groups
                                                                                                                                                            5.show database [group_name.]db_name --show detail database information of specified database
                                                                                                                                                            6.show [group_name] --show detail database information of specified group, if not specified, it will show all groups
                                                                                                                                                            7.show i[nterval] n --auto show database information in console every n seconds
                                                                                                                                                            8.q --cancel 'auto show' in console
                                                                                                                                                            9.list [[group_name.]db_name] --list configuration of specified dmwatcher, if not specified, it will show all dmwatchers
                                                                                                                                                            10.show open info [group_name.]db_name --show open history of specified database
                                                                                                                                                            11.show arch send info [group_name.]db_name --show source database arch send info to specified database(include recover time info)
                                                                                                                                                            12.show apply stat [group_name.]db_name --show specified database apply stat
                                                                                                                                                            13.show monitor [group_name[.]] [db_name] --show all dmmonitor connection info of specified dmwatcher
                                                                                                                                                            14 show state --show state of all monitors which are in the same monitor group with current monitor
                                                                                                                                                            15.tip --show system currently working status
                                                                                                                                                            16.login --login dmmonitor
                                                                                                                                                            17.logout --logout dmmonitor
                                                                                                                                                            18.get takeover time --get how much time will delay before standby instance will do takeover
                                                                                                                                                            19.startup dmwatcher [group_name] --startup watching specified group
                                                                                                                                                            20.stop dmwatcher [group_name] --stop watching specified group
                                                                                                                                                            21.startup group [group_name] --startup all databases of specified group
                                                                                                                                                            22.stop group [group_name] --exit all databases of specified group
                                                                                                                                                            23.kill group [group_name] --kill all active databases of specified group
                                                                                                                                                            24.choose switchover [group_name] --choose databases which can do switchover
                                                                                                                                                            25.choose takeover [group_name] --choose databases which can do takeover
                                                                                                                                                            26.choose takeover force [group_name] --choose databases which can do takeover force
                                                                                                                                                            27.set group [group_name] auto restart on --set all instances of specified group auto restart on
                                                                                                                                                            28.set group [group_name] auto restart off --set all instances of specified group auto restart off
                                                                                                                                                            29.set group [group_name] para_name para_value --set all dmwatchers of specified group configuration(set both ini file and value in memory)
                                                                                                                                                            --if group_name not specified, it will notify all groups to execute
                                                                                                                                                            --para_name: specified parameter name, para_value: specified parameter value
                                                                                                                                                            --can set parameters: DW_ERROR_TIME/INST_RECOVER_TIME/INST_ERROR_TIME/INST_AUTO_RESTART/
                                                                                                                                                            INST_SERVICE_IP_CHECK/RLOG_SEND_THRESHOLD/RLOG_APPLY_THRESHOLD
                                                                                                                                                            30.set group [group_name] recover time time_value --set all standby database of specified group recover time with time_value(time_value is an integer: 3~86400(s))(only set value in dmwatcher memory)
                                                                                                                                                            --if group_name not specified, it will notify all groups to execute
                                                                                                                                                            31.set group [group_name] arch invalid --set all standby databases of specified group arch status invalid
                                                                                                                                                            --if group_name not specified, it will notify all groups to execute
                                                                                                                                                            32.clear group [group_name] arch send info --clear source database recent arch send info to all standby databases of specified group(notify source database to execute)
                                                                                                                                                            --if group_name not specified, it will notify all groups to execute
                                                                                                                                                            33.clear group [group_name] apply stat --clear all standby databases of specified group recent arch apply stat(notify all standby databases to execute)
                                                                                                                                                            --if group_name not specified, it will notify all groups to execute
                                                                                                                                                            34.check recover [group_name.]db_name --check specified database of specified group can be auto recovered or not
                                                                                                                                                            35.check open [group_name.]db_name --check specified database of specified group can be auto opened or not
                                                                                                                                                            36.open database [group_name.]db_name --open specified database of specified group
                                                                                                                                                            37.switchover [group_name[.]] [db_name] --switchover specified database of specified group as primary database
                                                                                                                                                            38.takeover [group_name[.]] [db_name] --use specified database of specified group to takeover as primary database
                                                                                                                                                            39.takeover force [group_name[.]] [db_name] --use specified database of specified group to takeover as primary database forcefully
                                                                                                                                                            40.set database [group_name.]db_name recover time time_value --set specified database of specified group recover time with time_value(time_value is an integer: 3~86400(s))(only set in dmwatcher memory)
                                                                                                                                                            41.set database [group_name.]db_name arch invalid --set specified database of specified group arch status invalid
                                                                                                                                                            42.detach database [group_name.]db_name --detach specified standby database from specified group
                                                                                                                                                            43.attach database [group_name.]db_name --attach specified standby database to specified group
                                                                                                                                                            44.startup dmwatcher database [group_name.]db_name --startup watching specified database
                                                                                                                                                            45.stop dmwatcher database [group_name.]db_name --stop watching specified database
                                                                                                                                                            46.startup database [group_name.]db_name --startup specified database of specified group
                                                                                                                                                            47.stop database [group_name.]db_name --stop specified database of specified group
                                                                                                                                                            48.kill database [group_name.]db_name --kill specified database of specified group
                                                                                                                                                            49.clear database [group_name.]db_name arch send info --clear primary database recent arch send info to specified standby database(notify primary database to execute)
                                                                                                                                                            50.clear database [group_name.]db_name apply stat --clear specified standby database recent arch apply stat(notify standby database to execute)
                                                                                                                                                            51.set database [group_name.]db_name until time time_val --set specified database of specified group archive send until time with time_val
                                                                                                                                                            52.cancel database [group_name.]db_name until time --cancel specified database of specified group archive send until time
                                                                                                                                                            53.show mpp --show mpp site info
                                                                                                                                                            54.startup dmwatcher all --startup watching all groups
                                                                                                                                                            55.stop dmwatcher all --stop watching all groups
                                                                                                                                                            56.startup group all --startup all database of all groups
                                                                                                                                                            57.stop group all --exit all database of all groups
                                                                                                                                                            58.kill group all --kill active database of all groups
                                                                                                                                                            59.check mppctl --check all active primary databases' dmmpp.ctl files are same or not
                                                                                                                                                            60.recover mppctl --recover all active primary databases' dmmpp.ctl files to be same
                                                                                                                                                            ---Type q/Q <return> to quit, or <return> to continue---

                                                                                                                                                            查看当前工作状态

                                                                                                                                                              tip
                                                                                                                                                              [monitor] 2022-10-10 16:41:05: Instance CHEN[PRIMARY, OPEN, ISTAT_SAME:TRUE] cannot join other instances, dmwatcher status is OPEN, SYSOPENHISTORY status is VALID
                                                                                                                                                              [monitor] 2022-10-10 16:41:05: Instance CHEN[PRIMARY, OPEN, ISTAT_SAME:TRUE] has no command to execute currently
                                                                                                                                                              [monitor] 2022-10-10 16:41:05: Instance CHEN[PRIMARY, OPEN, ISTAT_SAME:TRUE] is OK, dmwatcher status is OPEN, dw_type is GLOBAL
                                                                                                                                                              [monitor] 2022-10-10 16:41:05: Instance CJC[STANDBY, OPEN, ISTAT_SAME:TRUE] can join instance CHEN[PRIMARY, OPEN, ISTAT_SAME:TRUE]
                                                                                                                                                              [monitor] 2022-10-10 16:41:05: Instance CJC[STANDBY, OPEN, ISTAT_SAME:TRUE] has no command to execute currently
                                                                                                                                                              [monitor] 2022-10-10 16:41:05: Instance CJC[STANDBY, OPEN, ISTAT_SAME:TRUE] is OK, dmwatcher status is OPEN, dw_type is GLOBAL
                                                                                                                                                              [monitor] 2022-10-10 16:41:05: Group(GRP1) current active instances are OK
                                                                                                                                                              [monitor] 2022-10-10 16:41:05: All groups' current active instances are OK!

                                                                                                                                                              查看详细信息show

                                                                                                                                                                show
                                                                                                                                                                2022-10-10 16:07:22
                                                                                                                                                                #================================================================================#
                                                                                                                                                                GROUP OGUID MON_CONFIRM MODE MPP_FLAG
                                                                                                                                                                GRP1 453331 TRUE AUTO FALSE
                                                                                                                                                                <<DATABASE GLOBAL INFO:>>
                                                                                                                                                                DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                                                                                172.16.6.101 52141 2022-10-10 16:07:22 GLOBAL VALID OPEN CHEN OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
                                                                                                                                                                EP INFO:
                                                                                                                                                                INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
                                                                                                                                                                172.16.6.101 5238 OK CHEN OPEN PRIMARY 0 0 REALTIME VALID 5527 41213 5527 41214 NONE
                                                                                                                                                                <<DATABASE GLOBAL INFO:>>
                                                                                                                                                                DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                                                                                172.16.6.102 52142 2022-10-10 16:07:21 GLOBAL VALID OPEN CJC OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
                                                                                                                                                                EP INFO:
                                                                                                                                                                INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
                                                                                                                                                                172.16.6.102 5238 OK CJC OPEN STANDBY 0 0 REALTIME VALID 5510 41212 5510 41212 NONE
                                                                                                                                                                DATABASE(CJC) APPLY INFO FROM (CHEN), REDOS_PARALLEL_NUM (1):
                                                                                                                                                                DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[5526, 5526, 5527], (RLSN, SLSN, KLSN)[41212, 41212, 41213], N_TSK[0], TSK_MEM_USE[512]
                                                                                                                                                                REDO_LSN_ARR: (41212)
                                                                                                                                                                #================================================================================#

                                                                                                                                                                查看数据库信息

                                                                                                                                                                  show global info
                                                                                                                                                                  2022-10-10 16:23:28
                                                                                                                                                                  #================================================================================#
                                                                                                                                                                  GROUP OGUID MON_CONFIRM MODE MPP_FLAG
                                                                                                                                                                  GRP1 453331 TRUE AUTO FALSE
                                                                                                                                                                  <<DATABASE GLOBAL INFO:>>
                                                                                                                                                                  DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                                                                                  172.16.6.101 52141 2022-10-10 16:23:26 GLOBAL VALID OPEN CHEN OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
                                                                                                                                                                  DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                                                                                  172.16.6.102 52142 2022-10-10 16:23:27 GLOBAL VALID OPEN CJC OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
                                                                                                                                                                  #================================================================================#

                                                                                                                                                                  查看日志   

                                                                                                                                                                    [dmdba@cjc-db-03 log]$ tail -10f dmmonitor_20221010155019.log
                                                                                                                                                                    [monitor] 2022-10-10 15:54:19:
                                                                                                                                                                    GROUP OGUID MON_CONFIRM MODE MPP_FLAG
                                                                                                                                                                    GRP1 453331 TRUE AUTO FALSE
                                                                                                                                                                    <<DATABASE GLOBAL INFO:>>
                                                                                                                                                                    DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
                                                                                                                                                                    172.16.6.101 52141 2022-10-10 15:54:18 GLOBAL VALID STARTUP CHEN OK 1 1 MOUNT PRIMARY DSC_OPEN REALTIME VALID
                                                                                                                                                                    EP INFO:
                                                                                                                                                                    INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
                                                                                                                                                                    172.16.6.101 5238 OK CHEN MOUNT PRIMARY 0 0 REALTIME VALID 5510 39941 5510 39941 NONE

                                                                                                                                                                    十:故障排查

                                                                                                                                                                    10.1启动dmwatcher后数据库没有自动OPEN

                                                                                                                                                                    问题现象:

                                                                                                                                                                    1.启动dmwatcher后数据库没有自动OPEN

                                                                                                                                                                    2.启动dmmonitor后,没有备库信息,主库状态为MOUNT

                                                                                                                                                                    主库

                                                                                                                                                                      [dmdba@cjc-db-03 dm8]$ disql SYSDBA/Dameng123:5238
                                                                                                                                                                      Server[LOCALHOST:5238]: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,恢复正常。

                                                                                                                                                                        文章转载自IT小Chen,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                                                                                                                                        评论