- 准备环境
主机:192.168.199.133 数据库已安装并开启归档
备机:192.168.199.134 数据库已安装并开启归档
数据库安装目录:/home/dmdba/dm/dmdbms
备份、归档、数据文件目录:/dm8/{dmbak,dmarch,dmdata}
- 主机全库备份
cd //home/dmdba/dm/dmdbms/bin
./dmrman
RMAN> backup database '/home/dmdba/dm/dmdbms/bin/dm.ini' full backupset '/dm8/dmbak/full01';
- 修改dm.ini参数
SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SP_SET_PARA_VALUE (2,'MAL_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
- 修改dmarch.ini参数
dmdba@localhost \~\]$ vim /dm8/dmdata/DAMENG/dmarch.ini ARCH_WAIT_APPLY=0 \[ARCHIVE_LOCAL
ARCH_TYPE=LOCAL
ARCH_DEST=/opt/dmdbms/data/DAMENG/arch/
ARCH_FILE_SIZE=1024
ARCH_SPACE_LIMIT=51200
ARCHIVE_REALTIME1
ARCH_TYPE=REALTIME #实时归档类型
ARCH_DEST=DMSERVERB #备库实例名
- 创建dmmal.ini
dmdba@localhost \~\]$ vim /dm8/dmdata/DAMENG/dmmal.ini #添加以下内容 MAL_CHECK_INTERVAL = 10 #MAL链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间 MAL_TEMP_PATH = /dm8/dmdata/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 = DMSERVER #实例名
MAL_HOST = 192.168.199.133 #MAL系统监听TCP连接的IP
MAL_PORT = 5336 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 172.16.1.1 #实例对外服务的IP
MAL_INST_PORT = 5236 #实例对外服务端口
MAL_DW_PORT = 5436 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程TCP连接的端口
MAL_INST2
MAL_INST_NAME = DMSERVERB
MAL_HOST = 192.168.199.134
MAL_PORT = 5336
MAL_INST_HOST = 172.16.1.2
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
- 创建dmwatcher.ini
dmdba@localhost \~\]$ vim /dm8/dmdata/DAMENG/dmwatcher.ini \[GRP1
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一OGUID值
INST_INI = /dmdata/DAMENG/dm.ini
INST_AUTO_RESTART = 1 #打开实例自启功能
INST_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/DmServiceDMSERVER start #服务启动方式
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
- 拷贝备份文件
scp -r /dm8/dmbak/full01 dmdba@192.168.199.134:/dm8/dmbak
- 注册服务
cd /home/dmdba/dm/dmdbms/script/root
./dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/dmdata/DAMENG/dmwatcher.ini
- 重启实例服务
cd /home/dmdba/dm/dmdbms/bin
./DmServiceDMSERVER restart
- 启动守护进程
./DmWatcherServiceWatcher start
- 配置备机dm.ini实例名
INSTANCE_NAME = DMSERVERB #实例名
- 编辑dmarch.ini
dmdba@localhost \~\]$ vim /dm8/dmdata/DAMENG/dmarch.ini \[ARCHIVE_LOCAL1
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/dmarch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024
ARCHIVE_REALTIME1
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER
- 复制主机dmmal.ini、dmwatcher.ini至备机
scp root@192.168.199.133:/dm8/dmdata/DAMENG/dmmal.ini /dm8/dmdata/DAMENG
scp root@192.168.199.133:/dm8/dmdata/DAMENG/dmmal.ini /dm8/dmdata/DAMENG
- 注册服务
cd /home/dmdba/dm/dmdbms/script/root
./dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/dmdata/DAMENG/dmwatcher.ini
- 重启实例服务
cd /home/dmdba/dm/dmdbms/bin
./DmServiceDMSERVER restart
./DmServiceDMSERVER stop
注:重启成功后需要停止服务,进行脱机数据恢复。
- 备机数据恢复
cd /home/dmdba/dm/dmdbms/bin
./dmrman
RMAN> check backupset '/dm8/dmbak/full01';
check backupset '/dm8/dmbak/full01';
check backupset successfully.
time used: 00:00:02.680
RMAN> restore database '/home/dmdba/dm/dmdbms/bin/dm.ini' from backupset '/dm8/dmbak/full01';
restore database '/home/dmdba/dm/dmdbms/bin/dm.ini' from backupset '/dm8/dmbak/full01';
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:21\]\[Remaining:00:00:00
restore successfully.
time used: 00:00:21.892
RMAN> recover database '/home/dmdba/dm/dmdbms/bin/dm.ini' update DB_MAGIC;
recover database '/home/dmdba/dm/dmdbms/bin/dm.ini' update DB_MAGIC;
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[10660976], file_lsn[10660976]
recover successfully!
time used: 00:00:01.082
- 配置监视器
(1)非确认监视器:集群各节点bin目录中,存放非确认监视器配置文件。
(2)确认监视器:在仲裁机(非集群节点),存放确认监视器配置文件,并注册后台自启服务。
- 创建dmmonitor.ini
dmdba@localhost \~\]$ vim /home/dmdba/dm/dmdbms/bin/dmmonitor.ini MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切) MON_LOG_PATH = ../log #监视器日志文件存放路径 MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 512 #单个日志大小,单位MB MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位MB \[GRP1
MON_INST_OGUID = 45331 #组GDW1的唯一OGUID值
MON_DW_IP = 192.168.199.133:5436 #IP对应MAL_HOST,PORT对应MAL_DW_PORT
MON_DW_IP = 192.168.199.134:5436
- 监视器的使用方法
|----------------------------|-----------------------|
| 命令 | 含义 |
| list | 查看守护进程的配置信息 |
| show global info | 查看所有实例组的信息 |
| tip | 查看系统当前运行状态 |
| login | 登录监视器 |
| logout | 退出登录 |
| choose switchover GDW1 | 主机正常:查看可切换为主机的实例列表 |
| switchover GDW1.实例名 | 主机正常:使用指定组的指定实例,切换为主机 |
| choose takeover GDW1 | 主机故障:查看可切换为主机的实例列表 |
| takeover GDW1.实例名 | 主机故障:使用指定组的指定实例,切换为主机 |
| choose takeover force GDW1 | 强制切换:查看可切换为主机的实例列表 |
| takeover force GDW1.实例名 | 强制切换:使用指定组的指定实例,切换为主机 |
| 主机故障后,在备机执行SELECT SF_DW_CHECK_TAKEOVER();【1:可接管 0:不可接管】 ||
- 启动服务并修改参数
主机:
dmdba@\~\]$ /home/dmdba/dm/dmdbms/bin/DmServiceDMSERVER start \[dmdba@\~\]$/home/dmdba/dm/dmdbms/bin/disql SYSDBA/Dameng456 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); ALTER DATABASE MOUNT; SP_SET_OGUID(45331); ALTER DATABASE PRIMARY; ALTER DATABASE OPEN FORCE; SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); 备机: \[dmdba@\~\]$ /home/dmdba/dm/dmdbms/bin/DmServiceDMSERVER start \[dmdba@\~\]$ /home/dmdba/dm/dmdbms/bin/disql SYSDBA/Dameng456 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); ALTER DATABASE MOUNT; SP_SET_OGUID(45331); ALTER DATABASE STANDBY; ALTER DATABASE OPEN FORCE; SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); 1. ****启动守护进程**** 主/备机:\[dmdba@\~\]$ /home/dmdba/dm/dmdbms/bin/DmWatcherServiceWatcher start 1. ****启动监视器**** 前台启动: \[dmdba@\~\]$cd /home/dmdba/dm/dmdbms/bin/ \[dmdba@\~\]$./dmmonitor dmmonitor.ini 后台启动: \[dmdba@\~\]$ /home/dmdba/dm/dmdbms/bin/DmMonitorServiceMonitor start 注:这里需要先注册服务,/home/dmdba/dm/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /home/dmdba/dm/dmdbms/bin/dmmonitor.ini 1. ****启停集群**** 启动: 主/备机:\[dmdba@\~\]$ /home/dmdba/dm/dmdbms/bin/DmWatcherServiceWatcher start 停止: 主/备机:\[dmdba@\~\]$ /home/dmdba/dm/dmdbms/bin/DmWatcherServiceWatcher stop 主/备机:\[dmdba@\~\]$ /home/dmdba/dm/dmdbms/bin/DmServiceDMSERVER stop 1. ****创建dm_svc.conf**** vim /etc/dm_svc.conf TIME_ZONE=(480) LANGUAGE=(cn) DW1=(172.16.1.1:5236,172.16.1.2:5236) \[DW1
CLUSTER=(DW)
LOGIN_MODE=(1)
SWITCH_TIMES=(300)
SWITCH_INTERVAL=(200)
- 应用连接方式
<DRIVER>dm.jdbc.driver.DmDriver</DRIVER>
<URL>jdbc:dm://DW1</URL>
<USERNAME>SYSDBA</USERNAME>
<PASSWORD>Dameng456</PASSWORD>