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 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;

在实时备机上查询

可以查询出来。

 

 

 

 

 

将主库关机

可以看到,备库接管了主库,发生了主备切换,备库在切换为主库时在设定的时间向异步备库同步数据。

原文地址:https://www.cnblogs.com/hong-yf/p/14762883.html