注册
DM8之数据守护搭建
培训园地/ 文章详情 /

DM8之数据守护搭建

www_heql 2023/03/01 1620 0 0

1 部署规划
Snipaste_20230228_172504.png

2.2 创建安装用户
[root@localhost ~]# groupadd dinstall
[root@localhost ~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@localhost ~]# passwd dmdba
[root@localhost ~]# id dmdba
注:id号建议主备一致

2.3 创建目录
[root@dmdbtest01 ~]# cd /opt/
[root@dmdbtest01 opt]# mkidr dm
[root@dmdbtest01 opt]# cd dm/
[root@dmdbtest01 dm]# mkdir dmdbms dmdata dmarch dmbak dm_coredump
[root@dmdbtest01 dm]# cd …
[root@dmdbtest01 opt]# chown -R dmdba:dinstall dm

2.4 关闭SELINUX
[root@localhost ~]# vi /etc/selinux/config --修改一下红色部分
SELINUX=disabled

2.5 关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl status firewalld
注:如果客户现场不允许关闭防火墙,则将DM数据库需要开启的端口告知客户,请客户加入防火墙白名单。

2.6 关闭swap
操作系统内存很大时可以选择禁用swap,如超过512G。
[root@dmdbtest01 ~]# vi /etc/fstab
/dev/mapper/centos-swap swap swap defaults 0 0
注:注释掉swap的那一行,

2.7 修改limit.conf
[root@dmdbtest01 ~]# vi /etc/security/limits.conf --添加如下
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 10240 --受/etc/security/limits.d/20-nproc.conf限制
dmdba hard nproc 10240 --受/etc/security/limits.d/20-nproc.conf限制
dmdba hard stack 8192
dmdba soft stack 8192
dmdba soft nice 0
dmdba hard nice 0
dmdba hard core unlimited
dmdba soft core unlimited
dmdba hard data unlimited
dmdba soft data unlimited
dmdba hard fsize unlimited
dmdba soft fsize unlimited
dmdba soft as unlimited
dmdba hard as unlimited
参数使用限制:
1)core file size建议设置为unlimited。并将core文件目录放到大的空间目录存放。
2) data seg size建议设置为1048576以上或unlimited,此参数过小将导致数据库启动失败。
3) file size建议设置unlimited(无限制),此参数过小导致数据库安装或初始化失败。
4) open files建议设置为 65536 以上或 unlimited。
5) virtual memory建议设置为1048576以上或 unlimited,此参数过小将导致数据库启动失败。
6) max user processes 最大线程数这个参数建议修改为10240。
7) nice 设置优先级,值越小表示进程“优先级”越高。
8) as,地址空间限制设置为unlimited。

2.8 修改sysctl.conf
[root@dmtest ~]# vim /etc/sysctl.conf --在最后添加红色部分
vm.overcommit_memory=0 --尽量不使用swap
vm.swappiness = 10 --内存使用到约90%时,规划使用swap
kernel.core_pattern=/opt/dm/dm_coredump/core-%e-%p-%t --用于生成core文件
使生效,
[root@dmtest ~]# sysctl -p
查看,
[root@dmtest ~]# cat /proc/sys/vm/overcommit_memory
[root@dmtest ~]# cat /proc/sys/vm/swappiness
[root@dmtest ~]# cat /proc/sys/kernel/core_pattern

2.9 修改磁盘调度算法
查看调度算法,
[root@localhost ~]#cat /sys/block/sda/queue/scheduler --sda根据硬盘名指定
注:数据库服务器建议使用deadline io调度算法,有的系统的调度算法是mq-deadline,磁盘支持哪种就用哪种。

更改到deadline调度算法(root权限):
永久修改,(CentOS7)
[root@localhost ~]# grubby --update-kernel=ALL --args=“elevator=deadline”
[root@localhost ~]# reboot --注意修改不对容易造成系统起不来

2.10 重启操作系统
对系统进行重启
注:以上操作在主、备机都操作。

