注册
达梦读写分离集群搭建实践
专栏/培训园地/ 文章详情 /

达梦读写分离集群搭建实践

欢乐马 2024/09/23 488 1 0
摘要

本实践总结了在单机 windows 10 环境下搭建达梦数据库读写分离集群的方法。

1. 建立数据库实例

为了搭建达梦数据库读写分离集群,本次实践建立了一主两备三个数据库实例,创建方式采用达梦 DBCA 工具来进行创建,并且创建主数据库时附带创建 DMHR 示例数据库。

数据库主目录为 D:\mnt\dmdbms\data,三个数据库的数据存放在主目录下,以各自数据库名为目录名的目录下。

各数据库配置参数如下表。

数据库名 DMPRIMARY DMSTANDBY1 DMSTANDBY2
实例名 DMPRIMARYSERVER DMSTANDBY1SERVER DMSTANDBY1SERVER
PORT_NUM 31141 31142 31143
MAL_INST_DW_PORT 33141 33142 33143
MAL_PORT 34141 34142 34143
MAL_DW_PORT 32141 32142 32143

2. 主库备份备库还原恢复

2.1. 开启归档模式

首先关闭三个数据库的服务,然后在三个数据库的dm.ini配置文件搜索ARCH_INI参数,并修改成以下值。

ARCH_INI	= 1

最后分别创建三个数据库的dmarch.ini配置文件。

[ARCHIVE_LOCAL1]
    ARCH_TYPE = LOCAL
    ARCH_DEST = D:\mnt\dmdbms\data\DMPRIMARY\arch
    ARCH_FILE_SIZE = 128
    ARCH_SPACE_LIMIT = 0
[ARCHIVE_LOCAL1]
    ARCH_TYPE = LOCAL
    ARCH_DEST = D:\mnt\dmdbms\data\DMSTANDBY1\arch
    ARCH_FILE_SIZE = 128
    ARCH_SPACE_LIMIT = 0
[ARCHIVE_LOCAL1]
    ARCH_TYPE = LOCAL
    ARCH_DEST = D:\mnt\dmdbms\data\DMSTANDBY2\arch
    ARCH_FILE_SIZE = 128
    ARCH_SPACE_LIMIT = 0

2.2. 对主库进行备份

开启主数据库服务,并执行以下语句进行热备。

BACKUP DATABASE BACKUPSET 'D:\mnt\dmdbms\data\bak\BACKUP_FILE_01';

2.3. 对备库进行还原恢复

使用命令行工具dmrman将主库备份还原到备库,并进行恢复,还原恢复前需要关闭备库服务。

dmrman CTLSTMT="RESTORE DATABASE 'D:\mnt\dmdbms\data\DMSTANDBY1\dm.ini' FROM BACKUPSET 'D:\mnt\dmdbms\data\bak\BACKUP_FILE_01'"
dmrman CTLSTMT="RECOVER DATABASE 'D:\mnt\dmdbms\data\DMSTANDBY1\dm.ini' FROM BACKUPSET 'D:\mnt\dmdbms\data\bak\BACKUP_FILE_01'"
dmrman CTLSTMT="RECOVER DATABASE 'D:\mnt\dmdbms\data\DMSTANDBY1\dm.ini' UPDATE DB_MAGIC

dmrman CTLSTMT="RESTORE DATABASE 'D:\mnt\dmdbms\data\DMSTANDBY2\dm.ini' FROM BACKUPSET 'D:\mnt\dmdbms\data\bak\BACKUP_FILE_01'"
dmrman CTLSTMT="RECOVER DATABASE 'D:\mnt\dmdbms\data\DMSTANDBY2\dm.ini' FROM BACKUPSET 'D:\mnt\dmdbms\data\bak\BACKUP_FILE_01'"
dmrman CTLSTMT="RECOVER DATABASE 'D:\mnt\dmdbms\data\DMSTANDBY2\dm.ini' UPDATE DB_MAGIC

3. 配置主库 DMPRIMARY

关闭主库服务后进行配置。

3.1. 修改配置文件dm.ini文件

DW_INACTIVE_INTERVAL	= 60
ALTER_MODE_STATUS	= 0
ENABLE_OFFLINE_TS	= 2
MAL_INI			= 1
RLOG_SEND_APPLY_MON 	= 64

