ITPub博客

首页 > 数据库 > 国内数据库 > 达梦数据库单实例转实时同步集群

达梦数据库单实例转实时同步集群

原创 国内数据库 作者:Curry_0316 时间:2022-05-06 13:23:50 0 删除 编辑

环境说明:

主库地址:192.168.0.224 数据库名DAMENG,数据库服务名DM1 服务端口=5236

备库地址:192.168.0.226 数据库名DAMENG,数据库服务名DM2 服务端口=5236


主库已使用,目前是normal状态



1、初始化备库

# 安装软件步骤省略

cd $DM_HOME/bin

./dminit path=/dm8/data DB_NAME=DAMENG INSTANCE_NAME=DM2


# 初始化完的数据库实例需要进行一次正常的启动后才算真正的完成初始化,否则无法直接进入mount模式,exit退出关闭数据库

./dmserver /dm8/data/DAMENG/dm.ini



2、配置主备库文件,配置文件路径都在/dm8/data/DAMENG/下

2.1、配置主备库 dm.ini

cd /dm8/data/DAMENG

vi dm.ini

# 修改下面参数


ALTER_MODE_STATUS = 0             #不允许手工方式修改实例模式/状态/OGUID,默认为1

ENABLE_OFFLINE_TS = 2             #不允许备库 OFFLINE 表空间,默认为1

MAL_INI = 1                       #打开 MAL 系统,默认为0

ARCH_INI = 1                      #打开归档配置



2.2、配置 dmmal.ini(主备一致)

# 配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:


cd /dm8/data/DAMENG

cat << EOF >> /dm8/data/DAMENG/dmmal.ini

MAL_CHECK_INTERVAL = 5                  #MAL 链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5              #判定 MAL 链路断开的时间


[MAL_INST1]

 MAL_INST_NAME = DM1                    #实例名,和 dm.ini 中的 INSTANCE_NAME 一致

 MAL_HOST = 192.168.0.224               #MAL 系统监听 TCP 连接的 IP 地址

 MAL_PORT = 61141                       #MAL 系统监听 TCP 连接的端口

MAL_INST_HOST = 192.168.0.224           #实例的对外服务 IP 地址

 MAL_INST_PORT = 5236                   #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致

 MAL_DW_PORT = 52141                    #实例本地的守护进程监听 TCP 连接的端口

MAL_INST_DW_PORT = 33141                #实例监听守护进程 TCP 连接的端口


[MAL_INST2]

 MAL_INST_NAME = DM2

MAL_HOST = 172.20.90.236

 MAL_PORT = 61142

 MAL_INST_HOST = 172.20.90.236

 MAL_INST_PORT = 5236

 MAL_DW_PORT = 52142

MAL_INST_DW_PORT = 33142

EOF


cat dmmal.ini



2.3、配置 dmarch.ini

# 修改 dmarch.ini,配置本地归档和实时归档。

# 除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。


2.3.1 主库

cat << EOF >> /dm8/data/DAMENG/dmarch.ini

[ARCHIVE_REALTIME] 

ARCH_TYPE = REALTIME                      #实时归档类型

ARCH_DEST = DM2                           #实时归档目标实例名


