DM8数据守护Data_Watch部署

####################################################
一、系统规划

主库:192.168.100.1——eth0
主机名:rac01
PORT_NUM:5236——实例的对外服务端口
MAL_HOST:55.0.10.1 (内部通信)——eth1
MAL_PORT:5238——MAL系统监听TCP连接的端口
MAL_INST_DW_PORT:5237——实例监听守护进程 TCP 连接的端口
MAL_DW_PORT:5239——实例对应的守护进程监听TCP连接的端口
数据库安装目录:/dm
数据文件目录:/dm/data/pyzdm
实例名:DMSERVER

备库:192.168.100.2——eth0
主机名:rac02
PORT_NUM:5236
MAL_HOST:55.0.10.2 (内部通信)——eth1
MAL_PORT:5238
MAL_INST_DW_PORT:5237
MAL_DW_PORT:5239
数据库安装目录:/dm
数据文件目录:/dm/data/pyzdm
实例名:DMSERVER2

监视器:192.168.100.2(可以在除主备节点以外的服务器上创建监视器,本次实验在备库端创建)
在这里插入图片描述
###############################################
二、系统配置(主备节点都要执行)

  1. 创建安装用户组dinstall
groupadd dinstall
  1. 创建安装用户dmdba
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
  1. 初始化用户密码
echo "dmdba" |passwd --stdin dmdba
  1. 修改数据库安装目录权限
chown -R dmdba:dinstall /dm
  1. 关闭selinux
    使用root用户执行下面的命令
setenforce 0 
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
getenforce
  1. 调整服务状态
    使用root用户调整以下服务的状态
service iptables stop
service iptables save
service ip6tables stop
service ip6tables save
chkconfig avahi-daemon off
chkconfig bluetooth off
chkconfig cpuspeed off
chkconfig cups off
chkconfig firstboot off
chkconfig ip6tables off
chkconfig iptables off
chkconfig pcmcia off
  1. 配置用户的shell limit
cat >> /etc/security/limits.conf << EOF
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 131072
dmdba hard nproc 131072
dmdba soft nofile 131072
dmdba hard nofile 131072
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
EOF
  1. 配置sysctl内核配置参数
echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "kernel.shmall = 2097152" >> /etc/sysctl.conf
echo "kernel.shmmax = 4294967295" >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.wmem_max = 1048586" >> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = 262144 262144 262144" >> /etc/sysctl.conf
echo "net.ipv4.tcp_rmem = 4194304 4194304 4194304" >> /etc/sysctl.conf

生效sysctl -p

  1. 修改dmdba环境变量
su - dmdba
vim .bash_profile
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm/bin"
export DM_HOME="/dm"
PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH

####################################################
三、数据库前期准备

主库操作:
su - dmdba

  1. 创建数据库并开启归档模式
    ./DMInstall.bin(图形化安装略)
SQL> alter database mount;
SQL> alter database add archivelog 'dest=/dm/data/pyzdm/arch,type=local,file_size=64,space_limit=0';
SQL> alter database archivelog;
SQL> alter database open;
  1. 进行全库备份(dmrman需要做脱机备份)
    停库:/etc/init.d/DmServiceDMSERVER stop

/dm/bin/dmrman

RMAN> backup database '/dm/data/pyzdm/dm.ini' backupset '/dm/data/DM_20201218';
RMAN> show backupset '/dm/data/DM_20201218';

cd /dm/data
tar -cvf DM_20201218.tar DM_20201218/
发送备份压缩包到备库
scp DM_20201218.tar rac02:/dm/data

备库操作:
先安装数据库软件,手动初始化数据库,再根据主库备份进行一致性恢复

  1. 安装数据库软件
    ./DMInstall.bin

  2. 手动初始化数据库

cd /dm/bin
./dminit PATH=/dm/data PAGE_SIZE=8 DB_NAME=pyzdm INSTANCE_NAME=DMSERVER2
  1. 开启归档模式
    ./disql sysdba/SYSDBA
SQL> alter database mount;
SQL> alter database add archivelog 'dest=/dm/data/pyzdm/arch,type=local,file_size=64,space_limit=0';
SQL> alter database archivelog;
SQL> alter database open;
  1. 修改sysdba密码(不改也行。。。默认密码SYSDBA)