3.2. 创建配置dmmal.ini文件

MAL_CHECK_INTERVAL	= 5
MAL_CONN_FAIL_INTERVAL	= 5
[MAL_INST1]
    MAL_INST_NAME		= DMPRIMARYSERVER	# 和 dm.ini 中的 INSTANCE_NAME 一致
    MAL_HOST			= 127.0.0.1
    MAL_PORT			= 34141
    MAL_INST_HOST		= 127.0.0.1
    MAL_INST_PORT		= 31141			# 和 dm.ini 中的 PORT_NUM 一致
    MAL_DW_PORT			= 32141
    MAL_INST_DW_PORT		= 33141
[MAL_INST2]
    MAL_INST_NAME		= DMSTANDBY1SERVER	# 和 dm.ini 中的 INSTANCE_NAME 一致
    MAL_HOST			= 127.0.0.1
    MAL_PORT			= 34142
    MAL_INST_HOST		= 127.0.0.1
    MAL_INST_PORT		= 31142			# 和 dm.ini 中的 PORT_NUM 一致
    MAL_DW_PORT			= 32142
    MAL_INST_DW_PORT	= 33142
[MAL_INST3]
    MAL_INST_NAME		= DMSTANDBY2SERVER	# 和 dm.ini 中的 INSTANCE_NAME 一致
    MAL_HOST			= 127.0.0.1
    MAL_PORT			= 34143
    MAL_INST_HOST		= 127.0.0.1
    MAL_INST_PORT		= 31143		 	# 和 dm.ini 中的 PORT_NUM 一致
    MAL_DW_PORT			= 32143
    MAL_INST_DW_PORT		= 33143

3.3. 修改配置dmarch.ini文件

[ARCHIVE_TIMELY1]
    ARCH_TYPE = TIMELY
    ARCH_DEST = DMSTANDBY1SERVER
[ARCHIVE_TIMELY2]
    ARCH_TYPE = TIMELY
    ARCH_DEST = DMSTANDBY2SERVER
[ARCHIVE_LOCAL1]
    ARCH_TYPE = LOCAL
    ARCH_DEST = D:\mnt\dmdbms\data\DMPRIMARY\arch
    ARCH_FILE_SIZE = 128
    ARCH_SPACE_LIMIT = 0

3.4. 创建配置dmwatcher.ini文件

[GRP1]
    DW_TYPE = GLOBAL
    DW_MODE = AUTO
    DW_ERROR_TIME = 10
    INST_RECOVER_TIME = 60
    INST_ERROR_TIME = 10
    INST_OGUID = 453332
    INST_INI = D:\mnt\dmdbms\data\DMPRIMARY\dm.ini
    INST_AUTO_RESTART = 1
    INST_STARTUP_CMD = C:\dmdbms\bin\dmserver
    RLOG_SEND_THRESHOLD = 0
    RLOG_APPLY_THRESHOLD = 0

3.5. 启动主库

以 Mount 模式启动主库服务。

dmserver D:\mnt\dmdbms\data\DMPRIMARY\dm.ini mount

显示以下内容表示启动成功。

image.png

3.6. 设置 OGUID 与运行模式

启动命令行工具 DIsql,登录主库设置 OGUID 值,并将主库运行模式改为 Primary 模式。

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> SP_SET_OGUID(453332);
SQL> ALTER database primary;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

4. 搭建备库 DMSTANDBY1

4.1. 修改配置文件dm.ini文件

D:\mnt\dmdbms\data\DMSTANDBY1\dm.ini按照 2.1 进行同样的修改。

4.2. 创建配置dmmal.ini文件

D:\mnt\dmdbms\data\DMPRIMARY\dmmal.ini复制到D:\mnt\dmdbms\data\DMSTANDBY1\dmal.ini

4.3. 创建配置dmarch.ini文件

[ARCHIVE_TIMELY1]
    ARCH_TYPE = TIMELY
    ARCH_DEST = DMPRIMARYSERVER
[ARCHIVE_TIMELY2]
    ARCH_TYPE = TIMELY
    ARCH_DEST = DMSTANDBY2SERVER
[ARCHIVE_LOCAL1]
    ARCH_TYPE = LOCAL
    ARCH_DEST = D:\mnt\dmdbms\data\DMSTANDBY1\arch
    ARCH_FILE_SIZE = 128
    ARCH_SPACE_LIMIT = 0

