达梦数据库v8主备集群搭建

本文详细介绍了如何搭建达梦数据库v8的实时主备集群,包括主备库的环境配置、数据库创建、冷备份、配置文件修改、服务注册等步骤,确保在主库故障时能快速切换至备库,保障数据库高可用性和数据安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

达梦数据库主备集群(数据守护)搭建

概述

DM 数据守护(Data Watch)提供数据库的高可用性和读写分离机制:主库(生产库)产生的 Redo日志传输到备库,备库接收并重新应用Redo日志,从而实现备库与主库的数据同步。DM数据守护的功能是监控数据库状态,获取主、备库数据同步情况,切换主备库为 Redo 日志传输与重演过程中出现的各种异常情况提供解决方案。

 实时主备

实时主备由一个主库以及一个或者多个配置了实时(Realtime)归档的备库组成,其主要目的是保障数据库可用性,提高数据安全性。实时主备系统中,主库提供完整的数据库功能,备库提供只读服务。主库修改数据产生的Redo日志,通过实时归档机制,在写入联机Redo日志文件之前发送到备库,实时备库通过重演Redo日志与主库保持数据同步。当主库出现故障时,备库在将所有Redo日志重演结束后,就可以切换为主库对外提供数据库服务

环境搭建步骤:

 

主库: 139.59.177.10

备库: 139.59.177.12

监控器: 139.59.177.14

 

数据库名 实例名 PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT

DMDW GRP1_RT_01 5246 45101 139.59.177.10 55101 65101

DMDW GRP1_RT_03 5246 45121 139.59.177.12 55121 65121

 

 

1. 主备库安装CentOS 7.6以及DM8软件

2. 主库: 使用dbca.sh创建数据库(db_name:DMDW, instance_name: GRP1_RT_01, port: 5246)

3. 启动主库

4. 确认主库可以访问: disql sysdba/dameng123:5246

5. 关闭实例准备冷备份:

DmServiceGRP1_RT_01 stop

创建 /dm8/backup 目录

dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DMDW/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/'"

6. scp -r BACKUP_FILE_01 dmdba@/dm8/backup

7. 修改主库$DM_HOME/data/DMDW/dm.ini

INSTANCE_NAME = GRP1_RT_01

PORT_NUM = 5246

DW_INACTIVE_INTERVAL = 60

ALTER_MODE_STATUS = 0

ENABLE_OFFLINE_TS = 2

MAL_INI = 1

ARCH_INI = 1

RLOG_SEND_APPLY_MON = 64

8. 添加$DM_HOME/data/DMDW/dmmal.ini

MAL_CHECK_INTERVAL = 5

MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]

MAL_INST_NAME = GRP1_RT_01

MAL_HOST = 139.59.177.10

MAL_PORT = 55101

MAL_INST_HOST = 139.59.177.10

MAL_INST_PORT = 5246

MAL_DW_PORT = 65101

MAL_INST_DW_PORT = 45101

[MAL_INST2]

MAL_INST_NAME = GRP1_RT_02

MAL_HOST = 139.59.177.12

MAL_PORT = 55121

MAL_INST_HOST = 139.59.177.12

MAL_INST_PORT = 5246

MAL_DW_PORT = 65121

MAL_INST_DW_PORT = 45121

9. 添加$DM_HOME/data/DMDW/dmarch.ini - mkdir -p /dm8/arch

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME

ARCH_DEST = GRP1_RT_02    --此值为备库的实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dm8/arch

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

 

10. 添加$DM_HOME/data/DMDW/dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL

DW_MODE = AUTO

DW_ERROR_TIME = 10

INST_RECOVER_TIME = 60

INST_ERROR_TIME = 10

INST_OGUID = 453331

INST_INI = /dm8/data/DMDW/dm.ini

INST_AUTO_RESTART = 1

INST_STARTUP_CMD = /dm8/bin/dmserver

RLOG_SEND_THRESHOLD = 0

RLOG_APPLY_THRESHOLD = 0

 

11. 启动主库:

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

 

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>sp_set_oguid(453331); --主备的数据库uid必须保持一致

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

SQL>alter database primary;

 

12. 11. 生产库可以注册主库的数据库和watcher服务,登录root

cd /dm8/script/root

./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DMDW/dm.ini -p GRP1_RT_01

./dm_service_installer.sh -t dmwatcher -p DMWATCHER -watcher_ini /dm8/data/DMDW/dmwatcher.ini -m mount -p GRP1_RT_01

 

备库:

1. 安装DM8数据库软件&初始化实例:

dminit path=/dm8/data db_name=DMDW instance_name=GRP1_RT_02 port_num=5246

2. 启动DMAP service

DmAPService start - 注意如果在restore时报不能与dmap服务通信, 需要重启此服务。

3. dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DMDW/dm.ini' FROM BACKUPSET '/dm8/backup'"

4. dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DMDW/dm.ini' FROM BACKUPSET '/dm8/backup'"

5. dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DMDW/dm.ini' UPDATE DB_MAGIC"

6. 修改备库$DM_HOME/data/DMDW/dm.ini

INSTANCE_NAME = GRP1_RT_02

PORT_NUM = 5246

DW_INACTIVE_INTERVAL = 60

ALTER_MODE_STATUS = 0

