DM数据库学习之路(七)DM8实时主备集群+异步备库部署及测试

  1. 引言

在实际应用中,如果数据库规模很大,并且对数据的实时性要求不是很严格,则可以配置多个异步备库用于分担统计报表等任务。

异步备库支持多源配置,目的是在实时或即时主备环境中,当主备库切换或者主库故障时,备库接管以后可以继续向同一个异步备库同步数据,因此如果主库配置了异步备库,在所有备库上也需要配置相同的异步备库,备库只有在切换为主库时才会向其同步数据。

2.实时主备集群+异步备库部署

2​.1​​​​​​ 集群部署规划

2.2 集群主机规划

类型

主机名

业务IP

数据库名

实例名

操作系统

实时主库

dm8dw01

84.0.191.5

10.10.10.5

CUGDB

CUGDB01

Kylin-Server-V10-SP3

实时备库

dm8dw02

84.0.191.6

10.10.10.6

CUGDB

CUGDB02

Kylin-Server-V10-SP3

异步备库

dm8dw03

84.0.191.8

10.10.10.8

CUGDB

CUGDB03

Kylin-Server-V10-SP3

监控

dm8monitor

10.10.10.7

Kylin-Server-V10-SP3

组名为GRP1,主库为:CUGDB01,备库为:CUGDB02

2.3集群端口规划

实例名

PORT_NUM

MAL_INST_DW_PORT

MAL_HOST

MAL_PORT

MAL_DW_PORT

CUGDB01

5236

5336

10.10.10.5

5436

5536

CUGDB02

5236

5336

10.10.10.6

5436

5536

CUGDB03

5236

5336

10.10.10.8

5436

5536

类型

实例端口

实例

目录

归档

目录

日志

目录

备份

目录

实时

主库

5236

/dm8/data/CUGDB

/dm8/data/arch

/dm8/data/log

/dm8/data/backup

实时

备库

5236

/dm8/data/CUGDB

/dm8/data/arch

/dm8/data/log

/dm8/data/backup

异步

备库

5236

/dm8/data/CUGDB

/dm8/data/arch

/dm8/data/log

/dm8/data/backu

  1. 集群部署准备
    1. hosts配置

#  cat /etc/hosts

84.0.191.5  dm8dw01

10.10.10.5  dm8dw01prv

84.0.191.6  dm8dw02

10.10.10.6  dm8dw02prv

10.10.10.7  dm8monitor

84.0.191.8  dm8dw03

10.10.10.8  dm8dw03prv

      1. 关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

sed -i '/^SELINUX=.*/ s//SELINUX=disabled/' /etc/selinux/config

setenforce 0

      1. sysctl.conf参数配置

##添加配置:

cat >> /etc/systemd/system.conf << EOF

DefaultLimitNOFILE=65536

DefaultLimitNPROC=10240

EOF

说明:

system.conf为系统和服务管理的配置文件,当运行系统实例时,systemd 将读取这个配置文件system.conf,相反读取user.conf

达梦数据库服务注册为系统服务的进程,如通过 systemctl 或者 service 方式设定随机自启动的数据库服务,其能打开的最大文件描述符、proc 数量等不受 limits.conf 控制,需要修改 /etc/systemd/system.conf 文件。

      1. limits.conf 参数配置

cat >> /etc/security/limits.conf << EOF

dmdba soft nproc 10240

dmdba hard nproc 10240

dmdba soft nofile 65536

dmdba hard nofile 65536

dmdba  hard  stack  32768

dmdba  soft  stack  16384

dmdba hard data unlimited

dmdba soft data unlimited

dmdba hard fsize unlimited

dmdba soft fsize unlimited

dmdba soft core unlimited

dmdba hard core unlimited

EOF

参数说明:

core - 限制内核文件的大小(KB)

nproc 对每个用户创建的进程数的限制,默认的很小,泄露的时候多

nofile-一个进程能打开的文件数

stack堆大小,堆-存放变量的位置

重启后验证limit参数:

su - dmdba

ulimit -a  ## 确认是否生效

      1. nproc.conf参数配置

其中麒麟 10 中是 nproc.conf;

nproc 是操作系统级别对每个用户创建的进程数的限制

##添加配置:

cat >> /etc/security/limits.d/nproc.conf << EOF

dmdba soft nproc 65536

dmdba hard nproc 65536

EOF

参数说明:

soft 表示软限制,hard 表示硬限制,nproc 进程数,nofile 文件数

##确定是否生效:

$ ulimit -u

10240

      1. 建用户

groupadd dinstall

useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

passwd dmdba

      1. 配置环境变量

su – dmdba

vi .bash_profile

export DM_HOME=/dm8/dmdbms

export PATH=$DM_HOME/bin:$PATH:$DM_HOME/tool:$PATH:HOME/bin:/usr/local/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

. .bash_profile 让其生效

      1. 建安装目录

##主备库

mkdir -p /dm8/dmdbms

mkdir -p /dm8/data/arch

mkdir -p /dm8/data/log

mkdir -p /dm8/data/backupon

chown -R dmdba:dinstall /dm8

chmod 755 -R /dm8

##monitor

mkdir -p /dm8/dmdbms

mkdir -p /dm8/data/monitor

mkdir -p /dm8/data/log

chown -R dmdba:dinstall /dm8

chmod 755 -R /dm8

    1. 安装DM SOFT软件
      1. 实时主服务器DM SOFT安装

注:安装dm soft并初始化实例

        1. 安装dm soft

[root@dm8dw01 ~]# mount -o loop /soft/dm8_20231109_x86_kylin10_64.iso /mnt

[dmdba@dm8dw01 mnt]$ ./DMInstall.bin -i