3 DM8主备搭建
以下两种搭建方式区别只在于备份还原方式,其他方面基本相同。都需要主库进行重启。
3.1 主库联机备份方式
3.1.1 主库安装DM数据库
安装过程略,
数据库名:DAMENG,
实例名:DMTEST01,
配置好环境变量,归档已提前开启,使用脚本优化参数文件。
数据库中可以创建一些测试表空间、用户、数据等,数据库处于开启状态。

3.1.2 主库联机备份
备份,
[dmdba@dmdbtest01 dmarch]$ disql sysdba/SYSDBA
SQL> backup database backupset ‘/opt/dm/dmbak/db_full_202204241543’;
SQL> exit

3.1.3 主库修改参数文件
3.1.3.1 修改dm.ini
[dmdba@dmdbtest01 ~]$ cd /opt/dm/dmdata/DAMENG/
[dmdba@dmdbtest01 DAMENG]$ vim dm.ini --修改如下
INSTANCE_NAME = DMTEST01
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

dm.ini参数介绍,
INSTANCE_NAME = DMTEST01 #数据库实例名
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

3.1.3.2 修改dmarch.ini
开启归档后,会生成dmarch.ini文件,
[dmdba@dmdbtest01 DAMENG]$ vim dmarch.ini --修改参数如下
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dm/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 10240
ARCH_FLUSH_BUF_SIZE = 0

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DATEST02

dmarch.ini参数介绍,
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /opt/dm/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 2048 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位Mb,0表示无限制,范围1024~4294967294M,必须配
ARCH_FLUSH_BUF_SIZE = 0

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMTEST02 #实时归档目标实例名

3.1.3.3 修改dmmal.ini
如果没有dmmal.ini文件,手动创建dmmal.ini,
[dmdba@dmdbtest01 DAMENG]$ vim dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = DMTEST01
MAL_HOST = 192.168.111.168
MAL_PORT = 5336
MAL_INST_HOST = 192.168.111.168
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536

[MAL_INST2]
MAL_INST_NAME = DMTEST02
MAL_HOST = 192.168.111.169
MAL_PORT = 5337
MAL_INST_HOST = 192.168.111.169
MAL_INST_PORT = 5236
MAL_DW_PORT = 5437
MAL_INST_DW_PORT = 5537

dmmal.ini参数介绍,
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMTEST01 #实例名和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.111.168 #MAL系统监听TCP连接的IP地址
MAL_PORT = 5336 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.111.168 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5536 #节点实例监听守护进程的端口

[MAL_INST2]
MAL_INST_NAME = DMTEST02
MAL_HOST = 192.168.111.169
MAL_PORT = 5337
MAL_INST_HOST = 192.168.111.169
MAL_INST_PORT = 5236
MAL_DW_PORT = 5437
MAL_INST_DW_PORT = 5537

3.1.3.4 修改dmwatcher.ini
如果没有dmwatcher.ini文件,手动创建dmwatcher.ini,
[dmdba@dmdbtest01 DAMENG]$ vim dmwatcher.ini --修改如下,
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453332
INST_INI = /opt/dm/dmdata/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /opt/dm/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

dmwatcher.ini参数介绍,
[GRP1]
DW_TYPE = GLOBAL #全局守护类型,还可以选择LOCAL类型
DW_MODE = AUTO #自动切换模式,还可以选择手动切换模式MANUAL
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库检测备库故障恢复的时间间隔
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453332 #守护系统唯一OGUID值
INST_INI = /opt/dm/dmdata/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #实例自动重启
INST_STARTUP_CMD = /opt/dm/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

3.1.4 备库安装DM数据库
安装过程略,
数据库名:DAMENG
实例名:DMTEST02。没有外部数据。
保持关库状态。
配置好环境变量。

3.1.5 主库传输备份到备库
传输备份,
[dmdba@dmdbtest01 dmbak]$ pwd
/opt/dm/dmbak
[dmdba@dmdbtest01 dmbak]$ scp -r db_full_202204241543 192.168.111.169:/opt/dm/dmbak/