ENABLE_OFFLINE_TS = 2

MAL_INI = 1

ARCH_INI = 1

RLOG_SEND_APPLY_MON = 64

7. 添加$DM_HOME/data/DMDW/dmmal.ini

MAL_CHECK_INTERVAL = 5

MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]

MAL_INST_NAME = GRP1_RT_01

MAL_HOST = 139.59.177.10

MAL_PORT = 55101

MAL_INST_HOST = 139.59.177.10

MAL_INST_PORT = 5246

MAL_DW_PORT = 65101

MAL_INST_DW_PORT = 45101

[MAL_INST2]

MAL_INST_NAME = GRP1_RT_02

MAL_HOST = 139.59.177.12

MAL_PORT = 55121

MAL_INST_HOST = 139.59.177.12

MAL_INST_PORT = 5246

MAL_DW_PORT = 65121

MAL_INST_DW_PORT = 45121

8. 添加$DM_HOME/data/DMDW/dmarch.ini - mkdir -p /dm8/arch

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME

ARCH_DEST = GRP1_RT_01 --此值为主库的实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dm8/arch

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

9.添加$DM_HOME/data/DMDW/dmwatcher.ini

DW_TYPE = GLOBAL

DW_MODE = AUTO

DW_ERROR_TIME = 10

INST_RECOVER_TIME = 60

INST_ERROR_TIME = 10

INST_OGUID = 453331

INST_INI = /dm8/data/DMDW/dm.ini

INST_AUTO_RESTART = 1

INST_STARTUP_CMD = /dm8/bin/dmserver

RLOG_APPLY_THRESHOLD = 0

 

10. 以 Mount 方式启动备库

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

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>sp_set_oguid(453331); --与主库的DBUID一致

SQL>alter database standby;

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

 

11. 生产库可以注册备库的数据库和watcher服务,登录root

cd /dm8/script

./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DMDW/dm.ini -m mount -p GRP1_RT_02

./dm_service_installer.sh -t dmwatcher -p DMWATCHER -watcher_ini /dm8/data/DMDW/dmwatcher.ini -m mount -p GRP1_RT_02

 

启动守护进程

1. 主库: ./dmwatcher /dm8/data/DMDW/dmwatcher.ini

2. 备库:./dmwatcher /dm8/data/DMDW/dmwatcher.ini

如果在OS中已经注册守护进程,可以通过systemctl启动。

主库:systemctl start DmWatcherServiceGRP1_RT_01

备库:systemctl start DmWatcherServiceGRP1_RT_02

监视器:

1. 监视器可以运行在独立的服务器,也可以在主库或者备库服务器上运行。 此测试在备库上启动监视器进程。

$DM_HOME/data/DMDW/dmmonitor.ini

MON_DW_CONFIRM = 1

MON_LOG_PATH = /dm8/data/log

MON_LOG_INTERVAL = 60

MON_LOG_FILE_SIZE = 32

MON_LOG_SPACE_LIMIT = 0

[GRP1]

MON_INST_OGUID = 453331

MON_DW_IP = 139.59.177.10:65101

MON_DW_IP = 139.59.177.12:65121

2. 启动监视器:

./dmmonitor $DM_HOME/data/DMDW/dmmonitor.ini

 

此命令窗口为前置, 可以在此输入命令如show查看主库状态。 help查看所有帮助

 

3. 生产库一般需要注册此服务,登录root

cd /dm8/script/root

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

systemctl start DmMonitorServiceDMMONITOR

 

测试主备数据同步

1. 在主库中执行以下操作, 创建一个用户john,授权后创建表,然后插入测试数据, 查看此操作是否自动复制到备库。

[dmdba@dm01 ~]$ disql sysdba/dameng123:5246

 

SQL> create user john identified by dameng123;

executed successfully

used time: 46.563(ms). Execute id is 500.

SQL> grant create table to john;

executed successfully

used time: 3.412(ms). Execute id is 501.

SQL> connect john/dameng123:5246

Server[LOCALHOST:5246]:mode is primary, state is open

login used time : 6.001(ms)

SQL> select user();

 

LINEID USER()

---------- ------

1 JOHN

 

used time: 2.515(ms). Execute id is 600.

SQL> select sysdate;

 

LINEID SYSDATE

---------- -------------------

1 2021-05-05 10:08:13

 

used time: 0.498(ms). Execute id is 601.

SQL> create table t (id int primary key, name varchar(10));

executed successfully

used time: 5.786(ms). Execute id is 602.

SQL> insert into t values (10,'test');

affect rows 1

 

used time: 0.930(ms). Execute id is 603.

SQL> insert into t values (20,'test');

affect rows 1

 

used time: 0.355(ms). Execute id is 604.

SQL> commit;

executed successfully

used time: 2.211(ms). Execute id is 605.

 

2. 登录备库, 确认用户john和表的数据已经成功被复制。

[dmdba@dm02 ~]$ disql sysdba/dameng123:5246

 

Server[LOCALHOST:5246]:mode is standby, state is open

login used time : 8.167(ms)

disql V8

SQL> select * from john.t;

 

LINEID ID NAME

---------- ----------- ----

1 10 test

2 20 test

 

used time: 36.336(ms). Execute id is 0.

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值