SQL> alter system set 'PWD_POLICY'=0 both;
SQL> alter user sysdba identified by sysdba;
  1. 重新登陆并关闭数据库(dmrman需要脱机恢复)
    disql sysdba/sysdba
SQL> shutdown immediate;
  1. 解压备份压缩包
    cd /dm/data
    tar -xvf DM_20201218.tar

  2. 检查备份片
    RMAN> show backupset ‘/dm/data/DM_20201218’;
    RMAN> check backupset ‘/dm/data/DM_20201218’;
    在这里插入图片描述

  3. 备库脱机恢复
    RMAN> restore database ‘/dm/data/pyzdm/dm.ini’ from backupset ‘/dm/data/DM_20201218’;
    在这里插入图片描述

RMAN> recover database ‘/dm/data/pyzdm/dm.ini’ update db_magic;
在这里插入图片描述

  1. 注册备库服务(root执行)
./dm_service_installer.sh -t dmserver -p DMSERVER2 -i /dm/data/pyzdm/dm.ini -m mount

####################################################
四、修改主备配置文件

主库修改:

  1. 配置dm.ini
sed -i 's/ALTER_MODE_STATUS               =  1/ALTER_MODE_STATUS               =  0/' /dm/data/pyzdm/dm.ini
sed -i 's/ENABLE_OFFLINE_TS               =  1/ENABLE_OFFLINE_TS               =  2/' /dm/data/pyzdm/dm.ini
sed -i 's/MAL_INI                         =  0/MAL_INI                         =  1/' /dm/data/pyzdm/dm.ini
  1. 配置dmmal.ini(此配置文件,主备需要保持一致)
cat >> /dm/data/pyzdm/dmmal.ini << EOF
MAL_CHECK_INTERVAL      = 5
MAL_CONN_FAIL_INTERVAL  = 5

[MAL_INST1]
  MAL_INST_NAME         = DMSERVER
  MAL_HOST              = 55.0.1.10
  MAL_PORT              = 5238
  MAL_INST_HOST         = 192.168.100.1
  MAL_INST_PORT         = 5236
  MAL_DW_PORT           = 5239
  MAL_INST_DW_PORT      = 5237

[MAL_INST2]
  MAL_INST_NAME         = DMSERVER2
  MAL_HOST              = 55.0.1.11
  MAL_PORT              = 5238
  MAL_INST_HOST         = 192.168.100.2
  MAL_INST_PORT         = 5236
  MAL_DW_PORT           = 5239
  MAL_INST_DW_PORT      = 5237
EOF
  1. 配置dmarch.ini
    主库:
vim /dm/data/pyzdm/dmarch.ini——添加以下内容
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER2——填写目标端服务名后缀
  1. 配置dmwatcher.ini
cat >> /dm/data/pyzdm/dmwatcher.ini << EOF
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 666666
INST_INI = /dm/data/pyzdm/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
EOF

备库修改:

  1. 配置dm.ini
sed -i 's/ALTER_MODE_STATUS               =  1/ALTER_MODE_STATUS               =  0/' /dm/data/pyzdm/dm.ini
sed -i 's/ENABLE_OFFLINE_TS               =  1/ENABLE_OFFLINE_TS               =  2/' /dm/data/pyzdm/dm.ini
sed -i 's/MAL_INI                         =  0/MAL_INI                         =  1/' /dm/data/pyzdm/dm.ini
  1. 配置dmmal.ini(此配置文件,主备需要保持一致)
cat >> /dm/data/pyzdm/dmmal.ini << EOF
MAL_CHECK_INTERVAL      = 5
MAL_CONN_FAIL_INTERVAL  = 5

[MAL_INST1]
  MAL_INST_NAME         = DMSERVER
  MAL_HOST              = 55.0.1.10
  MAL_PORT              = 5238
  MAL_INST_HOST         = 192.168.100.1
  MAL_INST_PORT         = 5236
  MAL_DW_PORT           = 5239
  MAL_INST_DW_PORT      = 5237

