达梦数据库主从复制

一、主从原理

  将主库产生的 Redo日志传输到备库,备库接收并重演Redo日志,从而实现备库与主库的数据同步

  整体架构如下图:

  

 

 

 

二、搭建DM数据守护环境

  环境如下:

    192.168.40.139   centos7.6    主库   dmwatcher守护      监视器   确认服务器时区

    192.168.40.138 centos7.6    备库   dmwatcher守护                    确认服务器时区

  部署前检查项:

  1、CPU :lscpu  

  2、内存:free -g 

  3、操作系统:cat /etc/os-release  

  3、磁盘:dd bs=32k count=20k if=/dev/zero of=test oflag=dsync

  4、网络:ethtool +网卡名

  2.1:备份主库并发送到从库进行恢复

Master:

./dmrman
dmrman V8
RMAN>backup database '/dmdata/data/DAMENG/dm.ini' full backupset '/linshi/full01';

  发送到从库进行恢复

./dmrman ctlstmt="restore database to '/dmdata/data/DAMENG' from backupset '/linshi/full01'"
./dmrman ctlstmt="recover database  '/dmdata/data/DAMENG/dm.ini' from backupset '/linshi/full01'"
./dmrman ctlstmt="recover database  '/dmdata/data/DAMENG/dm.ini' update db_magic"

  2.2:修改主备配置文件

  注:修改的配置文件如下;标红的传到从库需要修改

 

 

 

   修改dm.ini

1 INSTANCE_NAME = DM01 
2 PORT_NUM = 5236
3 DW_INACTIVE_INTERVAL = 60 
4 ALTER_MODE_STATUS = 0 
5 ENABLE_OFFLINE_TS = 2 
6 MAL_INI = 1
7 ARCH_INI = 1
8 RLOG_SEND_APPLY_MON = 64

  在主库/dmdata/data/DAMENG下创建文件dmmal.ini

MAL_CHECK_INTERVAL      = 5      #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL  = 5      #判定MAL链路断开的时间
 
[MAL_INST1]
  MAL_INST_NAME         = DM01                 #实例名,和dm.ini中的一致
  MAL_HOST                      = 192.168.40.139  #MAL系统监听TCP连接的IP地址
  MAL_PORT                      = 55101    #MAL系统监听TCP连接的端口
  MAL_INST_HOST                 = 192.168.40.139   #实例的对外服务IP地址
  MAL_INST_PORT                 = 5236      #实例的对外服务端口,和dm.ini中的PORT_NUM一致
  MAL_DW_PORT   = 65101         #实例对应的守护进程监听TCP连接的端口
  MAL_INST_DW_PORT = 45101
[MAL_INST2]
  MAL_INST_NAME         = DM02
  MAL_HOST                      = 192.168.40.138
  MAL_PORT                      = 55121
  MAL_INST_HOST                 = 192.168.40.138
  MAL_INST_PORT                 = 5236
  MAL_DW_PORT   = 65121
MAL_INST_DW_PORT = 45121

  在主库/dmdata/data/DAMENG下创建文件dmarch.ini

[ARCHIVE_LOCAL2]
        ARCH_TYPE            = LOCAL
        ARCH_DEST            = /dmdata/data/DAMENG/arch
        ARCH_FILE_SIZE       = 1024
        ARCH_SPACE_LIMIT     = 4096
        ARCH_FLUSH_BUF_SIZE  = 0
        ARCH_HANG_FLAG       = 1
[ARCHIVE_REALTIME1]
        ARCH_TYPE            = REALTIME
        ARCH_DEST            = DM02

  在主库/dmdata/data/DAMENG下创建文件dmwatcher.ini

[GRP1]
DW_TYPE         = GLOBAL  #全局守护类型
DW_MODE         =  AUTO    #自动切换模式
DW_ERROR_TIME = 10   #远程守护进程故障认定时间
INST_RECOVER_TIME  = 60  #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME         = 10   #本地实例故障认定时间
INST_OGUID  = 230330    #守护系统唯一OGUID值
INST_INI    = /dmdata/data/DAMENG/dm.ini        #dm.ini配置文件路径
INST_AUTO_RESTART  = 1  #打开实例的自动拉起功能
INST_STARTUP_CMD   = /dmdata/bin/dmserver

  2.3:以mount方式启动主库

 注:防止主库数据更改,主备不一致;

./dmserver /dmdata/data/DAMENG/dm.ini mount

    登录disql执行

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
sp_set_oguid(230330); 
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

  2.4:以mount的方式启动从库 

./dmserver /dmdata/data/DAMENG/dm.ini mount

    登录disql执行修改状态

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
sp_set_oguid(230330); 
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

  2.5:在主库跟从库启动守护进程

./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini

  2.6:在其中任意一台服务器或者第三台服务器上配置监视器
    dmmonitor.ini

MON_DW_CONFIRM = 1
MON_LOG_PATH = /dmdata/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 230330
MON_DW_IP = 192.168.40.139:65101
MON_DW_IP = 192.168.40.138:65121
  启动监视器
./dmmonitor /dmdata/data/DAMENG/dmmonitor.ini

关闭集群顺序

关闭监视器-->关闭备库守护进程-->关闭主库守护进程--->关闭主库---->关闭从库

  2.7:注册服务
    分别在主库和备库上以root用户登录创建服务

  

/dmdata/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p TEST

  启动守护进程

 systemctl start DmWatcherServiceTEST

  2.8:启动监视器查看主从状态信息,并进行切换操作

 

     手动切换主备

 

 

更多资讯请上达梦技术社区了解:https://eco.dameng.com

posted @ 2023-03-31 16:55  h_s  阅读(1600)  评论(0)    收藏  举报