Installer Language:

[1]: 简体中文

[2]: English

Please select the installer's language [2]:1

解压安装程序..........

欢迎使用达梦数据库安装程序

是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n

是否设置时区? (Y/y:是 N/n:否) [Y/y]:y

设置时区:

[ 1]: (GTM-12:00) 日界线西

[ 2]: (GTM-11:00) 萨摩亚群岛

[ 3]: (GTM-10:00) 夏威夷

[ 4]: (GTM-09:00) 阿拉斯加

[ 5]: (GTM-08:00) 太平洋时间(美国和加拿大)

[ 6]: (GTM-07:00) 亚利桑那

[ 7]: (GTM-06:00) 中部时间(美国和加拿大)

[ 8]: (GTM-05:00) 东部部时间(美国和加拿大)

[ 9]: (GTM-04:00) 大西洋时间(美国和加拿大)

[10]: (GTM-03:00) 巴西利亚

[11]: (GTM-02:00) 中大西洋

[12]: (GTM-01:00) 亚速尔群岛

[13]: (GTM) 格林威治标准时间

[14]: (GTM+01:00) 萨拉热窝

[15]: (GTM+02:00) 开罗

[16]: (GTM+03:00) 莫斯科

[17]: (GTM+04:00) 阿布扎比

[18]: (GTM+05:00) 伊斯兰堡

[19]: (GTM+06:00) 达卡

[20]: (GTM+07:00) 曼谷,河内

[21]: (GTM+08:00) 中国标准时间

[22]: (GTM+09:00) 首尔

[23]: (GTM+10:00) 关岛

[24]: (GTM+11:00) 所罗门群岛

[25]: (GTM+12:00) 斐济

[26]: (GTM+13:00) 努库阿勒法

[27]: (GTM+14:00) 基里巴斯

请选择时区 [21]:21

安装类型:

1 典型安装

2 服务器

3 客户端

4 自定义

请选择安装类型的数字序号 [1 典型安装]:1

所需空间: 2037M

请选择安装目录 [/home/dmdba/dmdbms]:/dm8/dmdbms

可用空间: 46G

是否确认安装路径(/dm8/dmdbms)? (Y/y:是 N/n:否)  [Y/y]:y

安装前小结

安装位置: /dm8/dmdbms

所需空间: 2037M

可用空间: 46G

版本信息:

有效日期:

安装类型: 典型安装

是否确认安装? (Y/y:是 N/n:否):y

2024-01-10 11:33:03

[INFO] 安装达梦数据库...

2024-01-10 11:33:04

[INFO] 安装 基础 模块...

2024-01-10 11:33:10

[INFO] 安装 服务器 模块...

2024-01-10 11:33:11

[INFO] 安装 客户端 模块...

2024-01-10 11:33:13

[INFO] 安装 驱动 模块...

2024-01-10 11:33:16

[INFO] 安装 手册 模块...

2024-01-10 11:33:16

[INFO] 安装 服务 模块...

2024-01-10 11:33:17

[INFO] 移动日志文件。

2024-01-10 11:33:17

[INFO] 安装达梦数据库完成。

请以root系统用户执行命令:

/dm8/dmdbms/script/root/root_installer.sh

安装结束

[root@dm8dw01 ~]# /dm8/dmdbms/script/root/root_installer.sh

移动 /dm8/dmdbms/bin/dm_svc.conf 到/etc目录

创建DmAPService服务

Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service → /usr/lib/systemd/system/DmAPService.service.

创建服务(DmAPService)完成

启动DmAPService服务

        1. 初始化数据库

##创建实例

[root@dm8dw01 ~]#  su - dmdba

[dmdba@dm8dw01 ~]$ /dm8/dmdbms/bin/dminit path=/dm8/data EXTENT_SIZE=16 PAGE_SIZE=32 case_sensitive=1 charset=1 log_size=2048 db_name=CUGDB instance_name=CUGDB01 PORT_NUM=5236 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA2023" SYSAUDITOR_PWD="SYSDBA2023" ELOG_PATH=/dm8/data/log

##初始化

[dmdba@dm8dw01 ~]$ /dm8/dmdbms/bin/dmserver /dm8/data/CUGDB/dm.ini

file dm.key not found, use default license!

version info: develop

Use normal os_malloc instead of HugeTLB

Use normal os_malloc instead of HugeTLB

DM Database Server x64 V8 1-1-72-20.04.03-119959-ENT  startup...

....

systables desc init success.

ndct_db_load_info success.

nsvr_process_before_open begin.

nsvr_process_before_open success.

total 0 active crash trx, pseg_crash_trx_rollback begin ...

pseg_crash_trx_rollback end

SYSTEM IS READY.  ##表示成功

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

使用dminit初始化的实例,需要先前台起一次数据库服务,出现system is ready后输入exit停止数据库。

        1. 注册服务并启动实例

