主备机及监视器机器配置完成,已新建数据库软件,已关闭防火墙
1.初始化实例
[dmdba@dm01-priv ~]$ dminit PATH=/dm8/dmdbms/data INSTANCE_NAME=dmtest01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 CHARSET=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire in 14 day(s) on 2023-08-15
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm8/dmdbms/data/DAMENG/DAMENG01.log
log file path: /dm8/dmdbms/data/DAMENG/DAMENG02.log
write to dir [/dm8/dmdbms/data/DAMENG].
create dm database success. 2023-08-01 14:30:57
2.前台启动数据库服务
[dmdba@dm01-priv ~]$dmserver /dm8/dmdbms/data/DAMENG/dm.ini
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 in 14 day(s) on 2023-08-15
file lsn: 0
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
iid page's trxid[1002]
NEXT TRX ID = 1003
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[2004]
NEXT TRX ID = 3006.
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_startup end.
aud sys init success.
aud rt sys init success.
trx: 3006 purged 1 pages
......
trx: 3621 purged 1 pages
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 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
SYSTEM IS READY.
3.另外打开一个窗口操作,开启归档
[dmdba@dm01-priv ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.949(ms)
disql V8
SQL> alter database mount;
操作已执行
已用时间: 2.333(毫秒). 执行号:0.
SQL> alter database archivelog;
操作已执行
已用时间: 6.928(毫秒). 执行号:0.
SQL> alter database add archivelog 'dest=/dm8/dmdbms/data/DAMENG/arch,type=local,file_size=2048,space_limit=51200';
操作已执行
已用时间: 2.624(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 13.757(毫秒). 执行号:0.
4.备份主库
SQL> backup database backupset '/dm8/dmdbms/data/DAMENG/bak/backup_20230801';
backup database backupset '/dm8/dmdbms/data/DAMENG/bak/backup_20230801';
[-718]:收集到的归档日志不连续.
已用时间: 55.729(毫秒). 执行号:0.
报错 [-718]:收集到的归档日志不连续. 处理方法:刷新检查点,执行checkpoint(100);后再重新备份
SQL> checkpoint(100);
DMSQL 过程已成功完成
已用时间: 35.124(毫秒). 执行号:701.
SQL> backup database backupset '/dm8/dmdbms/data/DAMENG/bak/backup_20230801';
操作已执行
已用时间: 00:00:03.044. 执行号:702.
5.主库停库,退出前台启动窗口即可
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[4294914560], used space[44544]
checkpoint begin, used_space[44544], free_space[4294914560]...
checkpoint end, 0 pages flushed, used_space[0], free_space[4294959104].
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 local parallel threads pool successfully.
shutdown replication 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 pthd_pools...OK
shutdown session subsystem...OK
shutdown rollback segments purging subsystem...OK
shutdown rps 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[4294959104]...
checkpoint end, 0 pages flushed, used_space[20992], free_space[4294938112].
checkpoint begin, used_space[20992], free_space[4294938112]...
checkpoint end, 0 pages flushed, used_space[0], free_space[4294959104].
checkpoint begin, used_space[0], free_space[4294959104]...
checkpoint end, 0 pages flushed, used_space[0], free_space[4294959104].
shutdown archive subsystem...OK
......
shutdown huge buffer and memory pools...OK
close lsnr socket
DM Database Server shutdown successfully.
6.修改主库dm.ini参数
ALTER_MODE_STATUS = 0 ##手工修改数据库状态和模式,0不允许,1允许
ENABLE_OFFLINE_TS = 2 ##不允许备库offline表空间
MAL_INI = 1 ##启用MAL系统
ARCH_INI = 1 ##启用归档
7.修改主库dmarch.ini参数
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL ##本地归档
ARCH_DEST = /dm8/dmdbms/data/DAMENG/arch ##归档目录
ARCH_FILE_SIZE = 2048 ##归档文件大小,单位MB
ARCH_SPACE_LIMIT = 51200 ##总归档文件大小,单位MB
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME ##实时归档
ARCH_DEST = dmtest02 ##要写明其他所有主备库,有多个就写多条
8.修改主库dmwatcher.ini参数
[dmdw]
DW_TYPE = GLOBAL ##全局守护类型
DW_MODE = AUTO ##自动切换,MANUAL手动切换
DW_ERROR_TIME = 10 ##远程守护进程故障认定时间
INST_ERROR_TIME = 10 ##本地实例故障认定时间
INST_RECOVER_TIME = 60 ##主库守护进程启动恢复间隔
INST_OGUID = 230801 ##守护系统唯一OGUID,可以用年月日命名
INST_INI = /dm8/dmdbms/data/DAMENG/dm.ini ##dm.ini路径
INST_AUTO_RESTART = 1 ##自动启动实例
INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver ##命令行启动方式
RLOG_SEND_THRESHOLD = 0 ##默认关闭,指定主库发送日志到备库的时间阈值
RLOG_APPLY_THRESHOLD = 0 ##默认关闭,指定备库重演日志的时间阈值
9.修改主库dmmal.ini参数
MAL_CHECK_INTERVAL = 10 ##MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 ##判定MAL链路断开的时间
MAL_TEMP_PATH = /dm8/dmdbms/data/malpath/ ##临时文件目录
MAL_BUF_SIZE = 512 ##单个MAL缓存大小,MB
MAL_SYS_BUF_SIZE = 2048 ##MAL总大小,MB
MAL_COMPRESS_LEVEL = 0 ##MAL压缩等级,0表示不压缩
[MAL_INST1]
MAL_INST_NAME = dmtest01 ##实例名,和dm.ini的INSTANCE_NAME一致
MAL_HOST = 192.168.31.187 ##内部ip
MAL_PORT = 5237 ##内部端口
MAL_INST_HOST = 192.168.31.183 ##对外ip
MAL_INST_PORT = 5236 ##对外端口,和dm.ini的PORT_NUM一致
MAL_DW_PORT = 5238 ##实例对应的守护进程端口
MAL_INST_DW_PORT = 5239 ##实例监听守护进程的端口
[MAL_INST2]
MAL_INST_NAME = dmtest02
MAL_HOST = 192.168.31.188
MAL_PORT = 5237
MAL_INST_HOST = 192.168.31.184
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239
10.拷贝主库到备库
[dmdba@dm01-priv DAMENG]$ scp -r /dm8/dmdbms/data/DAMENG dmdba@dm02:/dm8/dmdbms/data/DAMENG
11.主库注册dmserver和dmwatcher
[root@dm01-priv ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmserver -p dmtest01 -dm_ini /dm8/dmdbms/data/DAMENG/dm.ini -m mount
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedmtest01.service to /usr/lib/systemd/system/DmServicedmtest01.service.
创建服务(DmServicedmtest01)完成
[root@dm01-priv ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/dmdbms/data/DAMENG/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service to /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成
1.修改备库dm.ini中的INSTANCE_NAME
INSTANCE_NAME = DMTEST02
2.修改备库dmarch.ini中的ARCH_DEST
ARCH_DEST = dmtest01 ##要写明其他所有主备库,有多个就写多条
其他所有参数及文件保持与主库一致
3.备库注册dmserver和dmwatcher
[root@dm02-priv ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmserver -p dmtest02 -dm_ini /dm8/dmdbms/data/DAMENG/dm.ini -m mount
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedmtest02.service to /usr/lib/systemd/system/DmServicedmtest02.service.
创建服务(DmServicedmtest02)完成
[root@dm02-priv ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/dmdbms/data/DAMENG/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service to /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成
4.备库恢复数据
还原
[dmdba@dm02-priv ~]$ dmrman CTLSTMT="RESTORE DATABASE '/dm8/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dmdbms/data/DAMENG/bak/backup_20230801'"
dmrman V8
RESTORE DATABASE '/dm8/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dmdbms/data/DAMENG/bak/backup_20230801'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.713
恢复
[dmdba@dm02-priv ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dmdbms/data/DAMENG/bak/backup_20230801'"
dmrman V8
RECOVER DATABASE '/dm8/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dmdbms/data/DAMENG/bak/backup_20230801'
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[40812], file_lsn[40812]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:02.423
更新
[dmdba@dm02-priv ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC
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[40844], file_lsn[40844]
recover successfully!
time used: 00:00:01.016
1.配置dmmonitor.ini参数
MON_DW_CONFIRM = 0 ##0非确认,故障手切;1确认,故障自切
MON_LOG_PATH = /dm8/dmdbms/log ##监视器日志路径
MON_LOG_INTERVAL = 60 ##每隔60秒记录日志
MON_LOG_FILE_SIZE = 512 ##单个日志大小,MB
MON_LOG_SPACE_LIMIT = 2048 ##日志上限,MB
[dmdw]
MON_INST_OGUID = 230801 ##组唯一OGUID
MON_DW_IP = 192.168.31.187:5238 ##MAL_HOST:MAL_DW_PORT
MON_DW_IP = 192.168.31.188:5238
2.注册监视器
[root@dmdw ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p dmdw -monitor_ini /dm8/dmdbms/bin/dmmonitor.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServicedmdw.service to /usr/lib/systemd/system/DmMonitorServicedmdw.service.
创建服务(DmMonitorServicedmdw)完成
1.启动主库,修改参数
主库前台启动到mount,防止主库修改数据,导致主备库数据不一致
[dmdba@dm01-priv ~]$ dmserver /dm8/dmdbms/data/DAMENG/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 in 14 day(s) on 2023-08-15
file lsn: 41093
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.
另开窗口,disql中执行
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',1);
DMSQL 过程已成功完成
已用时间: 8.438(毫秒). 执行号:0.
SQL> sp_set_oguid(230801);
DMSQL 过程已成功完成
已用时间: 3.385(毫秒). 执行号:1.
SQL> alter database primary;
操作已执行
已用时间: 3.212(毫秒). 执行号:0.
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
DMSQL 过程已成功完成
已用时间: 8.215(毫秒). 执行号:2.
前台启动窗口退出主库
2.启动备库,修改参数
备库启动到mount
[dmdba@dm02-priv ~]$ dmserver /dm8/dmdbms/data/DAMENG/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 in 14 day(s) on 2023-08-15
file lsn: 40844
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.
另开窗口,disql中执行
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',1);
DMSQL 过程已成功完成
已用时间: 8.903(毫秒). 执行号:0.
SQL> sp_set_oguid(230801);
DMSQL 过程已成功完成
已用时间: 4.159(毫秒). 执行号:1.
SQL> alter database standby;
操作已执行
已用时间: 7.455(毫秒). 执行号:0.
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
DMSQL 过程已成功完成
已用时间: 6.916(毫秒). 执行号:2.
前台启动窗口退出备库
3.按顺序启动服务
启动主库数据库服务
[dmdba@dm01-priv ~]$ DmServicedmtest01 start
Starting DmServicedmtest01: [ OK ]
启动备库数据库服务
[dmdba@dm02-priv ~]$ DmServicedmtest02 start
Starting DmServicedmtest02: [ OK ]
启动主库守护服务
[dmdba@dm01-priv ~]$ DmWatcherServiceWatcher start
Starting DmWatcherServiceWatcher: [ OK ]
启动备库守护服务
[dmdba@dm02-priv ~]$ DmWatcherServiceWatcher start
Starting DmWatcherServiceWatcher: [ OK ]
启动监视器服务
[dmdba@dmdw ~]$ DmMonitorServicedmdw start
Starting DmMonitorServicedmdw: [ OK ]
在监视器服务启动前,主备库实例状态应均为mount,监视器服务启动后,主备库实例自动切换到open状态。如果配置正常但监视器无法监控到实例且实例状态仍为mount,请检查主机防火墙是否关闭。
4.监视器查看数据库状态
[dmdba@dmdw ~]$ dmmonitor /dm8/dmdbms/bin/dmmonitor.ini
/etc/dm_svc.conf 文件中增加参数
RW_SEPARATE(0 不启用读写分离;1 启用读写分离;2 启用读写分离,备库由客户端选择,且只选择服务名中配置的节点)
RW_PERCENT(0-100之间。读写分离分发比例,即主库占所有事务数的比例)
1.使用choose switchover dmtestdw命令查看可切换的备库,switchover dmtestdw.dmtest02切换备库。
2.当组中有活动主库时,不能使用takeover进行切换,可以断掉主库网络。
非确认监视器使用choose takeover dmtestdw命令查看可切换备库,takeover dmtestdw.dmtest02切换备库。
确认监视器会自动切换备库。
3.重启原主库网卡后,原主库会自动加入为备库
文章
阅读量
获赞