达梦DM8之数据守护4.0实时主备环境搭建

概要

介绍DM8的数据守护的实时主备环境搭建

实时主备使用三台主机,主库实例名DW01,备库实例名DW2,操作系统CentOS7。内部通信的MAL_HOST的IP地址可与本地IP相同,也可以不同,根据个人喜好配置。
INST_OGUID=453331

类型 IP 实例名 PORT_NUM DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT
主库 192.168.149.135 DW01 5236 5237 192.168.149.135 5238 5239
备库 192.168.149.132 DW01 5236 5237 192.168.149.132 5238 5239
监听 192.168.149.134 DW01 5236 5237 192.168.222.120 5238 5239

整体架构流程

提示:这里可以添加技术整体架构
在这里插入图片描述

网络端口及IP的配置,根据个人电脑实际进行操作。但用VM的nat模式下,一定要注意虚拟机的IP会随着每次开关机的变化而发生变化

创建主库并同步原始数据

同一个数据守护环境中主备库的数据库名相同,实例名不同。本实操数据同步方法为直接停止主库,采用脱机备份的方式备份主库,然后复制到备库中恢复。

创建主库

  • 创建主库实例
    配置实例前准备
    附加实例存放路径。初始化实例到/dm8/data目录下为例
    (执行初始化命令前,需要使用 root 用户授予 /dm8/data 目录相应权限)
    mkdir /dm8/data
    chown dmdba:dinstall -R /dm8/data
    chmod -R 755 /dm8/data

     dmdba用户进入bin目录
     数据库名为 dw实例名为dw01 DBSERVER端口为 5236
     ./dminit path=/dm8/data DB_NAME=dw INSTANCE_NAME=dw01 PORT_NUM=5236
    
  • root用户注册主库实例服务,便于管理
    root 用户进入数据库安装目录
    cd /home/dmdba/dmdbms/script/root
    root目录下注册服务
    /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm8/data/dw/dm.ini -p dw (dw为服务名称)

  • 使用DMINIT创建的实例,在第一次启动时进行初始化
    dmdba在安装目录bin下执行
    ./dmserver /dm8/data/dw/dm.ini
    ./disql SYSDBA/SYSDBA

  • 启动归档模式,否则无法备份主库
    disql里执行
    alter database add archivelog ‘dest=/dm/dmarch,type=local,file_size=128,space_limit=0’;
    alter database archivelog;
    alter database open;

脱机备份主库

  • 使用DMRMAN脱机备份主库。备份之前要确保DMAP是启动的。
    脱机备份主库时,出现错误:
    服务器正在运行或者存在其他进程正在操作同一个库,查看所有进程
    ps aux|grep dmser
    root 3019 0.4 44.4 3737496 442800 pts/0 Sl+ 00:44 0:09 ./dmserver /dm8/data/dw/dm.ini
    kill 3019
    ./dmrman CTLSTMT=“backup database ‘/dm8/data/dw/dm.ini’ backupset ‘/home/dmdba/dmdbms/dmbak/dw_full_01’”
    其中,/home/dmdba/dmdbms/dmbak/dw_full_01为一个新空目录
    主库在运行过程当中比较耗时,可直接在之前的窗口按“Ctrl+C”或者输入exit命令,完成实例的关闭。

创建备库

  • 创建备库实例
    在备库主机中创建备库实例
    ./dminit path=/dm8/data DB_NAME=dw INSTANCE_NAME=dw02 PORT_NUM=5236

  • root用户注册备库实例服务,便于管理
    root 用户进入数据库安装目录
    cd /home/dmdba/dmdbms/script/root
    root目录下注册服务
    /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm8/data/dw/dm.ini -p dw

备库恢复备份

  • 主库备份传输到备库
    dw1的bin目录下执行
    备库上新建/home/dmdba/dmdbms/dmbak/dw_full_02文件
    scp -r /home/dmdba/dmdbms/dmbak/dw_full_01 192.168.149.132:/home/dmdba/dmdbms/dmbak/dw_full_02

  • 恢复备库
    bin目录下执行
    ./dmrman CTLSTMT=“restore database ‘/dm8/data/dw/dm.ini’ from backupset ‘/home/dmdba/dmdbms/dmbak/dw_full_02/dw_full_01’”
    数据库恢复
    ./dmrman CTLSTMT=“recover database ‘/dm8/data/dw/dm.ini’ from backupset ‘/home/dmdba/dmdbms/dmbak/dw_full_02/dw_full_01’”
    更新数据库db_magic
    ./dmrman CTLSTMT=“recover database ‘/dm8/data/dw/dm.ini’ update db_magic”

