1实时备机+1异步备机
一、环境准备 1
1、部署规划: 1
2、系统检查 2
3、初始化数据库实例 2
4、脱机备份、还原恢复 2
二、配置主库 3
1、配置dm.ini 3
2、配置dmmal.ini 3
3、配置dmarch.ini 4
4、配置dmtimer.ini 4
5、配置dmwatcher.ini 5
6、启动主库 5
7、配置OGUID 5
三、配置实时备机 6
1、dm.ini 6
2、配置dmmal.ini 6
3、配置dmarch.ini 7
4、配置dmtimer.ini 7
5、dmwatcher.ini 8
6、启动备库 8
7、设置OGUID 8
四、配置异步备机 9
1、dm.ini 9
2、dmmal.ini 9
3、dmarch.ini 10
4、watcher.ini 10
5、启动异步备库 10
6、设置OGUID 10
五、配置监视器 11
六、启动集群 11
七、测试 12
一、环境准备
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 dmdba hard nofile 65536dmdba@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.iniMAL_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.iniINSTANCE_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、设置OGUIDSP_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; 在实时备机上查询 可以查询出来。
将主库关机 可以看到,备库接管了主库,发生了主备切换,备库在切换为主库时在设定的时间向异步备库同步数据。 相关 |