DM8数据守护主备集群搭建
操作系统 麒麟v10sp3
数据库版本:
主机 192.168.52.188 root,dmdba/Dameng_123
备机 192.168.52.189
监视 192.168.52.190
数据库名 实例名 PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT
DMDWDB INST_1 5336 15101 192.168.52.188 25101 35101
DMDWDB INST_2 5336 15101 192.168.52.189 25101 35101
创建三个测试虚机:2cpu,4Gmem,30Gdisk即可。关闭防火墙,禁用selinux等。
命令方式创建数据库实例:
主库:
/dm8/bin/dminit db_name=DMDWDB instance_name=INST_1 port_num=5336 path=/dm8/data
启动数据库修改密码:
后台启动:/dm8/bin/dmserver /dm8/data/DMDWDB/dm.ini &
[dmdba@localhost ~]$ /dm8/bin/disql sysdba/SYSDBA@192.168.52.188:5336
服务器[192.168.52.188:5336]:处于普通打开状态
登录使用时间 : 3.775(ms)
disql V8
SQL> alter user sysdba identified by dameng123;
操作已执行
已用时间: 5.150(毫秒). 执行号:500.
SQL> exit
停主库:ps -ef|grep dmserver
kill进程,不要加-9,否则备份失败
备库:
/dm8/bin/dminit db_name=DMDWDB instance_name=INST_2 port_num=5336 path=/dm8/data
后台启动:/dm8/bin/dmserver /dm8/data/DMDWDB/dm.ini &
[dmdba@localhost ~]$ /dm8/bin/disql sysdba/SYSDBA@192.168.52.189:5336
服务器[192.168.52.188:5336]:处于普通打开状态
登录使用时间 : 3.775(ms)
disql V8
SQL> alter user sysdba identified by dameng123;
操作已执行
已用时间: 5.150(毫秒). 执行号:500.
SQL> exit
停备库:ps -ef|grep dmserver
kill进程
/dm8/bin/dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DMDWDB/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'"
传到备库
注意两节点先设置好相应的备份目录和dmdba的密码Dameng_123
scp * 192.168.52.189:/dm8/backup/
INSTANCE_NAME = INST_1
PORT_NUM = 5336
DW_INACTIVE_INTERVAL = 60
#需要改的4项
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
MAL_CHECK_INTERVAL = 60
MAL_CONN_FAIL_INTERVAL = 60
[MAL_INST1]
MAL_INST_NAME = INST_1
MAL_HOST = 192.168.52.188
MAL_PORT = 25101
MAL_INST_HOST = 192.168.52.188
MAL_INST_PORT = 5336
MAL_DW_PORT = 35101
MAL_INST_DW_PORT = 15101
[MAL_INST2]
MAL_INST_NAME = INST_2
MAL_HOST = 192.168.52.189
MAL_PORT = 25101
MAL_INST_HOST = 192.168.52.189
MAL_INST_PORT = 5336
MAL_DW_PORT = 35101
MAL_INST_DW_PORT = 15101
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = INST_2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/DMDWDB/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[DMDWDB_GRP]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 60
INST_OGUID = 705605
INST_INI = /dm8/data/DMDWDB/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
dmdba用户下启动主库mount状态
[dmdba@localhost ~]$ /dm8/bin/dmserver /dm8/data/DMDWDB/dm.ini mount
[dmdba@localhost ~]$ /dm8/bin/disql sysdba/dameng123@192.168.52.188:5336
服务器[192.168.52.188:5336]:处于普通配置状态
登录使用时间 : 4.163(ms)
disql V8
SQL>
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(705605);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
[dmdba@localhost ~]$ /dm8/bin/disql sysdba/dameng123@192.168.52.188:5336
服务器[192.168.52.188:5336]:处于主库配置状态
登录使用时间 : 3.467(ms)
disql V8
SQL>
/dm8/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DMDWDB/dm.ini' FROM BACKUPSET '/dm8/backup'"
/dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DMDWDB/dm.ini' FROM BACKUPSET '/dm8/backup'"
/dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DMDWDB/dm.ini' UPDATE DB_MAGIC"
INSTANCE_NAME = INST_2
PORT_NUM = 5336
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
MAL_CHECK_INTERVAL = 60
MAL_CONN_FAIL_INTERVAL = 60
[MAL_INST1]
MAL_INST_NAME = INST_1
MAL_HOST = 192.168.52.188
MAL_PORT = 25101
MAL_INST_HOST = 192.168.52.188
MAL_INST_PORT = 5336
MAL_DW_PORT = 35101
MAL_INST_DW_PORT = 15101
[MAL_INST2]
MAL_INST_NAME = INST_2
MAL_HOST = 192.168.52.189
MAL_PORT = 25101
MAL_INST_HOST = 192.168.52.189
MAL_INST_PORT = 5336
MAL_DW_PORT = 35101
MAL_INST_DW_PORT = 15101
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = INST_1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/DMDWDB/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[DMDWDB_GRP]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 60
INST_OGUID = 705605
INST_INI = /dm8/data/DMDWDB/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_APPLY_THRESHOLD = 0
dmdba用户下启动备库mount状态
/dm8/bin/dmserver /dm8/data/DMDWDB/dm.ini mount
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(705605);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
=====================
[dmdba@localhost ~]$ /dm8/bin/disql sysdba/dameng123@192.168.52.189:5336
服务器[192.168.52.189:5336]:处于普通配置状态
登录使用时间 : 4.848(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 7.904(毫秒). 执行号:0.
SQL> sp_set_oguid(705605);
DMSQL 过程已成功完成
已用时间: 3.155(毫秒). 执行号:1.
SQL> alter database standby;
操作已执行
已用时间: 6.584(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 6.327(毫秒). 执行号:2.
SQL> exit
[dmdba@localhost ~]$ /dm8/bin/disql sysdba/dameng123@192.168.52.189:5336
服务器[192.168.52.189:5336]:处于备库配置状态
登录使用时间 : 3.963(ms)
disql V8
SQL>
手动启动:
/dm8/bin/dmwatcher /dm8/data/DMDWDB/dmwatcher.ini
注册服务:
/dm8/script/root/dm_service_installer.sh -t dmserver -p DmServiceINST_1 -m mount -dm_ini /dm8/data/DMDWDB/dm.ini
/dm8/script/root/dm_service_installer.sh -t dmwatcher -p DMDWDBWATCHER -watcher_ini /dm8/data/DMDWDB/dmwatcher.ini
root用户执行启停:
systemctl stop DmServiceDmServiceINST_2
systemctl stop DmWatcherServiceDMDWDBWATCHER
systemctl start DmServiceDmServiceINST_2
systemctl start DmWatcherServiceDMDWDBWATCHER
systemctl restart DmWatcherServiceDMDWDBWATCHER
手动启动:
/dm8/bin/dmwatcher /dm8/data/DMDWDB/dmwatcher.ini
注册服务:(可以加-m mount也可以不用mount)
/dm8/script/root/dm_service_installer.sh -t dmserver -p DmServiceINST_2 -m mount -dm_ini /dm8/data/DMDWDB/dm.ini
/dm8/script/root/dm_service_installer.sh -t dmwatcher -p DMDWDBWATCHER -watcher_ini /dm8/data/DMDWDB/dmwatcher.ini
启停服务
[dmdba@localhost ~]$ /dm8/bin/DmWatcherServiceDMWATCHER start
DmWatcherServiceDMWATCHER (pid 1676) is running.
[dmdba@localhost ~]$ /dm8/bin/DmWatcherServiceDMWATCHER stop
Stopping DmWatcherServiceDMWATCHER: [ OK ]
[dmdba@localhost ~]$ ll /dm8/bin/Dm*
-rwxr-xr-x 1 dmdba dinstall 14941 5月 23 09:27 /dm8/bin/DmAPService
-rwxr-xr-x 1 dmdba dinstall 15487 5月 23 09:27 /dm8/bin/DmAuditMonitorService
-rwxr-xr-x 1 dmdba dinstall 14651 5月 23 09:27 /dm8/bin/DmInstanceMonitorService
-rwxr-xr-x 1 dmdba dinstall 15105 5月 23 09:27 /dm8/bin/DmJobMonitorService
-rwxr-xr-x 1 dmdba dinstall 17340 5月 23 09:29 /dm8/bin/DmServiceDMSERVER
-rwxr-xr-x 1 dmdba dinstall 17342 5月 23 16:24 /dm8/bin/DmServiceDMSERVER1
-rwxr-xr-x 1 dmdba dinstall 17360 5月 26 10:42 /dm8/bin/DmServiceDmServiceIN_JYC2
-rwxr-xr-x 1 dmdba dinstall 17362 5月 28 20:48 /dm8/bin/DmServiceDmServiceINST_2
-rwxr-xr-x 1 dmdba dinstall 14929 5月 28 15:29 /dm8/bin/DmWatcherServiceDMDWDBWATCHER
-rwxr-xr-x 1 dmdba dinstall 14921 5月 26 10:43 /dm8/bin/DmWatcherServiceDMWATCHER
卸载服务参考命令:
/dm8/script/root/dm_service_uninstaller.sh -n DmMonitorServiceDMDWDBMONITOR
root用户执行启停:
systemctl stop DmServiceDmServiceINST_2
systemctl stop DmWatcherServiceDMDWDBWATCHER
systemctl start DmServiceDmServiceINST_2
systemctl start DmWatcherServiceDMDWDBWATCHER
systemctl restart DmWatcherServiceDMDWDBWATCHER
行号 OGUID
1 705605
SQL> SELECT * FROM v$dm_mal_ini;
行号 MAL_NAME MAL_INST_NAME MAL_HOST MAL_PORT MAL_INST_HOST MAL_INST_PORT MAL_DW_PORT MAL_LINK_MAGIC MAL_INST_DW_PORT
1 MAL_INST1 INST_1 192.168.52.188 25101 192.168.52.188 5336 35101 0 15101
2 MAL_INST2 INST_2 192.168.52.189 25101 192.168.52.189 5336 35101 0 15101
监视器上配置:dmmonitor.ini可以在任意位置,无需创建实例。
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/data/DMDWDB/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[DMDWDB_GRP]
MON_INST_OGUID = 705605
MON_DW_IP = 192.168.52.188:35101
MON_DW_IP = 192.168.52.189:35101
su - dmdba
/dm8/bin/dmmonitor /dm8/data/DMDWDB/dmmonitor.ini
show
switchover
login
用户名:sysdba
密码:dameng123
检查./disql sysdba/dameng123@localhost:5336
再切switchover
注册监视:
/dm8/script/root/dm_service_installer.sh -t dmmonitor -p DMDWDBMONITOR -monitor_ini /dm8/data/DMDWDB/dmmonitor.ini
删除服务:
systemctl disable DmMonitorServiceDMDWDBMONITOR.service
rm -f /usr/lib/systemd/system/DmMonitorServiceDMDWDBMONITOR.service
或者
/dm8/script/root/dm_service_uninstaller.sh -n DmMonitorServiceDMDWDBMONITOR
[root@localhost data]# systemctl start DmMonitorServmonitor
这时,你无法登录监视器了,因为监视器没提供端口给你访问
如果设置的是确认监视器(确认监视器只能启动一个)并且已经启动了,
那么可以配置一个非确认监视器进行查看各节点状态及切换操作,
[dmdba@localhost ~]$ cp /dm8/data/DMDWDB/dmmonitor.ini /dm8/data/DMDWDB/dmmonitor2.ini
[dmdba@localhost ~]$ vi /dm8/data/DMDWDB/dmmonitor2.ini
#修改此项即可:
MON_DW_CONFIRM = 0
使用
/dm8/bin/dmmonitor /dm8/data/DMDWDB/dmmonitor2.ini命令进行查看
查看日志则进入cd /dm8/data/DMDWDB/log
tail -f xxx方式即可。
查看集群状态:
show global info
kill -9导致备份失败:(前台启动数据库之间exit即可,但后台启动数据库后,正常停库使用kill进程不要加-9)
[dmdba@localhost backup]$ /dm8/bin/dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DMDWDB/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'"
dmrman V8
BACKUP DATABASE '/dm8/data/DMDWDB/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
begin redo pwr log collect, last ckpt lsn: 38640 ...
redo pwr log collect finished
EP[0]'s cur_lsn[38950], file_lsn[38950]
[-8216]:归档日志不完整,请使用dmrman工具执行'repair archive log ...'语句修复归档日志
重启库
[dmdba@localhost backup]$ /dm8/bin/dmserver /dm8/data/DMDWDB/dm.ini &
[1] 3560
[dmdba@localhost backup]$ file dm.key not found, use default license!
version info: develop
DM Database Server 64 V8 03134283968-20230103-178822-20033 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 2024-01-03
begin redo pwr log collect, last ckpt lsn: 38640 ...
redo pwr log collect finished
main rfil[/dm8/data/DMDWDB/DMDWDB01.log]'s grp collect 0 valid pwr record, discard 17 invalid pwr record
EP[0]'s cur_lsn[38950], file_lsn[38950]
begin redo log recover, last ckpt lsn: 38640 ...
redo log recover finished
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
pseg_set_gtv_trxid_low next_trxid in mem:[7021]
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!
next_trxid in mem:[8023]
next_trxid = 9025.
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
SYSTEM IS READY.
执行checkpoint(100);
[dmdba@localhost backup]$ /dm8/bin/disql sysdba/dameng123@192.168.52.188:5336
服务器[192.168.52.188:5336]:处于普通打开状态
登录使用时间 : 3.949(ms)
disql V8
SQL> checkpoint(100);
checkpoint request by user
checkpoint begin, used_space[105472], free_space[536757248]...
checkpoint end, 0 pages flushed, used_space[71680], free_space[536791040].
DMSQL 过程已成功完成
已用时间: 6.833(毫秒). 执行号:500.
SQL> exit
[dmdba@localhost backup]$ ps -ef|grep dmse
dmdba 1611 1 0 14:27 ? 00:00:04 /dm8/bin/dmserver path=/dm8/data/DMDW/dm.ini -noconsole mount
dmdba 3560 2831 0 14:55 pts/0 00:00:00 /dm8/bin/dmserver /dm8/data/DMDWDB/dm.ini
dmdba 3666 2831 0 14:56 pts/0 00:00:00 grep dmse
关闭库:
[dmdba@localhost backup]$ kill 3560
[dmdba@localhost backup]$ Server is stopping...
listener closed and all sessions disconnected
adjust undo_retention & wakeup purge thread...full check point starting...
generate force checkpoint, rlog free space[536780800], used space[81920]
checkpoint begin, used_space[81920], free_space[536780800]...
checkpoint end, 0 pages flushed, used_space[0], free_space[536862720].
full check point end.
shutdown audit subsystem...OK
shutdown schedule subsystem...OK
shutdown timer successfully.
pre-shutdown MAL subsystem...OK
shutdown worker threads subsystem...OK
shutdown logic log subsystem...OK
shutdown sequence cache subsystem...OK
wait for mtsk link worker to exit..OK
shutdown mpp session subsystem...OK
wait for rapply is all over... OK
rapply worker threads exit successfully.
pre ending task & worker threads...OK
shutdown dblink subsystem...OK
shutdown local parallel threads pool successfully.
shutdown pthd_pools...OK
shutdown session subsystem...shutdown aux session subsystem...OK
shutdown rollback segments purging subsystem...OK
shutdown transaction subsystem...OK
shutdown locking subsystem...OK
shutdown dbms_lock subsystem...OK
ending tsk and worker threads...OK
ckpt2_exec_immediately begin.
checkpoint begin, used_space[0], free_space[536862720]...
checkpoint end, 0 pages flushed, used_space[6144], free_space[536856576].
checkpoint begin, used_space[6144], free_space[536856576]...
checkpoint end, 0 pages flushed, used_space[0], free_space[536862720].
checkpoint begin, used_space[0], free_space[536862720]...
checkpoint end, 0 pages flushed, used_space[0], free_space[536862720].
shutdown archive subsystem...OK
shutdown redo log subsystem...OK
shutdown MAL subsystem...OK
shutdown message compress subsystem successfully.
shutdown task subsystem...OK
shutdown trace subsystem...OK
shutdown svr_log subsystem...OK
shutdown plan cache subsystem...OK
shutdown database dictionary subsystem...OK
shutdown file subsystem...OK
shutdown mac cache subsystem...OK
shutdown dynamic login cache subsystem...OK
shutdown ifun/bifun/sfun/afun cache subsystem...OK
shutdown crypt subsystem...OK
shutdown pipe subsystem...OK
shutdown compress component...OK
shutdown slave redo subsystem...OK
shutdown kernel buffer subsystem...OK
shutdown SQL capture subsystem...OK
shutdown control file system...OK
shutdown dtype subsystem...OK
shutdown huge buffer and memory pools...OK
close lsnr socket
DM Database Server shutdown successfully.
[1]+ 已完成 /dm8/bin/dmserver /dm8/data/DMDWDB/dm.ini
[dmdba@localhost backup]$
[dmdba@localhost backup]$
重新执行备份:
[dmdba@localhost backup]$ /dm8/bin/dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DMDWDB/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'"
dmrman V8
BACKUP DATABASE '/dm8/data/DMDWDB/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[39344], file_lsn[39344]
Processing backupset /dm8/backup/BACKUP_FILE_01
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
backup successfully!
time used: 00:00:03.217
[dmdba@localhost backup]$
达梦官方资料
https://blog.csdn.net/u010053152/article/details/125623865
https://eco.dameng.com/community/post/20230519142157WS7K5G9RX82C3UXQGG
https://eco.dameng.com/community/training/de411da1eeb86dd6e5e8b32778fb5743
DM是否可以像oracle的adg那样不需要停主库就可以搭建出守护集群呢?毕竟生产环境,尤其是大库的情况下,没有那么多停机时间,如果能在线完成搭建集群将满足更多适用的场景。
文章
阅读量
获赞