配置主备库参数
实时主备的数据守护需要配置 4 个参数文件。配置文件都是在实例目录下创建。

  • 配置dm.ini
    此文件在创建实例时会自动生成,配置的参数根据不同节点进行操作。
    dm.ini
    INSTANCE_NAME = DW01
    PORT_NUM =
    DW_INACTIVE_INTERVAL=60
    ALTER_MODE_STATUS = 0
    ENABLE_OFFLINE_TS=2
    MAI_INI=1
    ARCH_INI=1
    RLOG_SEND_APPLY_MON=64

  • 配置dmmal.ini
    需要单独创建此文件,主备库的配置必须完全一致。
    新建dmmal.ini
    MAL_CHECK_INTERVAL = 5
    MAL_CONN_FAIL_INTERVAL =5

    [MAL_INST1]
    MAL_INST_NAME=DW01
    MAL_HOST=192.168.149.135
    MAL_PORT=5238
    MAL_INST_HOST=192.168.149.135
    MAL_INST_PORT=5236
    MAL_DW_PORT=5239
    MAL_INST_DW_PORT=5237

    [MAL_INST2]
    MAL_INST_NAME=DW02
    MAL_HOST=192.168.149.132
    MAL_PORT=5238
    MAL_INST_HOST=192.168.149.132
    MAL_INST_PORT=5236
    MAL_DW_PORT=5239
    MAL_INST_DW_PORT=5237

  • 配置dmarch.ini
    此文件在两个主备节点的环境中,数据同步的arch_dest互相写对方的实例。如DW01则写对应arch_dest写DW02,若之前已启动此文档,则文件存在,否则需要手动创建。
    注意#注释的内容不能去掉,以主节点的为例:
    #DaMeng Database Archive Configuration file
    #this is comments

    [ARCHIVE_LOCAL1]
    ARCH_TYPE            = LOCAL        
    ARCH_DEST            = /dm/dmarch        
    ARCH_FILE_SIZE       = 128        
    ARCH_SPACE_LIMIT     = 0        
    ARCH_FLUSH_BUF_SIZE  = 0        
    ARCH_HANG_FLAG       = 1        
    #DaMeng Database Archive Configuration file
    #this is comments
     ARCH_WAIT_APPLY=1
     [ARCHIVE_REALTIME]
      ARCH_TYPE            = REALTIME
     ARCH_DEST            = DW02
    
  • 配置dmwatcher.ini
    dmwatcher.ini是守护进程配置文件,除了异步主备,其他类型的主备必须配置为全局守护类型。在两个主备节点都创建并添加以下内容。
    [GRP1]
    DW_TYPE=GLOBAL
    DW_MODE=AUTO
    INST_RECOVER_TIME=60
    INST_ERROR_TIME=10
    INST_OGUID=453331
    INST_INI=/dm8/data/dw/dm.ini
    INST_AUTO_RESTART=1
    INST_STARTUP_CMD=/home/dmdba/dmdbms/bin/dmserver
    RLOG_SEND_THRESHOLD=0
    RLOG_APPLY_THRESHOLD=0

启动主备库
为保证数据的一致性,在数据守护搭建时,这一部必须以配置模式启动主备库。

  • 启动主库
    cd /home/dmdba/dmdbms/bin
    dmserver /dm8/data/dw/dm.ini mount
  • 启动备库
    cd /home/dmdba/dmdbms/bin
    dmserver /dm8/data/dw/dm.ini mount

设施OGUID

  • disql中分别在主备库设置OGUID。
    sp_set_oguid(453331);

修改数据库模式

  • 使用SQL语句,将主库的模式设置为PRIMARY,备库的模式设置为STANDBY。
    主库:
    alter database primary;
    在这里插入图片描述

    备库:
    alter database standby;
    在这里插入图片描述

该操作是从NORMAL模式修改到其他模式,如果当前数据库不是NORMAL模式,那么需要先修改dm.ini中ALTER_MODE_STATUS值为1,使允许修改数据库模式,在修改对应模式后再将该值改为0。

注册并启动守护进程
用“root”用户将守护进程注册到服务,方便管理,在主库和备库都需要注册。以主库操作为例,备库操作与主库操作相同。

  • 注册守护进程服务
    /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/dw/dmwatcher.ini -p dw
  • 启动守护进程
    systemctl start DmWatcherServicedw
  • 守护进程启动后,自动将MOUNT状态的实例启动到OPEN
    cd /home/dmdba/dmdbms/bin
    ./disql SYSDBA/SYSDBA
    select instance_name,status , m o d e ,mode ,mode from v$instance;

配置监视器
为了确保数据守护高可用的正常运行,需要独立的服务器来部署监视器,监视器上只需要安装达梦数据库软件。

配置确认监视器参数文件

  • /dmdbms/data/目录下创建并修改dmmonitor.ini配置文件。
    在/home/dmdba/dmdbms/bin里新建dmmonitor.ini文件
    MON_DW_CONFIRM=1
    MON_LOG_PATH=/home/dmdba/dmdbms/bin/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.149.135:5239
    MON_DW_IP=192.168.149.132:5239
  • 用“root”用户注册,将确认监视器注册为服务。
    /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -monitor_ini/home/dmdba/dmdbms/bin/dmmonitor.ini -p dw
  • 启动确认监视器
    systemctl start DmMonitorServicedw.service
    查看是否有dmmonitor进程
    ps -ef|grep dmmonitor

配置普通监视器参数文件
在监控节点的/dmdbms/data/目录下创建并修改dmmonitor0.ini配置文件的命令如下。该配置文件供普通监视器使用。
在/home/dmdba/dmdbms/bin里新建dmmonitor0.ini文件
MON_DW_CONFIRM=0
MON_LOG_PATH=/home/dmdba/dmdbms/bin/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.149.135:5239
MON_DW_IP=192.168.149.132:5239
启动普通监视器
普通监视器用来查看和执行管理命令。其启动与否不影响数据守护的运行。
dmmonitor /dm8/dmdbms/data/dmmoitor0.ini

主备同步测试

主库建表
create table dave as select * from sysobjects;
select count(1) from dave;
在这里插入图片描述

备库查询
select instance_name,status , m o d e ,mode ,mode from v$instance;
select count(1) from dave;

在这里插入图片描述
监听状态
在这里插入图片描述

总结

实时主备的搭建,需要有耐心,每一步的操作需要非常细致,文件的填入不要因为复制黏贴遗漏单词、文件的权限都需要符合dmdba的账户权限、运行中的线程没启动需要查看指令来操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值