一、环境准备
1、部署规划:
(1)实例规划:
实例名 | 端口号 | 主机地址 | 角色 | 用户 | 组 |
DM01 | 5236 | 192.168.138.130 | 主库 | dmdba | dinstall |
DM02 | 5236 | 192.168.138.198 | 实时备库 | dmdba | dinstall |
DM03 | 5236 | 192.168.138.199 | 异步备库 | dmdba | dinstall |
2、系统检查
getconf LONG_BIT #查看操作系统位数
cat /etc/issue #查看操作系统信息
cat /proc/cpuinfo | grep 'model name' |uniq #查看cpu信息
free -h #查看内存信息
df -h #查看磁盘信息
输入命令ulimit –a检查openfile参数是否为65536或者无限制
若open file参数不是65536或者无限制则用以下方式进行修改:
输入命令进入limits.conf文件编辑界面 | vi /etc/security/limits.conf |
进入到limits.conf文件后,键盘按"i"开始插入数据,在文件内容末尾增加内容 | dmdba soft nofile 65536 |
添加完毕之后先按键盘"esc"键,再输入:wq,回车后退出文件编辑界面 | |
临时生效 | ulimit -n 65536 |
输入命令查看参数修改是否成功 | ulimit –a |
3、初始化数据库实例
cd /home/dmdba/dmdbms/bin
./dminit PATH=/home/dmdba/dmdbms/data PAGE_SIZE=16 CASE_SENSITIVE=1
注意:初始化以后一定要分别开停库一次。
4、脱机备份、还原恢复
注意:进行前一定要脱机
(1)在主库上运行dmrman命令:
./dmrman ctlstmt="backup database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' full to backup20201204 backupset '/home/dmdba/dmdbms/data/backup20201204'"
(2)将备份发送到备库DM02/DM03的data目录下
scp -r /home/dmdba/dmdbms/data/backup20201204/ dmdba@192.168.138.198:/home/dmdba/dmdbms/data
scp -r /home/dmdba/dmdbms/data/backup20201204/ dmdba@192.168.138.199:/home/dmdba/dmdbms/data
(3)在备库上使用dmrman命令还原更新
还原:
./dmrman ctlstmt="restore database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmdbms/data/backup20201204'"
恢复:
./dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmdbms/data/backup20201204'"
更新db_magic:
./dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' update db_magic"
二、配置主库
1、配置dm.ini
这里没有涉及到具体的业务,所以不进行调优具体参数如下
INSTANCE_NAME=DM01
COMPATIBLE_MODE=2
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
#配置有异步归档时,打开定时器,定时同步归档到异备库
TIMER_INI= 1
2、配置dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM01
MAL_HOST = 192.168.138.130
MAL_PORT = 61141
MAL_INST_HOST = 192.168.138.130
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = DM02
MAL_HOST = 192.168.138.198
MAL_PORT = 61142
MAL_INST_HOST = 192.168.138.198
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
[MAL_INST3]
MAL_INST_NAME = DM03 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.138.199#MAL系统监听TCP连接的IP地址
MAL_PORT = 61143#MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.138.199#实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT= 52143 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33143 #实例监听守护进程TCP连接的端口
3、配置dmarch.ini
在原来主库的配置dmarch.ini的基础上,增加异步归档的配置项。
[ARCHIVE_TIMELY1]
ARCH_TYPE = REALTIME
ARCH_DEST = DM02 #写出了本机之外的实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/data/DAMENG/arch # 本地的存档地址
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 0
[ARCHIVE_ASYNC]
ARCH_TYPE= ASYNC#异步归档类型
ARCH_DEST= DM03 #异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini中的名称一致
4、配置dmtimer.ini
配置dmtimer.ini,用于定时触发实例发送归档日志到异步备库。
下面示例中定时器配置为每天00:00:00触发主库发送归档日志到异步备库,可以根据实际情况再做调整。
[RT_TIMER] #和dmarch.ini中的ARCH_TIMER_NAME一致
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 = 2020-12-05 00:00:01
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1
5、配置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 = /home/dmdba/dmdbms/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
6、启动主库
一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。
7、配置OGUID
#登录disql,修改OGUID
sp_set_oguid(453331);
#修改数据库模式
alter database primary;
三、配置实时备机
1、dm.ini
这里没有涉及到具体的业务,所以不进行调优具体参数如下
INSTANCE_NAME=DM02
COMPATIBLE_MODE=2
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
#配置有异步归档时,打开定时器,定时同步归档到异备库
TIMER_INI= 1
2、配置dmmal.ini
和主库的一样
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM01
MAL_HOST = 192.168.138.130
MAL_PORT = 61141
MAL_INST_HOST = 192.168.138.130
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = DM02
MAL_HOST = 192.168.138.198
MAL_PORT = 61142
MAL_INST_HOST = 192.168.138.198
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
[MAL_INST3]
MAL_INST_NAME = DM03 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.138.199#MAL系统监听TCP连接的IP地址
MAL_PORT = 61143#MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.138.199#实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT= 52143 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33143 #实例监听守护进程TCP连接的端口
3、配置dmarch.ini
在原来备库的配置dmarch.ini的基础上,增加异步归档的配置项。
[ARCHIVE_TIMELY1]
ARCH_TYPE = REALTIME
ARCH_DEST = DM01 #写出了本机之外的实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/data/DAMENG/arch # 本地的存档地址
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 0
[ARCHIVE_ASYNC]
ARCH_TYPE= ASYNC#异步归档类型
ARCH_DEST= DM03 #异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini中的名称一致
4、配置dmtimer.ini
配置dmtimer.ini,用于备库切换为主库后,定时触发实例发送归档日志到异步备库。下面示例中定时器配置为每天00:00:00触发主库发送归档日志到异步备库,可以根据实际情况再做调整。
[RT_TIMER] #和dmarch.ini中的ARCH_TIMER_NAME一致
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 = 2020-12-05 00:00:01
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1
5、dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 45331
INST_INI = /home/dmdba/dmdbms/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
6、启动备库
一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。
./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount
7、设置OGUID
#以mount模式开启备库
./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount
#登录disql,修改OGUID
sp_set_oguid(453331);
alter database standby;
四、配置异步备机
1、dm.ini
INSTANCE_NAME=DM03
PORT_NUM= 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL= 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS= 0#不允许手工方式修改实例模式/状态/
OGUIDENABLE_OFFLINE_TS= 2#不允许备库OFFLINE表空间
MAL_INI= 1#打开MAL系统
ARCH_INI= 1#打开归档配置
RLOG_SEND_APPLY_MON= 64 #统计最近64次的日志重演信息
2、dmmal.ini
所有主备库一样
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM01
MAL_HOST = 192.168.138.130
MAL_PORT = 61141
MAL_INST_HOST = 192.168.138.130
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = DM02
MAL_HOST = 192.168.138.198
MAL_PORT = 61142
MAL_INST_HOST = 192.168.138.198
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
[MAL_INST3]
MAL_INST_NAME = DM03 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.138.199#MAL系统监听TCP连接的IP地址
MAL_PORT = 61143#MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.138.199#实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT= 52143 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33143 #实例监听守护进程TCP连接的端口
3、dmarch.ini
本地守护类型的备库只需要配置本地归档。
[ARCHIVE_LOCAL1]
ARCH_TYPE= LOCAL#本地归档类型
ARCH_DEST= /home/dmdba/dmdbms/data/DAMENG/arch#本地归档文件路径
ARCH_FILE_SIZE= 128#单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT= 0 #单位Mb,0表示无限制,范围1024~4294967294M
4、watcher.ini
[GRP1]
DW_TYPE = LOCAL #本地守护类型
DW_MODE = MANUAL#故障手动切换模式
DW_ERROR_TIME = 10#远程守护进程故障认定时间
INST_ERROR_TIME = 10#本地实例故障认定时间
INST_OGUID = 453331#守护系统唯一OGUID值
INST_INI = /home/dmdba/dmdbms/data/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1#打开实例的自动启动功能
INST_STARTUP_CMD =/home/dmdba/dmdbms/bin/dmserver #命令行方式启动
5、启动异步备库
以Mount方式启动备库
./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount
6、设置OGUID
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
修改数据库模式
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
五、配置监视器
在实时备机上
MON_DW_Confirm = 1 #0是非确认监视器(不可以自动切换主备)1相反
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.138.198:52142
MON_DW_IP = 192.168.138.130:52141
#新增到异步备库DM03守护进程的连接信息
MON_DW_IP = 192.168.138.199:52143
六、启动集群
主备库的守护进程
./dmwatcher /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini
监视器启动:
./dmmonitor /home/dmdba/dmdbms/data/dmmonitor.ini
可以看到三个数据库都是open状态。
七、测试
在主库建表并插入数据
create table users(
uname varchar(10),
age int
);
insert into users values('hyf',23);
commit;
在实时备机上查询
可以查询出来。
将主库关机
可以看到,备库接管了主库,发生了主备切换,备库在切换为主库时在设定的时间向异步备库同步数据。