[root@dm8dw01 ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm8/data/CUGDB/dm.ini -p CUGDB

[root@dm8dw01 ~]# systemctl start DmServiceCUGDB

        1. 开启主库归档

[dmdba@dm8dw01 ~]$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

//切换数据库到配置状态

SQL> alter database mount;

//设置本地归档,归档路径,归档尺寸

SQL> alter database add ARCHIVELOG 'type=local,dest=/dm8/data/arch,file_size=1024,space_limit=0';

//开启归档

SQL> alter database ARCHIVELOG;

//打开数据库

SQL> alter database open;

SQL> select arch_mode from v$database;

LINEID     ARCH_MODE

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

Y

说明:

space_limit参数对应dmarch.ini中ARCH_SPACE_LIMIT参数。

该参数表示归档文件的磁盘空间限制,如果归档文件总大小超过这个值,则在生成新归档文件前会删除最老的一个归档文件。

如果在设置时,该参数设置为0表示不受限制。

      1. 实时备服务器DM SOFT安装

安装dm soft并初始化实例

        1. 安装dm soft

同上

        1. 初始化数据库

##创建实例

[root@dm8dw02 ~]#  su - dmdba

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/dminit path=/dm8/data EXTENT_SIZE=16 PAGE_SIZE=32 case_sensitive=1 charset=1 log_size=2048 db_name=CUGDB instance_name=CUGDB02 PORT_NUM=5236 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA2023" SYSAUDITOR_PWD="SYSDBA2023" ELOG_PATH=/dm8/data/log

##初始化

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/dmserver /dm8/data/CUGDB/dm.ini

        1. 注册服务并启动实例

[root@dm8dw02 ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm8/data/CUGDB/dm.ini -p CUGDB

[root@dm8dw02 ~]# systemctl start DmServiceCUGDB

        1. 开启主库归档

[dmdba@dm8dw01 ~]$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

//切换数据库到配置状态

SQL> alter database mount;

//设置本地归档,归档路径,归档尺寸

SQL> alter database add ARCHIVELOG 'type=local,dest=/dm8/data/arch,file_size=1024,space_limit=0';

//开启归档

SQL> alter database ARCHIVELOG;

//打开数据库

SQL> alter database open;

SQL> select arch_mode from v$database;

LINEID     ARCH_MODE

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

Y

      1. 异步备服务器DM SOFT安装

安装dm soft并初始化实例

        1. 安装dm soft

同上

        1. 初始化数据库

##创建实例

[root@dm8dw03 ~]#  su - dmdba

[dmdba@dm8dw03 ~]$ /dm8/dmdbms/bin/dminit path=/dm8/data EXTENT_SIZE=16 PAGE_SIZE=32 case_sensitive=1 charset=1 log_size=2048 db_name=CUGDB instance_name=CUGDB03 PORT_NUM=5236 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA2023" SYSAUDITOR_PWD="SYSDBA2023" ELOG_PATH=/dm8/data/log

##初始化

[dmdba@dm8dw03 ~]$ /dm8/dmdbms/bin/dmserver /dm8/data/CUGDB/dm.ini

        1. 注册服务并启动实例

[root@dm8dw03 ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm8/data/CUGDB/dm.ini -p CUGDB

[root@dm8dw03 ~]# systemctl start DmServiceCUGDB

        1. 开启主库归档

[dmdba@dm8dw03 ~]$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

//切换数据库到配置状态

SQL> alter database mount;

//设置本地归档,归档路径,归档尺寸

SQL> alter database add ARCHIVELOG 'type=local,dest=/dm8/data/arch,file_size=1024,space_limit=0';

//开启归档

SQL> alter database ARCHIVELOG;

//打开数据库

SQL> alter database open;

SQL> select arch_mode from v$database;

LINEID     ARCH_MODE

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

Y

      1. 监控服务器DM SOFT安装

只安装dm soft不初始化实例

同上

    1. DMRMAN备份主库并恢复备库
      1. 确认主库 dmap 是否启动

[dmdba@dm8dw01 ~]$ ps -ef|grep dmap

若未启动,则先启动 DMAP 服务

[dmdba@dm8dw01 ~]$ /dm8/dmdbms/bin/DmAPService start

Starting DmAPService:                                      [ OK ]

      1. 方法一:脱机备份、脱机还原方式
  1. 正常关闭主机数据库

[dmdba@dm8dw01 ~]$ /dm8/dmdbms/bin/DmServiceCUGDB stop

  1. 进行脱机备份

[dmdba@dm8dw01 ~]$ /dm8/dmdbms/bin/dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/CUGDB/dm.ini' FULL BACKUPSET '/dm8/data/backup'"

  1. 拷贝备份文件到备库所在机器

[dmdba@dm8dw01 ~]$ scp -rp /dm8/data/backup/* 84.0.191.6:/dm8/data/backup

  1. 执行脱机数据库还原与恢复

数据库还原:

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/DmServiceCUGDB stop

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/CUGDB/dm.ini' FROM BACKUPSET  '/dm8/data/backup'"

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' UPDATE DB_MAGIC"

      1. 方法二:联机备份、脱机还原方式
  1. 对主库进行联机备份操作

[dmdba@dm8dw01 ~]$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

SQL> BACKUP DATABASE BACKUPSET '/dm8/back';

  1. 拷贝备份文件到备库所在机器

[dmdba@dm8dw01 ~]$ scp -rp /dm8/back/* 84.0.191.6:/dm8/back

  1. 执行脱机数据库还原与恢复

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/DmServiceCUGDB stop

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/CUGDB/dm.ini' FROM BACKUPSET '/dm8/back'"

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' FROM BACKUPSET '/dm8/back'"

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' UPDATE DB_MAGIC"

    1. 配置主备库参数文件
      1. 配置文件说明

与 DM 数据守护相关的配置文件包括:

  数据库配置文件 dm.ini

  数据库控制文件 dm.ctl

  MAL 配置文件 dmmal.ini

  Redo 日志归档配置文件 dmarch.ini

  守护进程配置文件 dmwatcher.ini

  监视器配置文件 dmmonitor.ini

  定时器配置文件 dmtimer.ini

  MPP 控制文件 dmmpp.ctl 等等

      1. 配置实时主库参数文件
        1. 配置dm.ini

#配置有异步归档时,打开定时器,定时同步归档到异备库

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

[dmdba@dm8dw01 ~]$ vi /dm8/data/CUGDB/dm.ini

INSTANCE_NAME = CUGDB01       #实例名

PORT_NUM = 5236               #数据库实例监听端口

DW_INACTIVE_INTERVAL = 60     #接收守护进程消息超时时间

ALTER_MODE_STATUS = 0         #不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2         #不允许备库OFFLINE表空间

MAL_INI = 1                   #打开MAL系统

ARCH_INI = 1                  #打开归档配置

RLOG_SEND_APPLY_MON = 64      #统计最近64次的日志发送信息

TIMER_INI = 1            #配置有异步归档时,打开定时器,定时同步归档到异步备库

        1. 配置dmmal.ini

在实时主备库dmmal.ini基础上增加异步备库dm8dw03的配置项。

vi /dm8/data/CUGDB/dmmal.ini

MAL_CHECK_INTERVAL = 5          #MAL链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5      #判定MAL链路断开的时间

[MAL_INST1]

MAL_INST_NAME = CUGDB01         #实例名,和dm.ini中的INSTANCE_NAME一致

MAL_HOST = 10.10.10.5           #MAL系统监听TCP连接的IP地址,可以使用私网IP

MAL_PORT = 5436                 #MAL系统监听TCP连接的端口

MAL_INST_HOST = 84.0.191.5     #实例的对外服务IP地址

MAL_INST_PORT = 5236            #实例的对外服务端口,和dm.ini中的PORT_NUM一致

MAL_DW_PORT = 5536              #实例对应的守护进程监听TCP连接的端口

MAL_INST_DW_PORT = 5336         #实例监听守护进程TCP连接的端口

[MAL_INST2]

MAL_INST_NAME = CUGDB02

MAL_HOST = 10.10.10.6

MAL_PORT = 5436

MAL_INST_HOST = 84.0.191.6

MAL_INST_PORT = 5236

MAL_DW_PORT = 5536

MAL_INST_DW_PORT = 5336

[MAL_INST3]

MAL_INST_NAME = CUGDB03          #实例名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST  = 10.10.10.8           #MAL系统监听TCP连接的IP地址(私网IP)

MAL_PORT  = 5436                 #MAL 系统监听 TCP 连接的端口

MAL_INST_HOST = 84.0.191.8       #实例的对外服务 IP 地址

MAL_INST_PORT = 5236            #实例的对外服务端口和 dm.ini 中的PORT_NUM 一致

MAL_DW_PORT = 5536               #实例对应的守护进程监听 TCP 连接的端口

MAL_INST_DW_PORT = 5336          #实例监听守护进程 TCP 连接的端口

        1. 配置dmarch.ini

在配置 dmarch.ini 的基础上,增加异步归档的配置项。

[dmdba@dm8dw01 ~]$vi /dm8/data/CUGDB/dmarch.ini

[ARCHIVE_TIMELY1]

ARCH_TYPE = REALTIME               #实时归档类型

ARCH_DEST = CUGDB02                 #即时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL                  #本地归档类型

ARCH_DEST = /dm8/data/arch          #本地归档文件存放路径

ARCH_FILE_SIZE = 2048              #单位Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0                #单位Mb,0表示无限制,范围1024~4294967294M

[ARCHIVE_ASYNC]

ARCH_TYPE  = ASYNC           #异步归档类型

ARCH_DEST  = CUGDB03         #异步归档目标实例名

ARCH_TIMER_NAME = RT_TIMER   #定时器名称和dmtimer.ini中的名称一致

        1. 配置dmtimer.ini

配置 dmtimer.ini,用于定时触发实例发送归档日志到异步备库。

下面示例中定时器配置为每天 00:00:00 触发主库发送归档日志到异步备库,可以根据

实际情况再做调整。

[RT_TIMER] #和 dmarch.ini 中的 ARCH_TIMER_NAME 一致

[dmdba@dm8dw01 ~]$vi /dm8/data/CUGDB/dmtimer.ini

[RT_TIMER]

TYPE = 2

FREQ_MONTH_WEEK_INTERVAL = 1

FREQ_SUB_INTERVAL = 0

FREQ_MINUTE_INTERVAL = 0

START_TIME = 00:00:00

END_TIME = 00:00:00

DURING_START_DATE = 2023-01-16 15:00:00

DURING_END_DATE = 9999-12-31 23:59:59

NO_END_DATE_FLAG = 1

DESCRIBE = RT TIMER

IS_VALID = 1

        1. 配置dmwatcher.ini

[dmdba@dm8dw01 ~]$vi /dm8/data/CUGDB/dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL                             #全局守护类型

DW_MODE = AUTO                               #自动切换模式

DW_ERROR_TIME = 10                            #远程守护进程故障认定时间

INST_RECOVER_TIME = 60                        #主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 10                          #本地实例故障认定时间

INST_OGUID = 453332                           #守护系统唯一OGUID值

INST_INI = /dm8/data/CUGDB/dm.ini            #dm.ini配置文件路径

INST_AUTO_RESTART = 1                         #打开实例的自动启动功能

INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver   #命令行方式启动

RLOG_SEND_THRESHOLD = 0                       #指定主库发送日志到备库的时间阀值,默认关闭

RLOG_APPLY_THRESHOLD = 0                    #指定备库重演日志的时间阀值,默认关闭

[dmdba@dm8dw01 ~]$ scp  /dm8/data/CUGDB/dmwatcher.ini 84.0.191.6:/dm8/data/CUGDB/

        1. 设置主库OGUID并修改数据库模式

主库(以mount形式启动)

[dmdba@dm8dw01 ~]$ /dm8/dmdbms/bin/DmServiceCUGDB stop

[dmdba@dm8dw01 ~]$ /dm8/dmdbms/bin/dmserver  /dm8/data/CUGDB/dm.ini mount

打开另外一个窗口,以上窗口不要关闭

[dmdba@dm8dw01 ~]$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL> sp_set_oguid(453332);     #与dmwatcher.ini中INST_OGUID相同

SQL> alter database primary;

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

SQL> select status$ from v$instance;

LINEID     STATUS$

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

1          MOUNT

        1. 配置观察监视器dmmonitor.ini

[dmdba@dm8dw01 ~]$ vi /dm8/data/CUGDB/dmmonitor.ini

MON_DW_Confirm = 0             #1确认监视器模式,0表示观察监视器

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 = 453332        #组GRP1的唯一OGUID值

#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置

#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT

MON_DW_IP = 10.10.10.5:5536    #私网IP

MON_DW_IP = 10.10.10.6:5536    #私网IP

注:

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

        1. 注册主库守护进程并启动

主库:

[root@dm8dw01 ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/CUGDB/dmwatcher.ini -p CUGDB01

主备库启动服务:

[root@dm8dw01 ~]# systemctl start DmWatcherServiceCUGDB01

或者

[root@dm8dw01 ~]# su - dmdba

[dmdba@dm8dw01 ~]$ /dm8/dmdbms/bin/DmWatcherServiceCUGDB01 start

主备进程启动后,进入startup状态,守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例切换为OPEN.

SQL> select status$ from v$instance;

行号     STATUS$

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

1          OPEN

或者手工确认

[dmdba@dm8dw01 ~]$ /dm8/dmdbms/bin/dmwatcher /dm8/data/CUGDB/dmwatcher.ini

数据库会自动从 mount转换成open状态。

SQL> select status$ from v$instance;

行号     STATUS$

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

1          OPEN

        1. 启动监视器

[dmdba@dm8dw01 ~]$ /dm8/dmdbms/bin/dmmonitor  /dm8/data/CUGDB/dmmonitor.ini

      1. 配置实时备库参数文件
        1. 配置dm.ini

[dmdba@dm8dw02 ~]$ vi /dm8/data/CUGDB/dm.ini

INSTANCE_NAME = CUGDB02

PORT_NUM = 5236             #数据库实例监听端口

DW_INACTIVE_INTERVAL = 60   #接收守护进程消息超时时间

ALTER_MODE_STATUS = 0       #不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2       #不允许备库OFFLINE表空间

MAL_INI = 1                 #打开MAL系统

ARCH_INI = 1                #打开归档配置

RLOG_SEND_APPLY_MON = 64    #统计最近64次的日志发送信息

TIMER_INI = 1            #配置有异步归档时,打开定时器,定时同步归档到异步备库

        1. 配置dmmal.ini

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

vi /dm8/data/CUGDB/dmmal.ini

MAL_CHECK_INTERVAL = 5          #MAL链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5      #判定MAL链路断开的时间

[MAL_INST1]

MAL_INST_NAME = CUGDB01     #实例名,和dm.ini中的INSTANCE_NAME一致

MAL_HOST = 10.10.10.5           #MAL系统监听TCP连接的IP地址,可以使用私同IP

MAL_PORT = 5436                 #MAL系统监听TCP连接的端口

MAL_INST_HOST = 84.0.191.5     #实例的对外服务IP地址

MAL_INST_PORT = 5236            #实例的对外服务端口,和dm.ini中的PORT_NUM一致

MAL_DW_PORT = 5536              #实例对应的守护进程监听TCP连接的端口

MAL_INST_DW_PORT = 5336         #实例监听守护进程TCP连接的端口

[MAL_INST2]

MAL_INST_NAME = CUGDB02

MAL_HOST = 10.10.10.6

MAL_PORT = 5436

MAL_INST_HOST = 84.0.191.6

MAL_INST_PORT = 5236

MAL_DW_PORT = 5536

MAL_INST_DW_PORT = 5336

[MAL_INST3]

MAL_INST_NAME = CUGDB03          #实例名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST  = 10.10.10.8           #MAL系统监听TCP连接的IP地址(私网IP)

MAL_PORT  = 5436                 #MAL 系统监听 TCP 连接的端口

MAL_INST_HOST = 84.0.191.8       #实例的对外服务 IP 地址

MAL_INST_PORT = 5236            #实例的对外服务端口和 dm.ini 中的PORT_NUM 一致

MAL_DW_PORT = 5536               #实例对应的守护进程监听 TCP 连接的端口

MAL_INST_DW_PORT = 5336          #实例监听守护进程 TCP 连接的端口

        1. 配置dmarch.ini

[dmdba@dm8dw02 ~]$vi /dm8/data/CUGDB/dmarch.ini

[ARCHIVE_TIMELY1]

ARCH_TYPE = REALTIME            #实时归档类型

ARCH_DEST = CUGDB01             #即时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL                  #本地归档类型

ARCH_DEST = /dm8/data/arch          #本地归档文件存放路径

ARCH_FILE_SIZE = 2048              #单位Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0                #单位Mb,0表示无限制,范围1024~4294967294M

[ARCHIVE_ASYNC]

ARCH_TYPE  = ASYNC           #异步归档类型

ARCH_DEST  = CUGDB03         #异步归档目标实例名

ARCH_TIMER_NAME = RT_TIMER   #定时器名称,和dmtimer.ini中的名称一致

        1. 配置dmtimer.ini

配置 dmtimer.ini,用于备库切换为主库后,定时触发实例发送归档日志到异步备库。

下面示例中定时器配置为每天 00:00:00 触发主库发送归档日志到异步备库,可以根据

实际情况再做调整。

[RT_TIMER] #和 dmarch.ini 中的 ARCH_TIMER_NAME 一致

[dmdba@dm8dw02 ~]$vi /dm8/data/CUGDB/dmtimer.ini

[RT_TIMER]

TYPE = 2

FREQ_MONTH_WEEK_INTERVAL = 1

FREQ_SUB_INTERVAL = 0

FREQ_MINUTE_INTERVAL = 0

START_TIME = 00:00:00

END_TIME = 00:00:00

DURING_START_DATE = 2023-01-16 15:00:00

DURING_END_DATE = 9999-12-31 23:59:59

NO_END_DATE_FLAG = 1

DESCRIBE = RT TIMER

IS_VALID = 1

        1. 配置dmwatcher.ini

[dmdba@dm8dw02 ~]$vi /dm8/data/CUGDB/dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL                             #全局守护类型

DW_MODE = AUTO                               #自动切换模式

DW_ERROR_TIME = 10                            #远程守护进程故障认定时间

INST_RECOVER_TIME = 60                        #主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 10                          #本地实例故障认定时间

INST_OGUID = 453332                           #守护系统唯一OGUID值

INST_INI = /dm8/data/CUGDB/dm.ini           #dm.ini配置文件路径

INST_AUTO_RESTART = 1                         #打开实例的自动启动功能

INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver   #命令行方式启动

RLOG_SEND_THRESHOLD = 0                       #指定主库发送日志到备库的时间阀值,默认关闭

RLOG_APPLY_THRESHOLD = 0                      #指定备库重演日志的时间阀值,默认关闭

        1. 设置备库OGUID并修改数据库模式

启动到mount状态下操作

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/DmServiceCUGDB stop

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin//dmserver /dm8/data/CUGDB/dm.ini mount

打开另外一个窗口,以上窗口不要关闭

[dmdba@dm8dw02 ~]$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL> sp_set_oguid(453332);     ##设置所有备库的OGUID与主库相同

SQL> alter database standby;   ##修改备库模式

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

SQL> select status$ from v$instance;

LINEID     STATUS$

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

1          MOUNT

        1. 配置观察监视器dmmonitor.ini

[dmdba@dm8dw02 ~]$ vi /dm8/data/CUGDB/dmmonitor.ini

MON_DW_Confirm = 0             #1确认监视器模式,0表示观察监视器

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 = 453332        #组GRP1的唯一OGUID值

#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置

#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT

MON_DW_IP = 10.10.10.5:5536    #私网IP

MON_DW_IP = 10.10.10.6:5536    #私网IP

注:

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

        1. 注册备库守护进程并启动

[root@dm8dw02 ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/CUGDB/dmwatcher.ini -p CUGDB02

备库启动服务:

[root@dm8dw02 ~]# systemctl start DmWatcherServiceCUGDB02

或者

[root@dm8dw02 ~]# su - dmdba

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/DmWatcherServiceCUGDB02 start

主备进程启动后,进入startup状态,守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例切换为OPEN.

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

        1. 启动监视器

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/dmmonitor  /dm8/data/CUGDB/dmmonitor.ini

      1. 配置异步备库参数文件
        1. 配置dm.ini

[dmdba@dm8dw03 ~]$ vi /dm8/data/CUGDB/dm.ini

INSTANCE_NAME = CUGDB03

PORT_NUM = 5236             #数据库实例监听端口

DW_INACTIVE_INTERVAL = 60   #接收守护进程消息超时时间

ALTER_MODE_STATUS = 0       #不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2       #不允许备库OFFLINE表空间

MAL_INI = 1                 #打开MAL系统

ARCH_INI = 1                #打开归档配置

RLOG_SEND_APPLY_MON = 64    #统计最近64次的日志发送信息

TIMER_INI = 1/0  #使CUGDB03备库定时发送归档到CUGDB04异步备库,没有级联就填0

        1. 配置dmmal.in

同一个守护进程组中,所有主备库必须使用相同的 dmmal.ini 配置文件,这里可以直接拷贝

vi /dm8/data/CUGDB/dmmal.ini

MAL_CHECK_INTERVAL = 5          #MAL链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5      #判定MAL链路断开的时间

[MAL_INST1]

MAL_INST_NAME = CUGDB01     #实例名,和dm.ini中的INSTANCE_NAME一致

MAL_HOST = 10.10.10.5           #MAL系统监听TCP连接的IP地址,可以使用私同IP

MAL_PORT = 5436                 #MAL系统监听TCP连接的端口

MAL_INST_HOST = 84.0.191.5     #实例的对外服务IP地址

MAL_INST_PORT = 5236            #实例的对外服务端口,和dm.ini中的PORT_NUM一致

MAL_DW_PORT = 5536              #实例对应的守护进程监听TCP连接的端口

MAL_INST_DW_PORT = 5336         #实例监听守护进程TCP连接的端口

[MAL_INST2]

MAL_INST_NAME = CUGDB02

MAL_HOST = 10.10.10.6

MAL_PORT = 5436

MAL_INST_HOST = 84.0.191.6

MAL_INST_PORT = 5236

MAL_DW_PORT = 5536

MAL_INST_DW_PORT = 5336

[MAL_INST3]

MAL_INST_NAME = CUGDB03          #实例名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST  = 10.10.10.8           #MAL系统监听TCP连接的IP地址(私网IP)

MAL_PORT  = 5436                 #MAL 系统监听 TCP 连接的端口

MAL_INST_HOST = 84.0.191.8       #实例的对外服务 IP 地址

MAL_INST_PORT = 5236            #实例的对外服务端口和 dm.ini 中的PORT_NUM 一致

MAL_DW_PORT = 5536               #实例对应的守护进程监听 TCP 连接的端口

MAL_INST_DW_PORT = 5336          #实例监听守护进程 TCP 连接的端口

        1. 配置dmarch.ini

修改 dmarch.ini,配置本地归档和异步归档。

在异步归档配置项中,ARCH_DEST 表示当前实例需要同步归档数据的目标实例名

二个异步备库,需要在当前实例 CUGDB03上,级联配置异步备库CUGDB04,因此异步归档的ARCH_DEST配置为CUGDB04。如果只有一个异步备库,此处不填。

[dmdba@dm8dw03 ~]$vi /dm8/data/CUGDB/dmarch.ini

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL                  #本地归档类型

ARCH_DEST = /dm8/data/arch          #本地归档文件存放路径

ARCH_FILE_SIZE = 2048              #单位Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0           #单位Mb,0表示无限制,范围1024~4294967294M

注:如果只有一个异步备库,上面本地归档即可,如果有二个异步备库需添加下面级联配置。

[ARCHIVE_ASYNC]

ARCH_TYPE  = ASYNC           #异步归档类型

#ARCH_DEST  = CUGDB04        #异步归档目标实例名

ARCH_TIMER_NAME = RT_TIMER   #定时器名称,和 dmtimer.ini 中的名称一致

        1. 配置dmtimer.ini

配置 dmtimer.ini,用于定时触发实例发送归档日志到异步备库。

下面示例中定时器配置为每天 00:00:00 触发CUGDB03发送归档日志到异步备库CUGDB04,可以根据实际情况再做调整。

[RT_TIMER] #和 dmarch.ini 中的 ARCH_TIMER_NAME 一致

[dmdba@dm8dw03 ~]$vi /dm8/data/CUGDB/dmtimer.ini

[RT_TIMER]

TYPE = 2

FREQ_MONTH_WEEK_INTERVAL = 1

FREQ_SUB_INTERVAL = 0

FREQ_MINUTE_INTERVAL = 0

START_TIME = 00:00:00

END_TIME = 00:00:00

DURING_START_DATE = 2023-01-16 15:00:00

DURING_END_DATE = 9999-12-31 23:59:59

NO_END_DATE_FLAG = 1

DESCRIBE = RT TIMER

IS_VALID = 1

        1. 配置dmwatcher.ini

修改 dmwatcher.ini 配置守护进程,配置为本地守护类型,异步备库不具备故障自动

切换等功能,DW_MODE 配置并不起作用,此处配置为 MANUAL 即可。

[dmdba@dm8dw03 ~]$vi /dm8/data/CUGDB/dmwatcher.ini

[GRP1]

DW_TYPE = LOCAL                              #本地守护类型

DW_MODE = MANUAL                             #故障手动切换模式

DW_ERROR_TIME = 10                            #远程守护进程故障认定时间

INST_ERROR_TIME = 10                          #本地实例故障认定时间

INST_OGUID = 453332                           #守护系统唯一OGUID值

INST_INI = /dm8/data/CUGDB/dm.ini             #dm.ini配置文件路径

INST_AUTO_RESTART = 1                         #打开实例的自动启动功能

INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver   #命令行方式启动

        1. 设置备库OGUID并修改数据库模式

启动到mount状态下操作

[dmdba@dm8dw03 ~]$ /dm8/dmdbms/bin/DmServiceCUGDB stop

[dmdba@dm8dw03 ~]$ /dm8/dmdbms/bin//dmserver /dm8/data/CUGDB/dm.ini mount

打开另外一个窗口,以上窗口不要关闭

[dmdba@dm8dw03 ~]$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL> sp_set_oguid(453332);     ##设置所有备库的OGUID与主库相同

SQL> alter database standby;   ##修改备库模式

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

SQL> select status$ from v$instance;

LINEID     STATUS$

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

1          MOUNT

        1. 配置观察监视器dmmonitor.ini

[dmdba@dm8dw03 ~]$ vi /dm8/data/CUGDB/dmmonitor.ini

MON_DW_Confirm = 0             #1确认监视器模式,0表示观察监视器

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 = 453332        #组GRP1的唯一OGUID值

#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置

#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT

MON_DW_IP = 10.10.10.5:5536    #私网IP

MON_DW_IP = 10.10.10.6:5536    #私网IP

MON_DW_IP = 10.10.10.8:5536    #私网IP

注:

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

        1. 注册备库守护进程并启动

[root@dm8dw03 ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/CUGDB/dmwatcher.ini -p CUGDB03

备库启动服务:

[root@dm8dw02 ~]# systemctl start DmWatcherServiceCUGDB03

或者

[root@dm8dw03 ~]# su - dmdba

[dmdba@dm8dw03 ~]$ /dm8/dmdbms/bin/DmWatcherServiceCUGDB03 start

主备进程启动后,进入startup状态,守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例切换为OPEN.

        1. 启动监视器

[dmdba@dm8dw03 ~]$ /dm8/dmdbms/bin/dmmonitor  /dm8/data/CUGDB/dmmonitor.ini

      1. 配置确认监视器

在监视器服务器上配置

        1. 配置dmmonitor.ini

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

[dmdba@dm8monitor ~]$ vi /dm8/data/monitor/dmmonitor.ini

MON_DW_Confirm = 1             #1确认监视器模式,0表示观察监视器

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 = 453332        #组GRP1的唯一OGUID值

#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置

#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT

MON_DW_IP = 10.10.10.5:5536    #私网IP

MON_DW_IP = 10.10.10.6:5536    #私网IP

MON_DW_IP = 10.10.10.8:5536    #私网IP

        1. 启动确认监视器

[dmdba@dm8monitor ~]$ /dm8/dmdbms/bin/dmmonitor /dm8/data/monitor/dmmonitor.ini

      1. 启动和关闭顺序
        1. 关闭顺序

关闭确认监视器

/dm8/dmdbms/bin/DmWatcherServiceCUGDB01 stop

关闭备库的守护进程,再关闭主库守护进程

/dm8/dmdbms/bin/DmWatcherServiceCUGDB02 stop

/dm8/dmdbms/bin/DmWatcherServiceCUGDB01 stop

再关闭主库实例,最后关闭备库实例:

/dm8/dmdbms/bin/DmServiceCUGDB stop

/dm8/dmdbms/bin/DmServiceCUGDB stop

        1. 启动顺序

先启动主库守护进程,再启动备库守护进程,最后启动异步备库进程。

因为dmwatcher.ini中配置了INST_AUTO_RESTART = 1 ,守护进程启动后,会自动拉起数据库实例。

dmdba用户:

[root@dm8dw01 ~]# su - dmdba

[dmdba@dm8dw01 ~]$ /dm8/dmdbms/bin/DmWatcherServiceCUGDB01 start

[root@dm8dw02 ~]# su - dmdba

[dmdba@dm8dw02 ~]$ /dm8/dmdbms/bin/DmWatcherServiceCUGDB02 start

[root@dm8dw03 ~]# su - dmdba

[dmdba@dm8dw03 ~]$ /dm8/dmdbms/bin/DmWatcherServiceCUGDB03 start

启动监视器:/dm8/dmdbms/bin/dmmonitor  /dm8/data/monitor/dmmonitor.ini

      1. 查看集群状态

  1. 集群数据测试
    1. 守护进程命令

守护进程(dmwatcher)既能以控制台方式启动,也可以配置为服务方式启动。可以在守护进程的控制台上输入命令,关闭守护进程,显示守护进程组的状态信息等,具体命令如下:

命令

含义

help

显示帮助信息

exit

退出守护进程

status

显示所有守护进程组中的本地库信息

show group group_name

显示指定守护进程组中的本地库信息

show version

显示守护进程自身版本信息

show monitor config

帮助监视器配置 ini 文件的信息

show link

显示守护进程上的 tcp 连接信息

    1. 守护进程日志

/dm8/dmdbms/log/dm_dmwatcher_CUGDB01_202401.log

/dm8/dmdbms/log/dm_dmwatcher_CUGDB02_202401.log

/dm8/dmdbms/log/dm_dmwatcher_CUGDB03_202401.log

    1. 守护进程登录

确认监视器启动

[dmdba@dm8monitor ~]$  /dm8/dmdbms/bin/dmmonitor /dm8/data/monitor/dmmonitor.ini

登录后输入login

用户名:数据库用户名SYSDBA

密码:数据库密码SYSDBA2023

显示监视器登录成功

    1. 数据同步测试
      1. 实时主库插入数据

dm8dw01>$disql SYSDBA/SYSDBA2023@127.0.0.1:5236

-- 创建表空间

SQL>create tablespace "FMS_TS" datafile '/dm8/data/CUGDB/fms01.dbf' size 1024 autoextend on;

-- 创建用户及授权

CREATE USER fms IDENTIFIED BY "fms123123!" DEFAULT TABLESPACE FMS_TS;

-- 密码时效不做限制

alter user "fms" limit  password_lock_time unlimited;

-- 授权

GRANT RESOURCE TO fms;

-- 建表

create table fms.year_2001(

ID            number(10) primary key not null,            

name       varchar2(30),

port    VARCHAR(255),

speed    VARCHAR(255),

type    VARCHAR(255),

create_time     date

);

begin

for i in 1..20 loop

insert into fms.year_2001 values(i, 'cisco-'||i,'3306','10000','router-'||i,to_date('2021-06-20 18:31:34','YYYY-MM-DD HH24:MI:SS'));

end loop;

commit;

end;

/

SQL> select count(*) from fms.year_2001;

行号     COUNT(*)           

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

1          20

      1. 实时备库查询数据

[dmdba@dm8dw02 ~]$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

SQL> select count(*) from fms.year_2001;

行号     COUNT(*)           

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

1          20

      1. 异步备库查询数据

[dmdba@dm8dw03 ~]$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

SQL>  select count(*) from fms.year_2001;

 select count(*) from fms.year_2001;

第1 行附近出现错误[-2103]:无效的模式名[FMS].

已用时间: 0.971(毫秒). 执行号:0.

结论:dm8dw01、dm8dw02数据完全一致。Dm8dw03定时任务时间为0:00同步,这里暂时查不到数据,正常。

      1. 调整定时调度器

$vi /dm8/data/CUGDB/dmtimer.ini

[RT_TIMER]

TYPE = 2

FREQ_MONTH_WEEK_INTERVAL = 1

FREQ_SUB_INTERVAL = 0

FREQ_MINUTE_INTERVAL = 0

START_TIME = 16:55:00

END_TIME = 23:00:00

DURING_START_DATE = 2023-01-15 00:00:00

DURING_END_DATE = 9999-12-31 23:59:59

NO_END_DATE_FLAG = 1

DESCRIBE = RT TIMER

IS_VALID = 1

      1. 查看数据库FLSH/CLSN是否一致
  1. 时间没到前

  1. 时间到之后

Primary主库日志

Standby异步备库日志

      1. 查看异步备库数据是否同步

[dmdba@dm8dw03 ~]$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

SQL>  select count(*) from fms.year_2001;

 select count(*) from fms.year_2001;

结论:定时调度器时间到后,自动从主库将增量数据全部同步到dm8dw03异步备库。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值