[MAL_INST2]
  MAL_INST_NAME         = DMSERVER2
  MAL_HOST              = 55.0.1.11
  MAL_PORT              = 5238
  MAL_INST_HOST         = 192.168.100.2
  MAL_INST_PORT         = 5236
  MAL_DW_PORT           = 5239
  MAL_INST_DW_PORT      = 5237
EOF
  1. 配置dmarch.ini
vim /dm/data/pyzdm/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER
  1. 配置dmwatcher.ini
cat >> /dm/data/pyzdm/dmwatcher.ini << EOF
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 666666
INST_INI = /dm/data/pyzdm/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
EOF
  1. 由于监视器在备库端进行配置,所以需要在备库修改dmmonitor.ini
cat >> /dm/data/pyzdm/dmmonitor.ini << EOF
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 666666
MON_DW_IP = 55.0.1.10:5239
MON_DW_IP = 55.0.1.11:5239
EOF

####################################################
五、启动数据库

注意:一定要以Mount方式启动数据库实例,数据守护配置结束后,守护进程会自动Open数据库。

主库:

  1. 以Mount方式启动主库
dmserver /dm/data/pyzdm/dm.ini -noconsole mount &
  1. 设置OGUID
    登录:disql sysdba/sysdba
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(666666);
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

关于OGUID:系统通过OGUID值确定一个守护进程组,由用户保证OGUID值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。

  1. 修改数据库模式
SQL> alter database primary;

备库:

  1. 以Mount方式启动备库
dmserver /dm/data/pyzdm/dm.ini -noconsole mount &
  1. 设置OGUID
    登录:disql sysdba/sysdba
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(666666);
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
  1. 修改数据库模式
SQL> alter database standby;

####################################################
六、启动守护进程

在主库生成守护进程控制文件:

  1. 配置dmwatcher.ctl (守护V4.0不需要,记录在系统表中)
cd /dm/bin
./dmctlcvt t2dwctl /dm/data/pyzdm/dmwatcher.ini /dm/data
  1. 拷贝生成的dmwatcher.ctl文件到主、备机的数据文件目录
cp /dm/data/GRP1/dmwatcher.ctl /dm/data/pyzdm
scp /dm/data/GRP1/dmwatcher.ctl rac02:/dm/data/pyzdm

同一个守护进程组,只需要生成一份dmwatcher.ctl文件。

  1. 注册dmwatcher服务
    主库:
    cd /dm/script/root
./dm_service_installer.sh -t dmwatcher -p DMSERVER -i /dm/data/pyzdm/dmwatcher.ini

启动守护进程(dmdba用户启动)
cd /dm/bin

./DmWatcherServiceDMSERVER start

备库:
cd /dm/script/root

./dm_service_installer.sh -t dmwatcher -p DMSERVER2 -i /dm/data/pyzdm/dmwatcher.ini

启动守护进程

./DmWatcherServiceDMSERVER2 start

启动监视进程

./dmmonitor /dm/data/pyzdm/dmmonitor.ini

在这里插入图片描述
一主一备实时数据守护系统搭建完成
####################################################
七、主备同步测试

主库:
[dmdba@rac01 pyzdm]$ dislq sysdba/sysdba
在这里插入图片描述
在这里插入图片描述

SQL> create tablespace pyz datafile '/dm/data/pyzdm/pyz01.dbf' size 128 autoextend on;
SQL> create user pyz identified by pyz default tablespace pyz;
SQL> grant public,resource to pyz;
SQL> create table pyz.test2 as select * from dba_objects;

查看test2的数据量
在这里插入图片描述

备库验证:
[dmdba@rac02 dm]$ dislq sysdba/sysdba
查看归档模式和位置
在这里插入图片描述
查看MAL配置信息
在这里插入图片描述
查看刚刚在主库添加的表空间以及数据文件
SQL> select file_name,tablespace_name from dba_data_files;
在这里插入图片描述
查看在主库创建的用户
在这里插入图片描述
查看test2表的数据量,与主库一致,数据同步成功
SQL> select count(*) from pyz.test2;
在这里插入图片描述
####################################################
八、启动和退出流程

退出过程:退出监视器——关闭备机的守护进程——关闭主机的守护进程——关闭主机实例——关闭备机实例
启动过程:开主机实例——开主机守护进程——开备机实例——开备机守护进程——打开确认监视器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值