共计 9039 个字符,预计需要花费 23 分钟才能阅读完成。
这篇文章主要介绍 DM7 如何搭建数据守护,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
数据守护 (DG)
环境说明
下列机器事先都安装了 DM 软件,安装路径为 /dm7, 执行程序保存在 /dm7/bin 目录中,数据存放路径为 /dm7/data
机器名 IP 地址 初始状态 操作系统
19c1 10.13.13.141(对外) 主库 dm1 redhat 6.7
10.10.10.141(mal 对内)
19c2 10.13.13.142(对外)
10.10.10.142(mal 对内) 备库 dm2 redhat 6.7
ora19c 10.13.13.140 确认监视器 redhat 6.7
实例名 port_num dw_port mal_host mal_port mal_dw_port
dm1 5236 5239 10.10.10.141 5237 5238
dm2 5236 5239 10.10.10.142 5237 5238
数据准备
在主库机器上初始化数据库到目录 /dm7/data:
[dmdba@19c1 bin]$ ./dminit path=/dm7/data db_name=DAMENG instance_name=DM1 port_num=5236 page_size=8 charset=0
initdb V7.1.6.46-Build(2018.02.08-89107)ENT
db version: 0x7000a
file dm.key not found, use default license!
License will expire in 14 day(s) on 2020-06-17
log file path: /dm7/data/DAMENG/DAMENG01.log
log file path: /dm7/data/DAMENG/DAMENG02.log
write to dir [/dm7/data/DAMENG].
create dm database success. 2020-06-03 02:55:43
注册服务用于启动数据库
[root@19c1 root]# ./dm_service_installer.sh -i /dm7/data/DAMENG/dm.ini -p DM1 -t dmserver
ln -s /usr/lib/systemd/system/DmServiceDM1.service /etc/systemd/system/multi-user.target.wants/DmServiceDM1.service
Finished to create the service (DmServiceDM1)
正常启动数据库并正常关闭
[root@19c1 root]# service DmServiceDM1 start
Redirecting to /bin/systemctl start DmServiceDM1.service
[root@19c1 root]# ps -ef | grep dmserver
dmdba 21312 1 14 02:59 ? 00:00:03 /dm7/bin/dmserver /dm7/data/DAMENG/dm.ini -noconsole
root 21536 18668 0 03:00 pts/2 00:00:00 grep --color=auto dmserver
[dmdba@19c1 bin]$ ./disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 5.903(ms)
disql V7.1.6.46-Build(2018.02.08-89107)ENT
Connected to: DM 7.1.6.46
SQL exit
[root@19c1 root]# service DmServiceDM1 stop
Redirecting to /bin/systemctl stop DmServiceDM1.service
ARCH_INI=1(打开归档)
MAL_INI=1(打开 MAL 配置)
DW_PORT=5239 (DW 端口)
配置 dmmal.ini 文件
配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:
[dmdba@19c1 DAMENG]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM1
MAL_HOST = 10.10.10.141
MAL_PORT = 5237
MAL_INST_HOST = 10.13.13.141
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 10.10.10.142
MAL_PORT = 5237
MAL_INST_HOST = 10.13.13.142
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
配置 dmarch.ini
修改 dmarch.ini,配置本地归档和实时归档。除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。当前实例 DM1 是主库,需要向 DM2(实时备库)同步数据,因此实时归档的 ARCH_DEST 配置为 DM2。
[dmdba@19c1 DAMENG]$ vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DM2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm7/data/DAMENG/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
配置 dmwatcher.ini
修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。
[dmdba@19c1 DAMENG]$ 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
INST_INI = /dm7/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm7/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
配置 dmwatcher.ctl
同一个守护进程组,必须使用同一份 dmwatcher.ctl。因此,只需要使用 dmctlcvt 工具生成一份 dmwatcher.ctl 文件,然后分别拷贝到各个数据库目录下即可。在配置完成 dmwatcher.ini 后,使用 dmctlcvt 工具生成 dmwatcher.ctl:(特别注意,DEST 目录为 DAMENG 的上一级目录,否则不生成控制文件)
[dmdba@19c1 bin]$ ./dmctlcvt TYPE=3 SRC=/dm7/data/DAMENG/dmwatcher.ini DEST=/dm7/data
DMCTLCVT V7.1.6.46-Build(2018.02.08-89107)ENT
convert txt to ctl success!
会在 /dm7/data 目录中生成一个 GRP1 目录,在 GRP1 目录中生成了 dmwatcher.ctl 控制文件
[root@19c1 data]# ls -lrt
total 4
drwxr-xr-x 8 dmdba dinstall 4096 Jun 3 03:44 DAMENG
drwxr-xr-x 2 dmdba dinstall 26 Jun 3 03:53 GRP1
[root@19c1 data]# cd GRP1
[root@19c1 GRP1]# ls -lrt
total 4
-rw-r--r-- 1 dmdba dinstall 512 Jun 3 03:53 dmwatcher.ctl
拷贝生成的 dmwatcher.ctl 文件到数据文件目录 /dm7/data/DAMENG。
将主库相关文件传输到备机:
[dmdba@19c1 dm7]$ scp -r data/ dmdba@10.13.13.142:/dm7/
The authenticity of host 10.13.13.142 (10.13.13.142) can t be established.
ECDSA key fingerprint is 7f:1f:9a:0f:8b:d1:e0:17:32:08:12:73:d8:1d:9c:da.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 10.13.13.142 (ECDSA) to the list of known hosts.
dmdba@10.13.13.142 s password:
dminit20200603025444.log 100% 783 0.8KB/s 00:00
sqllog.ini 100% 479 0.5KB/s 00:00
dm.ctl 100% 5120 5.0KB/s 00:00
DAMENG01.log 100% 256MB 256.0MB/s 00:01
DAMENG02.log 100% 256MB 128.0MB/s 00:02
dm_20200603025543_320471.ctl 100% 5120 5.0KB/s 00:00
dm_20200603030017_373808.ctl 100% 5120 5.0KB/s 00:00
SYSTEM.DBF 100% 21MB 21.0MB/s 00:01
dm_service.prikey 100% 633 0.6KB/s 00:00
MAIN.DBF 100% 128MB 128.0MB/s 00:01
ROLL.DBF 100% 128MB 128.0MB/s 00:01
dminst.sys 100% 220 0.2KB/s 00:00
TEMP.DBF 100% 10MB 10.0MB/s 00:00
rep_conflict.log 100% 12 0.0KB/s 00:00
dm.ini 100% 40KB 39.8KB/s 00:00
dmmal.ini 100% 558 0.5KB/s 00:00
dmarch.ini 100% 367 0.4KB/s 00:00
dmwatcher.ini 100% 615 0.6KB/s 00:00
dmwatcher.ctl 100% 512 0.5KB/s 00:00
备机修改相关配置
修改 dm.ini
INSTANCE_NAME = DM2
修改 dmarch.ini
ARCH_DEST = DM1
其中 dmwatcher.ini,dmmal.ini,dmwatcher.ctl 和主库一致
二: 启动到 mount 状态设置 oguid
主库
[dmdba@19c1 bin]$ ./dmserver /dm7/data/DAMENG/dm.ini mount
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 V7.1.6.46-Build(2018.02.08-89107)ENT startup...
License will expire in 14 day(s) on 2020-06-17
ckpt lsn: 32981
SYSTEM IS READY.
[dmdba@19c1 bin]$ ./disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is normal, state is mount
login used time: 6.020(ms)
disql V7.1.6.46-Build(2018.02.08-89107)ENT
Connected to: DM 7.1.6.46
SQL sp_set_oguid(453331);
DMSQL executed successfully
used time: 38.995(ms). Execute id is 1.
SQL exit
备库
[dmdba@19c2 bin]$ ./dmserver /dm7/data/DAMENG/dm.ini mount
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 V7.1.6.46-Build(2018.02.08-89107)ENT startup...
License will expire in 14 day(s) on 2020-06-17
ckpt lsn: 32981
SYSTEM IS READY.
[dmdba@19c2 bin]$ ./disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is normal, state is mount
login used time: 6.005(ms)
disql V7.1.6.46-Build(2018.02.08-89107)ENT
Connected to: DM 7.1.6.46
SQL sp_set_oguid(453331);
DMSQL executed successfully
used time: 46.333(ms). Execute id is 1.
注册服务用于启动数据库
[root@19c2 root]# ./dm_service_installer.sh -i /dm7/data/DAMENG/dm.ini -p DM2 -t dmserver
ln -s /usr/lib/systemd/system/DmServiceDM2.service /etc/systemd/system/multi-user.target.wants/DmServiceDM2.service
Finished to create the service (DmServiceDM2)
三: 打开数据库
主库以 primary 打开
SQL alter database primary;
executed successfully
used time: 37.838(ms). Execute id is 0.
备库以 standby 打开
SQL alter database standby;
executed successfully
used time: 39.682(ms). Execute id is 0.
四: 启动守护进程
启动各个主备库上的守护进程:
主库
[dmdba@19c1 bin]$ ./dmwatcher /dm7/data/DAMENG/dmwatcher.ini
DMWATCHER[2.1] V7.1.6.46-Build(2018.02.08-89107)ENT
DMWATCHER[2.1] IS READY
备库
[dmdba@19c2 bin]$ ./dmwatcher /dm7/data/DAMENG/dmwatcher.ini
DMWATCHER[2.1] V7.1.6.46-Build(2018.02.08-89107)ENT
DMWATCHER[2.1] IS READY
五: 查看 file_lsn 与 cur_lsn 主备库是否一致
主库
SQL select file_LSN, cur_LSN from v$rlog;
LINEID FILE_LSN CUR_LSN
---------- -------------------- --------------------
1 34412 34412
used time: 1.203(ms). Execute id is 6.
备库
SQL select file_LSN, cur_LSN from v$rlog;
LINEID FILE_LSN CUR_LSN
---------- -------------------- --------------------
1 34412 34412
used time: 1.228(ms). Execute id is 3.
测试数据同步
主库:
SQL create table t1(id int);
executed successfully
used time: 18.410(ms). Execute id is 7.
SQL insert into t1 values(1);
affect rows 1
used time: 0.890(ms). Execute id is 8.
SQL commit;
executed successfully
used time: 6.026(ms). Execute id is 9.
SQL select file_LSN, cur_LSN from v$rlog;
LINEID FILE_LSN CUR_LSN
---------- -------------------- --------------------
1 34443 34443
used time: 0.340(ms). Execute id is 10.
备库:
SQL select file_LSN, cur_LSN from v$rlog;
LINEID FILE_LSN CUR_LSN
---------- -------------------- --------------------
1 34443 34443
used time: 0.363(ms). Execute id is 4.
SQL select * from t1;
LINEID ID
---------- -----------
1 1
used time: 1.213(ms). Execute id is 5.
六: 配置监视器 (基本要求,安装 dm7 的软件)
由于主库和实时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。
修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。
[dmdba@ora19c data]$ vi dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm7/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 10.10.10.141:5238
MON_DW_IP = 10.10.10.142:5238
启动监视器:
[dmdba@ora19c bin]$ ./dmmonitor /dm7/data/dmmonitor.ini
[monitor] 2020-06-03 09:18:20: DMMONITOR[2.1] V7.1.6.46-Build(2018.02.08-89107)ENT
[monitor] 2020-06-03 09:18:20: DMMONITOR[2.1] IS READY.
[monitor] 2020-06-03 09:18:20: Received message from(DM1)
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN SSLSN SLSN
2020-06-03 04:35:58 OPEN OK DM1 OPEN PRIMARY VALID 2 34443 34443 34443 34443
[monitor] 2020-06-03 09:18:20: Received message from(DM2)
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN SSLSN SLSN
2020-06-03 04:35:58 OPEN OK DM2 OPEN STANDBY VALID 2 34443 34443 34443 34443
以上是“DM7 如何搭建数据守护”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!