[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL                         #本地归档类型

ARCH_DEST = /dm8/arch                     #本地归档文件存放路径

ARCH_FILE_SIZE = 1024                     #单位 Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0                      #单位 Mb,0 表示无限制,范围 1024~2147483647M

EOF


cat dmarch.ini


2.3.2 备库

cat << EOF >> /dm8/data/DAMENG/dmarch.ini

[ARCHIVE_REALTIME] 

ARCH_TYPE = REALTIME                      #实时归档类型

ARCH_DEST = DM1                           #实时归档目标实例名


[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL                         #本地归档类型

ARCH_DEST = /dm8/arch                     #本地归档文件存放路径

ARCH_FILE_SIZE = 1024                     #单位 Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0                      #单位 Mb,0 表示无限制,范围 1024~2147483647M

EOF


cat dmarch.ini



2.4、配置 dmwatcher.ini(主备一致)

# 修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。

cat << EOF >> /dm8/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 = 20220421                          #守护系统唯一 OGUID 值

INST_INI = /dm8/data/DAMENG/dm.ini             #dm.ini 配置文件路径

INST_AUTO_RESTART = 1                          #打开实例的自动启动功能

INST_STARTUP_CMD = /dm8/bin/dmserver           #命令行方式启动

RLOG_SEND_THRESHOLD = 0                        #指定主库发送日志到备库的时间阈值,默认关闭

RLOG_APPLY_THRESHOLD = 0                       #指定备库重演日志的时间阈值,默认关闭

EOF


cat dmwatcher.ini



3、启动主备库,设置参数

5.1 主库

5.1.1 启动主库到mount模式

cd $DM_HOME/bin

./DmServiceDM1 stop

./dmserver /dm8/data/DAMENG/dm.ini

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


5.1.2 设置主库OGUID及修改数据库模式

-- 另外开启窗口,启动命令行工具 DIsql,登录主库设置 OGUID 值

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

sp_set_oguid(20220421);

--OGUID 的查询方式:

SELECT OGUID FROM V$INSTANCE;

ALTER DATABASE PRIMARY;

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);


5.1.3 在5.1.1的界面关闭主备数据库



4、主库进行脱机备份(之前的备份没有用,需要修改为primary状态后的备份)

#mkdir -p /dm8/arch

mkdir -p /dm8/dm_bak


cd $DM_HOME/bin

./dmrman

BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL BACKUPSET '/dm8/dm_bak';



5、登录备库,拷贝备份文件

mkdir -p /dm8/arch

mkdir -p /dm8/dm_bak

scp -r 192.168.0.224:/dm8/dm_bak/* /dm8/dm_bak



6、执行脱机数据库还原与恢复

cd $DM_HOME/bin

./dmrman

RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dm_bak';

RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dm_bak';

RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC;



7、备库修改数据库模式

7.1、启动主备库到mount模式

cd $DM_HOME/bin

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


7.2、设置备库OGUID及修改数据库模式

-- 另外开启窗口,启动命令行工具 DIsql,登录主库设置 OGUID 值

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

sp_set_oguid(20220421);

--OGUID 的查询方式:

SELECT OGUID FROM V$INSTANCE;

ALTER DATABASE STANDBY;

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);


OGUID:数据守护唯一标识码,配置数据守护时,需要由用户指定 OGUID 值。其中数据库的OGUID 在 MOUNT 状态下由系统函数 SP_SET_OGUID 设置,守护进程和监视器的 OGUID 值在配置文件中设定。

同一守护进程组中的所有数据库、守护进程和监视器,都必须配置相同的 OGUID 值,取值范围为 0~2147483647。



8、配置dmmonitor.ini监视器

# 测试环境在备机上配置监视器 !!!

# MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致

cd /dm8/data/DAMENG

cat << EOF >> /dm8/data/DAMENG/dmmonitor.ini

MON_DW_CONFIRM = 1                     #确认监视器模式

MON_LOG_PATH = /dm8/data/dmmonitorlog  #监视器日志文件存放路径

MON_LOG_INTERVAL = 60                  #每隔 60s 定时记录系统信息到日志文件

MON_LOG_FILE_SIZE = 32                 #每个日志文件最大 32M

MON_LOG_SPACE_LIMIT = 0                #不限定日志文件总占用空间

[GRP1]

MON_INST_OGUID = 20220421              #组 GRP1 的唯一 OGUID 值 #以下配置为监视器到组 GRP1 的守护进程的连接信息,以 "IP:PORT" 的形式配置,IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT

MON_DW_IP = 192.168.0.224:52141

MON_DW_IP = 172.20.90.236:52142

EOF


cat /dm8/data/DAMENG/dmmonitor.ini



9、启动主备库上的守护进程

cd $DM_HOME/bin

./dmwatcher /dm8/data/DAMENG/dmwatcher.ini



10、备机上启动监视器(注意查看此时数据库的状态是否open)

cd $DM_HOME/bin

./dmmonitor /dm8/data/DAMENG/dmmonitor.ini



11、用root用户创建服务

# 分别在主备库上注册服务

# 主库

su -

cd /dm8/script/root

# 主库数据库服务之前已经存在,忽略

#./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DM1

./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini -p DM1


# 备库

su -

cd /dm8/script/root

#./dm_service_installer.sh -t dmserver -m mount -dm_ini /dm8/data/DAMENG/dm.ini -p DM2

./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DM2

./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini -p DM2


# 备库注册监视器服务

./dm_service_installer.sh -t dmmonitor -p DMMONITOR -monitor_ini /dm8/data/DAMENG/dmmonitor.ini



12、注册服务后各种符合后台重启方式

# 主库数据库服务

cd $DM_HOME/bin

./DmServiceDM1 start/stop/restart


# 备库数据库服务

cd $DM_HOME/bin

./DmServiceDM2 start/stop/restart


# 主库守护进程

cd $DM_HOME/bin

./DmWatcherServiceDM1 start/stop/restart


# 备库守护进程

cd $DM_HOME/bin

./DmWatcherServiceDM2 start/stop/restart


# 监视器

cd $DM_HOME/bin

./DmMonitorServiceDMMONITOR start/stop/restart



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29953799/viewspace-2892472/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-10-11

  • 博文量
    89
  • 访问量
    280146