3.1.6 备库还原
备库属于关库状态,还原后不要启动备库!
[dmdba@dmdbtest02 ~]$ dmrman
RMAN> restore database ‘/opt/dm/dmdata/DAMENG/dm.ini’ from backupset ‘/opt/dm/dmbak/db_full_202204241543’;
过程略。。。
RMAN> recover database ‘/opt/dm/dmdata/DAMENG/dm.ini’ from backupset ‘/opt/dm/dmbak/db_full_202204241543’;
过程略。。。
RMAN> recover database ‘/opt/dm/dmdata/DAMENG/dm.ini’ update db_magic;
过程略。。。
RMAN>

3.1.7 主库传输参数文件到备库
[dmdba@dmdbtest01 DAMENG]$ pwd
/opt/dm/dmdata/DAMENG
[dmdba@dmdbtest01 DAMENG]$ scp dm.ini dmarch.ini dmmal.ini dmwatcher.ini 192.168.111.169:/opt/dm/dmdata/DAMENG/

3.1.8 备库修改参数文件
3.1.8.1 修改dm.ini
只修改实例名即可,其他参数与主库相同,
[dmdba@dmdbtest02 DAMENG]$ vim dm.ini
INSTANCE_NAME = DMTEST02

3.1.8.2 修改dmarch.ini
只修改ARCH_DEST = DMTEST01即可,
[dmdba@dmdbtest02 DAMENG]$ vim dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dm/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 10240
ARCH_FLUSH_BUF_SIZE = 0

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMTEST01

3.1.8.3 修改dmmal.ini
无需修改

3.1.8.4 修改dmwatcher.ini
无需修改

3.1.9 主库重启到mount状态
使用命令方式,前端启动数据库到mount状态,
[root@dmdbtest01 ~]# systemctl stop DmServiceDMTEST01 --如果没有配置服务不能使用此命令
[root@dmdbtest01 ~]# su - dmdba
[dmdba@dmdbtest01 bin]$ pwd
/opt/dm/dmdbms/bin
[dmdba@dmdbtest01 bin]$ ./dmserver /opt/dm/dmdata/DAMENG/dm.ini mount

3.1.10 主库配置OGUID和修改数据库模式
[dmdba@dmdbtest01 ~]$ disql sysdba/SYSDBA
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL> sp_set_oguid(453332);
SQL> alter database primary;
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
SQL> exit
[dmdba@dmdbtest01 ~]$

3.1.11 备库启动到mount状态
[dmdba@dmdbtest02 bin]$ pwd
/opt/dm/dmdbms/bin
[dmdba@dmdbtest02 bin]$ ./dmserver /opt/dm/dmdata/DAMENG/dm.ini mount

3.1.12 备库配置OGUID和修改数据库模式
[dmdba@dmdbtest02 ~]$ disql sysdba/SYSDBA
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL> sp_set_oguid(453332);
SQL> alter database standby;
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
SQL> exit
[dmdba@dmdbtest02 ~]$