4.4. 创建配置dmwatcher.ini文件

[GRP1]
    DW_TYPE = GLOBAL
    DW_MODE = AUTO
    DW_ERROR_TIME = 10
    INST_RECOVER_TIME = 60
    INST_ERROR_TIME = 10
    INST_OGUID = 453332
    INST_INI = D:\mnt\dmdbms\data\DMSTANDBY1\dm.ini
    INST_AUTO_RESTART = 1
    INST_STARTUP_CMD = C:\dmdbms\bin\dmserver
    RLOG_SEND_THRESHOLD = 0
    RLOG_APPLY_THRESHOLD = 0

4.5. 启动备库

以 Mount 模式启动备库服务。

dmserver D:\mnt\dmdbms\data\DMSTANDBY1\dm.ini mount

4.6. 设置 OGUID 与运行模式

启动命令行工具 DIsql,登录备库设置 OGUID 值,并将备库运行模式改为 Standby 模式。

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> SP_SET_OGUID(453332);
SQL> ALTER database standby;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

5. 搭建备库 DMSTANDBY2

5.1. 修改配置文件dm.ini文件

D:\mnt\dmdbms\data\DMSTANDBY2\dm.ini按照 2.1 进行同样的修改。

5.2. 创建配置dmmal.ini文件

D:\mnt\dmdbms\data\DMPRIMARY\dmmal.ini复制到D:\mnt\dmdbms\data\DMSTANDBY2\dmal.ini

5.3. 创建配置dmarch.ini文件

[ARCHIVE_TIMELY1]
    ARCH_TYPE = TIMELY
    ARCH_DEST = DMPRIMARYSERVER
[ARCHIVE_TIMELY2]
    ARCH_TYPE = TIMELY
    ARCH_DEST = DMSTANDBY1SERVER
[ARCHIVE_LOCAL1]
    ARCH_TYPE = LOCAL
    ARCH_DEST = D:\mnt\dmdbms\data\DMSTANDBY2\arch
    ARCH_FILE_SIZE = 128
    ARCH_SPACE_LIMIT = 0

5.4. 创建配置dmwatcher.ini文件

[GRP1]
    DW_TYPE = GLOBAL
    DW_MODE = AUTO
    DW_ERROR_TIME = 10
    INST_RECOVER_TIME = 60
    INST_ERROR_TIME = 10
    INST_OGUID = 453332
    INST_INI = D:\mnt\dmdbms\data\DMSTANDBY2\dm.ini
    INST_AUTO_RESTART = 1
    INST_STARTUP_CMD = C:\dmdbms\bin\dmserver
    RLOG_SEND_THRESHOLD = 0
    RLOG_APPLY_THRESHOLD = 0

5.5. 启动备库

以 Mount 模式启动备库服务。

dmserver D:\mnt\dmdbms\data\DMSTANDBY2\dm.ini mount

5.6. 设置 OGUID 与运行模式

参考 4.6。

6. 配置监视器

D:\mnt\dmdbms\data目录下创建dmmonitor.ini配置文件如下。

MON_DW_CONFIRM = 1
MON_LOG_PATH = D:\mnt\dmdbms\data\log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GRP1]
    MON_INST_OGUID = 453332 
    MON_DW_IP = 127.0.0.1:32141
    MON_DW_IP = 127.0.0.1:32142
    MON_DW_IP = 127.0.0.1:32143

7. 启动守护进程和监视器

使用不同的命令行窗口启动各个主备的守护进程。

dmwatcher D:\mnt\dmdbms\data\DMPRIMARY\dmwatcher.ini
dmwatcher D:\mnt\dmdbms\data\DMSTANDBY1\dmwatcher.ini
dmwatcher D:\mnt\dmdbms\data\DMSTANDBY2\dmwatcher.ini

启动监视器。

dmmonitor D:\mnt\dmdbms\data\dmmonitor.ini

监视器返回如下结果表示整个集群搭建成功。

image.png

确保各个主备数据库实例均处于 Open 状态。

8. 注意事项

当做完所有数据库的备份还原之后,应关闭所有打开的主备数据库服务。后续启动时应保证以 mount 模式打开,确保通过 dmwatcher 守护进程对数据库修改为 open 模式。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服