3.1.13 主库注册守护进程
root用户执行,开机自启,
[root@dmdbtest01 root]# pwd
/opt/dm/dmdbms/script/root
[root@dmdbtest01 root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dm/dmdata/DAMENG/dmwatcher.ini -p DMTEST01
[root@dmdbtest01 root]#

3.1.14 备库注册守护进程
root用户执行,开机自启,
[root@dmdbtest02 root]# pwd
/opt/dm/dmdbms/script/root
[root@dmdbtest02 root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dm/dmdata/DAMENG/dmwatcher.ini -p DMTEST02

3.1.15 主库启动守护进程服务
启动服务,
[root@dmdbtest01 root]# systemctl start DmWatcherServiceDMTEST01

查看数据库目前状态,
[dmdba@dmdbtest01 bin]$ ./disql sysdba/SYSDBA
SQL> select name,status$ from v$instance;
NAME STATUS
DMTEST01 MOUNT
used time: 608.908(ms). Execute id is 100.
SQL>

3.1.16 备库启动守护进程服务
启动服务,
[root@dmdbtest02 ~]# systemctl start DmWatcherServiceDMTEST02

查看数据库当前状态,
[dmdba@dmdbtest02 bin]$ ./disql sysdba/SYSDBA
SQL> select name,status$ from v$instance;
NAME STATUS
DMTEST02 OPEN
used time: 2.554(ms). Execute id is 100.
SQL>
注:此时主库的状态应该也是OPEN。

3.1.18 主备同步测试
主库创建一张测试表,并添加数据,
[dmdba@dmdbtest01 ~]$ disql sysdba/SYSDBA
SQL> create table test01 (c1 int, c2 varchar(30));
SQL> insert into test01 values(1,‘ok’);
SQL> commit;

备库查看是否同步,
[dmdba@dmdbtest02 ~]$ disql sysdba/SYSDBA
SQL> select * from test01;
LINEID C1 C2
1 1 ok
used time: 3.317(ms). Execute id is 300.
SQL>

3.2 主库停机备份方式
3.2.1 主库安装DM数据库
安装过程略,
数据库名:DAMENG数据库,
实例名为DMTEST01,
配置好环境变量,归档已提前开启,使用脚本优化参数文件。
数据库中可以创建一些测试表空间、用户、数据等,数据库处于开启状态。

3.2.2 主库开启归档日志
[dmdba@dmdbtest01 ~]$ disql SYSDBA/SYSDBA
SQL> alter database mount;
SQL> alter database add archivelog ‘dest=/opt/dm/dmarch,type=local,file_size=1024,space_limit=0’;
SQL> alter database archivelog;
SQL> alter database open;
SQL> alter system switch logfile;
SQL>

3.2.3 主库停机备份
停库(root用户,使用服务关闭),
[root@dmdbtest01 DAMENG]# systemctl stop DmServiceDMTEST01 --服务需提前创建

备份,
[dmdba@dmdbtest01 ~]$ dmrman
RMAN>backup database ‘/opt/dm/dmdata/DAMENG/dm.ini’ backupset ‘/opt/dm/dmbak/db_full_20220424’;
备份过程略
RMAN> exit

3.2.4 主库修改参数文件
3.2.4.1 修改dm.ini
[dmdba@dmdbtest01 ~]$ cd /opt/dm/dmdata/DAMENG/
[dmdba@dmdbtest01 DAMENG]$ vim dm.ini --修改如下
INSTANCE_NAME = DMTEST01
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

dm.ini参数介绍,
INSTANCE_NAME = DMTEST01 #数据库实例名
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

3.2.4.2 修改dmarch.ini
开启归档后,会生成dmarch.ini文件,
[dmdba@dmdbtest01 DAMENG]$ vim dmarch.ini --修改参数如下
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dm/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 10240
ARCH_FLUSH_BUF_SIZE = 0

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DATEST02

dmarch.ini参数介绍,
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /opt/dm/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 2048 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT =10240 #单位Mb,0表示无限制,范围1024~4294967294M,必须配置
ARCH_FLUSH_BUF_SIZE = 0

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMTEST02 #实时归档目标实例名

3.2.4.3 修改dmmal.ini
如果没有dmmal.ini文件,手动创建dmmal.ini,
[dmdba@dmdbtest01 DAMENG]$ vim dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = DMTEST01
MAL_HOST = 192.168.111.168
MAL_PORT = 5336
MAL_INST_HOST = 192.168.111.168
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536

[MAL_INST2]
MAL_INST_NAME = DMTEST02
MAL_HOST = 192.168.111.169
MAL_PORT = 5337
MAL_INST_HOST = 192.168.111.169
MAL_INST_PORT = 5236
MAL_DW_PORT = 5437
MAL_INST_DW_PORT = 5537

dmmal.ini参数介绍
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMTEST01 #实例名和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.111.168 #MAL 系统监听TCP连接的IP地址
MAL_PORT = 5336 #MAL 系统监听TCP连接的端口
MAL_INST_HOST = 192.168.111.168 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5536 #节点实例监听守护进程的端口

[MAL_INST2]
MAL_INST_NAME = DMTEST02
MAL_HOST = 192.168.111.169
MAL_PORT = 5337
MAL_INST_HOST = 192.168.111.169
MAL_INST_PORT = 5236
MAL_DW_PORT = 5437
MAL_INST_DW_PORT = 5537

3.2.4.4 修改dmwatcher.ini
如果没有dmwatcher.ini文件,手动创建dmwatcher.ini,
[dmdba@dmdbtest01 DAMENG]$ vim dmwatcher.ini --修改如下,
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453332
INST_INI = /opt/dm/dmdata/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /opt/dm/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

dmwatcher.ini参数介绍,
[GRP1]
DW_TYPE = GLOBAL #全局守护类型,还可以选择LOCAL类型
DW_MODE = AUTO #自动切换模式,还可以选择手动切换模式MANUAL
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库检测备库故障恢复的时间间隔
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453332 #守护系统唯一OGUID值
INST_INI = /opt/dm/dmdata/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #实例自动重启
INST_STARTUP_CMD = /opt/dm/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

3.2.5 备库安装DM数据库
安装过程略,
数据库名:DAMENG
实例名:DMTEST02。没有外部数据。
保持关库状态。
配置好环境变量。

3.2.6 主库传输备份到备库
传输备份,
[dmdba@dmdbtest01 dmbak]$ pwd
/opt/dm/dmbak
[dmdba@dmdbtest01 dmbak]$ scp -r db_full_20220424 192.168.111.169:/opt/dm/dmbak/

3.2.7 备库还原
还原后不要启动备库!
[dmdba@dmdbtest02 ~]$ dmrman
RMAN> restore database ‘/opt/dm/dmdata/DAMENG/dm.ini’ from backupset ‘/opt/dm/dmbak/db_full_20220424’
过程略。。。
RMAN> recover database ‘/opt/dm/dmdata/DAMENG/dm.ini’ from backupset ‘/opt/dm/dmbak/db_full_20220424’
过程略。。。
RMAN> recover database ‘/opt/dm/dmdata/DAMENG/dm.ini’ update db_magic;
过程略。。。
RMAN>

3.2.8 主库传输参数文件到备库
[dmdba@dmdbtest01 DAMENG]$ pwd
/opt/dm/dmdata/DAMENG
[dmdba@dmdbtest01 DAMENG]$ scp dm.ini dmarch.ini dmmal.ini dmwatcher.ini 192.168.111.169:/opt/dm/dmdata/DAMENG/

3.2.9 备库修改参数文件
3.2.9.1 修改dm.ini
只修改实例名即可,其他参数与主库相同,
[dmdba@dmdbtest02 DAMENG]$ vim dm.ini
INSTANCE_NAME = DMTEST02

3.2.9.2 修改dmarch.ini
只修改ARCH_DEST = DMTEST01即可,
[dmdba@dmdbtest02 DAMENG]$ vim dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dm/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 10240
ARCH_FLUSH_BUF_SIZE = 0

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMTEST01

3.2.9.3 修改dmmal.ini
无需修改

3.2.9.4 修改dmwatcher.ini
无需修改

3.2.10 主库启动到mount状态
使用命令方式,前端启动数据库到mount状态,
[dmdba@dmdbtest01 bin]$ pwd
/opt/dm/dmdbms/bin
[dmdba@dmdbtest01 bin]$ ./dmserver /opt/dm/dmdata/DAMENG/dm.ini mount

3.2.11 主库配置OGUID和修改数据库模式
[dmdba@dmdbtest01 bin]$ ./disql sysdba/SYSDBA
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL> sp_set_oguid(453332);
SQL> alter database primary;
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
SQL> exit
[dmdba@dmdbtest01 ~]$

3.2.12 备库启动到mount状态
[dmdba@dmdbtest02 bin]$ pwd
/opt/dm/dmdbms/bin
[dmdba@dmdbtest02 bin]$ ./dmserver /opt/dm/dmdata/DAMENG/dm.ini mount

3.2.13 备库配置OGUID和修改数据库模式
[dmdba@dmdbtest02 bin]$ ./disql sysdba/SYSDBA
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL> sp_set_oguid(453332);
SQL> alter database standby;
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
SQL> exit
[dmdba@dmdbtest02 ~]$

3.2.14 主库注册守护进程
root用户执行,开机自启,
[root@dmdbtest01 root]# pwd
/opt/dm/dmdbms/script/root
[root@dmdbtest01 root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dm/dmdata/DAMENG/dmwatcher.ini -p DMTEST01
[root@dmdbtest01 root]#

3.2.15 备库注册守护进程
root用户执行,开机自启
[root@dmdbtest02 root]# pwd
/opt/dm/dmdbms/script/root
[root@dmdbtest02 root]#
[root@dmdbtest02 root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dm/dmdata/DAMENG/dmwatcher.ini -p DMTEST02

3.2.16 主库启动守护进程服务
启动服务,
[root@dmdbtest01 root]# systemctl start DmWatcherServiceDMTEST01

查看数据库目前状态,
[dmdba@dmdbtest01 bin]$ ./disql sysdba/SYSDBA
SQL> select name,status$ from v$instance;
NAME STATUS$
DMTEST01 MOUNT

used time: 608.908(ms). Execute id is 100.
SQL>

3.2.17 备库启动守护进程服务
启动服务,
[root@dmdbtest02 ~]# systemctl start DmWatcherServiceDMTEST02

查看数据库当前状态,
[dmdba@dmdbtest02 bin]$ ./disql sysdba/SYSDBA
SQL> select name,status$ from v$instance;

NAME STATUS$
DMTEST02 OPEN
used time: 2.554(ms). Execute id is 100.
SQL>
注:此时主库的状态应该也是OPEN。

3.2.18 主备同步测试
主库创建一张测试表,并添加数据,
[dmdba@dmdbtest01 bin]$ ./disql sysdba/SYSDBA
SQL> create table test01 (c1 int, c2 varchar(30));
SQL> insert into test01 values(1,‘ok’);
SQL> commit;

备库查看是否同步,
[dmdba@dmdbtest02 bin]$ ./disql sysdba/SYSDBA
SQL> select * from test01;
LINEID C1 C2
1 1 ok
used time: 3.317(ms). Execute id is 300.
SQL>

4 DM8监视器配置
4.1 主库创建监视模式监视器
创建日志存放路径,
[dmdba@dmdbtest01 dm]$ pwd
/opt/dm
[dmdba@dmdbtest01 dm]$ mkdir -p dmmonitor/log

添加监听参数文件,
[dmdba@dmdbtest01 dm]cd /opt/dm/dmdata/DAMENG
[dmdba@dmdbtest01 DAMENG]$ vim dmmonitor.ini --添加如下,
MON_DW_CONFIRM = 0 --如果改为1,则变成确认模式
MON_LOG_PATH = /opt/dm/dmmonitor/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453332
MON_DW_IP = 192.168.111.168:5436
MON_DW_IP = 192.168.111.169:5437

测试监听命令,
[dmdba@dmdbtest01 bin]$ pwd
/opt/dm/dmdbms/bin
[dmdba@dmdbtest01 bin]$ ./dmmonitor path=/opt/dm/dmdata/DAMENG/dmmonitor.ini
[monitor] 2022-04-24 16:36:09: DMMONITOR[4.0] V8
[monitor] 2022-04-24 16:36:09: DMMONITOR[4.0] IS READY.

[monitor] 2022-04-24 16:36:09: Received message from(DMTEST01)
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-04-24 16:36:09 OPEN OK DMTEST01 OPEN PRIMARY VALID 4 28298 28298

[monitor] 2022-04-24 16:36:09: Received message from(DMTEST02)
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-04-24 16:36:10 OPEN OK DMTEST02 OPEN STANDBY VALID 4 28298 28298

4.2 备库创建监视模式监视器
创建日志存放路径,
[dmdba@dmdbtest02 dm]$ pwd
/opt/dm
[dmdba@dmdbtest02 dm]$ mkdir -p dmmonitor/log

添加监听参数文件,
[dmdba@dmdbtest02 dm]cd /opt/dm/dmdata/DAMENG
[dmdba@dmdbtest02 DAMENG]$ vim dmmonitor.ini --添加如下,
MON_DW_CONFIRM = 0
MON_LOG_PATH = /opt/dm/dmmonitor/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453332
MON_DW_IP = 192.168.111.168:5436
MON_DW_IP = 192.168.111.169:5437

测试监听命令,
[dmdba@dmdbtest02 bin]$ pwd
/opt/dm/dmdbms/bin
[dmdba@dmdbtest02 bin]$ ./dmmonitor path=/opt/dm/dmdata/DAMENG/dmmonitor.ini
[monitor] 2022-04-24 16:36:09: DMMONITOR[4.0] V8
[monitor] 2022-04-24 16:36:09: DMMONITOR[4.0] IS READY.

[monitor] 2022-04-24 16:36:09: Received message from(DMTEST01)
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-04-24 16:36:09 OPEN OK DMTEST01 OPEN PRIMARY VALID 4 28298 28298

[monitor] 2022-04-24 16:36:09: Received message from(DMTEST02)
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-04-24 16:36:10 OPEN OK DMTEST02 OPEN STANDBY VALID 4 28298 28298

4.3 备库创建确认模式监视器
想要创建确认监视器,dmwatcher.ini的DW_MODE必须为AUTO。
因为只有两台虚拟机,所以在备库下测试创建确认模式监视器。
正常情况下,确认模式监视器要配置在第三台机器上,以便在主库发生异常时,自动切换备库为主库。
将dmmonitor.ini中的MON_DW_CONFIRM改为1即可。
步骤与4.2相同。

4.4 注册监视器服务
根据需求,只注册确认监视器的服务即可。设置开机自启,建议使用脚本也监控下。
[root@dmdbtest02 root]# pwd
/opt/dm/dmdbms/script/root
[root@dmdbtest02 root]# ./dm_service_installer.sh -t dmmonitor -monitor_ini /opt/dm/dmdata/DAMENG/dmmonitor.ini -p M1

5 主备集群启动与关停
5.1 关闭集群
关闭确认监视器,
[root@dmdbtest02 ~]# systemctl stop DmMonitorServiceM1
或者dmmonitor /opt/dm/dmdata/DAMENG/dmmonitor.ini exit

关闭主库守护进程,
[root@dmdbtest01 ~]# systemctl stop DmWatcherServiceDMTEST01
或者dmwatcher /opt/dm/dmdata/DAMENG/dmwatcher.ini exit

关闭备库守护进程,
[root@dmdbtest02 root]# systemctl stop DmWatcherServiceDMTEST02
或者dmwatcher /opt/dm/dmdata/DAMENG/dmwatcher.ini exit

关闭主库实例,
[root@dmdbtest01 ~]# systemctl stop DmServiceDMTEST01
或者./DmServiceDMTEST01 stop

关闭备库实例,
[root@dmdbtest02 ~]# systemctl stop DmServiceDMTEST02
或者./DmServiceDMTEST02 stop

5.2 启动集群
启动主库实例(mount)
[root@dmdbtest01 ~]# systemctl start DmServiceDMTEST01
或者./dmserver /opt/dm/dmdata/DAMENG/dm.ini mount

启动备库实例(mount)
[root@dmdbtest02 ~]# systemctl start DmServiceDMTEST02
或者./dmserver /opt/dm/dmdata/DAMENG/dm.ini mount

启动主库守护进程 (open)
[root@dmdbtest01 ~]# systemctl start DmWatcherServiceDMTEST01
或者./dmwatcher /opt/dm/dmdata/DAMENG/dm.ini

启动备库守护进程 (open)
[root@dmdbtest02 ~]# systemctl start DmWatcherServiceDMTEST02
或者./dmwatcher /opt/dm/dmdata/DAMENG/dm.ini

启动确认监视器
[root@dmdbtest02 ~]# systemctl start DmMonitorServiceM1.service
或者./dmmonitor /opt/dm/dmdata/DAMENG/dmmonitor.ini

6 注意事项
主备启动时,只启动DB服务时只能启动到mount状态,就算设定的是open也不行。
主备启动时,只能通过数据库守护服务进行启动。如果有一台服务器的服务没有启动,其他数据库则处于mount状态。
监视器的作用是方便查看主备集群状态信息、同步信息,可以配置自动进行主备切换。

当dmwatcher.ini中DW_MODE = AUTO时,如果没有开启确认模式监视器服务。备库宕掉后,主库会变成suspend状态。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服