达梦:单主模式转换为主备模式

达梦数据库单主转主备配置笔记

达梦官方文档 数据守护系统构建

在这里插入图片描述

前期准备

安装前准备工作

在这里插入图片描述

服务器环境

  • 准备至少两台服务器,一台作为主库服务器,另一台作为备库服务器。确保服务器硬件配置满足达梦数据库运行要求,例如有足够的 CPU、内存和磁盘 I/O 性能。

  • 保证服务器之间网络连通且稳定,网络延迟应在可接受范围内。开放防火墙所需端口,如 5236(数据库监听)、5266(MAL 通信)、5216(守护进程通信)等。可使用 pingtelnet 命令进行网络连通性测试。

ping <目标服务器 IP>
telnet <目标服务器 IP> <端口号>

数据库安装

  • 在所有服务器上安装相同版本的达梦数据库,记录好安装目录,如 /dm8。安装过程中可参考官方文档的安装指南,确保安装步骤正确。

在这里插入图片描述

磁盘空间

  • 为每台服务器规划充足的磁盘空间,用于存储数据库文件、备份文件和日志文件。不同类型的文件建议存放在不同的磁盘分区,以提高 I/O 性能和数据安全性。例如,数据文件存放在数据盘,日志文件存放在日志盘,备份文件存放在备份盘。

流程

在这里插入图片描述

流程图说明

基于脱机备份方式的单实例转主备流程图

开始
检查环境准备
初始化主库
正常启动主库并正常退出
关闭主库
执行脱机备份
拷贝备份文件到备库机器
在备库机器上初始化备库
执行脱机还原
更新备库DB_MAGIC
配置主库dm.ini
配置主库dmmal.ini
配置主库dmarch.ini
配置主库dmwatcher.ini
以Mount方式启动主库
设置主库OGUID
修改主库数据库模式为Primary
配置备库dm.ini
配置备库dmmal.ini
配置备库dmarch.ini
配置备库dmwatcher.ini
以Mount方式启动备库
设置备库OGUID
修改备库数据库模式为Standby
配置监视器dmmonitor.ini
启动主库守护进程
启动备库守护进程
启动监视器
完成主备配置

详细步骤说明

  1. 开始:检查环境准备

    • 确保所有实例使用的DM服务器版本一致。
    • 确保各实例所在主机的操作系统位数、大小端模式、时区及时间设置一致。
    • 确保使用同一个用户启动DM服务器和守护进程dmwatcher。
      2. 初始化主库:在主库机器上初始化数据库。
      3. 正常启动主库并正常退出:首次启动主库时,需要先正常启动并正常退出,然后才允许以Mount方式启动。
  2. 关闭主库:关闭主库,确保主库处于关闭状态,以便进行脱机备份。
    在这里插入图片描述
    在这里插入图片描述

  3. 执行脱机备份:使用脱机备份命令对主库进行备份,生成备份文件。 备份到/opt/dmdbms/bak/master_bak1目录
    在这里插入图片描述

    在这里插入图片描述

  4. 在备库机器上初始化备库:在备库机器上初始化数据库。
    在这里插入图片描述

  5. 在备库机器上关闭备库:在备库机器上关闭数据库。
    在这里插入图片描述

  6. 拷贝备份文件到备库机器:将备份文件从主库机器拷贝到备库机器的指定目录。 拷贝到POD的/opt/dmdbms/bak/master_bak1/目录

    在这里插入图片描述

  7. 执行脱机还原:使用脱机还原命令将备份文件还原到备库。

  8. 更新备库DB_MAGIC:执行数据库更新操作,更新备库的DB_MAGIC。

    在这里插入图片描述

  9. 配置主库相关文件:配置主库的dm.ini、dmmal.ini、dmarch.ini和dmwatcher.ini。
    在这里插入图片描述

  10. 以Mount方式启动主库:以Mount方式启动主库。
    在这里插入图片描述

  11. 设置主库OGUID:使用命令行工具DIsql设置主库的OGUID值。
    守护系统唯一 OGUID 值

  12. 修改主库数据库模式为Primary:修改主库的数据库模式为Primary。
    在这里插入图片描述

  13. 配置备库相关文件:配置备库的dm.ini、dmmal.ini、dmarch.ini和dmwatcher.ini。
    在这里插入图片描述

  14. 以Mount方式启动备库:以Mount方式启动备库。
    在这里插入图片描述

  15. 设置备库OGUID:使用命令行工具DIsql设置备库的OGUID值。
    在这里插入图片描述

  16. 修改备库数据库模式为Standby:修改备库的数据库模式为Standby。
    在这里插入图片描述

  17. 配置监视器:配置监视器的dmmonitor.ini。

  18. 启动主库守护进程:启动主库的守护进程。
    在这里插入图片描述

  19. 启动备库守护进程:启动备库的守护进程。
    在这里插入图片描述

  20. 启动监视器:启动监视器。

  21. 完成主备配置:在监视器上执行show命令,检查所有实例和守护进程的状态是否正常。

  22. 结束

以上流程图和详细步骤涵盖了从单实例数据库到主备数据库的完整搭建过程,重点突出了脱机备份的步骤。

详细步骤

1. 检查主库归档模式

在进行模式转换前,需确保主库已开启归档模式,这样才能将事务日志同步到备库,保证数据一致性。

# 登录主库服务器
# 使用 disql 工具登录主库
disql SYSDBA/密码

# 在 disql 中查询归档模式
SELECT arch_mode FROM v$database;

在这里插入图片描述

若结果为 Y,表示已开启归档模式;若为 N,则按如下步骤开启:

-- 关闭数据库
SHUTDOWN IMMEDIATE;
-- 以 mount 方式启动数据库
STARTUP MOUNT;
-- 开启归档模式
ALTER DATABASE ARCHIVELOG;
-- 打开数据库
ALTER DATABASE OPEN;

可参考 达梦数据库归档 获取更多归档相关知识。

2. 配置主库配置文件

在这里插入图片描述

修改主库的相关配置文件,使主库能与备库进行通信并同步数据。

dm.ini 文件

ps -ef |grep ini

通常位于数据库安装目录下的 data/实例名 目录,进行如下修改:

INSTANCE_NAME = 主库实例名
PORT_NUM = 5236  # 数据库监听端口
DW_INACTIVE_INTERVAL = 60  # 守护进程检测间隔
ALTER_MODE_STATUS = 0  # 不允许在非 mount 状态下修改模式
ENABLE_OFFLINE_TS = 2  # 不允许离线表空间
MAL_INI = 1  # 开启 MAL 系统
ARCH_INI = 1  # 开启归档

修改完成后,可使用 cat 命令检查配置文件内容是否正确。

cat /dm8/data/实例名/dm.ini
dmmal.ini 文件

在数据库安装目录下创建该文件,配置如下:

[MAL_INST1]
MAL_INST_NAME = 主库实例名
MAL_HOST = 主库 IP 地址
MAL_PORT = 5266
MAL_INST_HOST = 主库 IP 地址
MAL_INST_PORT = 5236
MAL_DW_PORT = 5216

[MAL_INST2]
MAL_INST_NAME = 备库实例名
MAL_HOST = 备库 IP 地址
MAL_PORT = 5266
MAL_INST_HOST = 备库 IP 地址
MAL_INST_PORT = 5236
MAL_DW_PORT = 5216

注意确保 MAL_HOSTMAL_INST_HOST 填写正确的 IP 地址。

dmarch.ini 文件

同样在数据库安装目录下创建,配置如下:

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = 备库实例名

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch  # 本地归档路径
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0

确保 ARCH_DEST 路径存在且有足够的磁盘空间。

3. 备份主库数据库

使用 dmrman 工具对主库数据进行全量备份,以便将其恢复到备库。

# 登录主库服务器
# 启动 dmrman 工具
./dmrman

# 在 dmrman 中执行全量备份命令
BACKUP DATABASE FULL TO 备份名 BACKUPSET '备份路径';
# 示例
BACKUP DATABASE FULL TO my_backup BACKUPSET '/dm8/backup/my_backup';

备份过程中可监控备份进度和磁盘空间使用情况。

检查备份集可用性

实操

runuser -l dmdba -c cd /opt/dmdbms/bin && ./dmrman CTLSTMT="BACKUP DATABASE '/opt/dmdbms/dmdata/DAMENG/dm.ini' FULL TO master_bak1 BACKUPSET '/opt/dmdbms/bak/master_bak1'

在这里插入图片描述

在这里插入图片描述

4. 备库配置

新建备库数据库

可使用达梦数据库的初始化工具 dminit 来创建备库数据库。

# 登录备库服务器
# 执行初始化命令
./dminit PATH=/dm8/data DB_NAME=备库数据库名 INSTANCE_NAME=备库实例名 PORT_NUM=5236

根据实际情况调整 PATHDB_NAMEINSTANCE_NAME 等参数。

配置备库配置文件

修改备库的相关配置文件,使其与主库配置相匹配。

dm.ini 文件

修改内容与主库类似,但实例名使用备库的。

INSTANCE_NAME = 备库实例名
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
复制主库的 dmmal.ini 和 dmarch.ini 文件

将主库的 dmmal.inidmarch.ini 文件复制到备库的相同目录下。

scp 主库服务器:/dm8/dmmal.ini /dm8/
scp 主库服务器:/dm8/dmarch.ini /dm8/

实操

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 恢复备库数据

将主库的备份文件复制到备库服务器,然后使用 dmrman 工具进行数据恢复。

# 登录备库服务器
# 复制备份文件
scp 主库服务器:备份路径/* /dm8/backup/


# 启动 dmrman 工具
./dmrman

# 在 dmrman 中执行全量恢复命令
RESTORE DATABASE '/dm8/data/备库实例名/dm.ini' FROM BACKUPSET '备份路径';
# 示例
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/my_backup';

# 执行恢复归档日志命令
RECOVER DATABASE '/dm8/data/备库实例名/dm.ini' WITH ARCHIVED LOG;

# 执行更新数据库魔数命令
RECOVER DATABASE '/dm8/data/备库实例名/dm.ini' UPDATE DB_MAGIC;

恢复过程中可能会耗时较长,需耐心等待。

实操

/bin/sh /opt/dmdbms/bin/DmAPService start
runuser -l dmdba -c cd /opt/dmdbms/bin && ./dmrman CTLSTMT="RESTORE DATABASE '/opt/dmdbms/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/bak/master_bak1/'

runuser -l dmdba -c cd /opt/dmdbms/bin && ./dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/bak/master_bak1/'

runuser -l dmdba -c cd /opt/dmdbms/bin && ./dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"

在这里插入图片描述
》扩展:emptyDir 说明

kubernetes.io~empty - dir 表示这是一个 emptyDir 类型的卷

https://kubernetes.io/docs/concepts/storage/volumes/#emptydir

在这里插入图片描述
volumes 目录用于存储 Pod 使用的各种卷的数据
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6. 配置主备模式

主库

启动主库实例并将其切换到 open 状态。

# 启动主库实例
./dmserver /dm8/data/主库实例名/dm.ini mount
# 示例
./dmserver /dm8/data/DAMENG/dm.ini mount

# 使用 disql 登录主库
disql SYSDBA/密码

# 在 disql 中执行以下命令将主库切换到 open 状态
ALTER DATABASE OPEN;

在这里插入图片描述

备库

启动备库实例并将其切换到 standby 状态。

# 启动备库实例
./dmserver /dm8/data/备库实例名/dm.ini mount
# 示例
./dmserver /dm8/data/DAMENG/dm.ini mount

# 使用 disql 登录备库
disql SYSDBA/密码

# 在 disql 中执行以下命令将备库切换到 standby 状态
ALTER DATABASE STANDBY;

在这里插入图片描述

7. 配置监视器

监视器用于监控主备库的状态,确保主备模式正常运行。

创建监视器配置文件 dmmonitor.ini

内容如下:

MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/log  # 监视器日志路径
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GRP1]
MON_INST_OWNER = GRP1
MON_INST_NAME = 主库实例名
MON_DW_IP = 主库 IP 地址:5216

[GRP1]
MON_INST_OWNER = GRP1
MON_INST_NAME = 备库实例名
MON_DW_IP = 备库 IP 地址:5216
启动监视器
./dmmonitor /dm8/dmmonitor.ini

验证主备同步

# 登录主库
disql SYSDBA/密码

# 在主库上创建一个测试表并插入数据
CREATE TABLE test_table (id INT, name VARCHAR(50));
INSERT INTO test_table VALUES (1, 'test');
COMMIT;

# 登录备库
disql SYSDBA/密码

# 在备库上查询测试表
SELECT * FROM test_table;

若能在备库上查询到主库插入的数据,表明主备同步配置成功。

注意事项

  • 操作前务必备份好所有相关数据,防止数据丢失。可定期进行全量备份和增量备份。
  • 确保主备库之间网络连通,防火墙允许相应端口通信。定期检查网络状态和防火墙配置。
  • 仔细检查配置文件参数,避免因参数错误导致配置失败。配置修改后,可使用工具进行语法检查。
  • 监控数据库运行状态和性能指标,如 CPU 使用率、内存使用率、磁盘 I/O 等,及时发现并处理异常情况。
### 达梦数据库与Oracle功能、性能对比 #### 数据迁移与导入优化 在数据迁移方面,当需要将达梦数据库中的数据迁移到Oracle时,通常采用导出`.dmp`文件并通过达梦数据库的迁移工具完成操作。然而,由于Oracle并未针对达梦提供兼容适配支持,在实际应用中可能会遇到失败的情况[^1]。 #### 安装复杂度 从安装过程来看,Oracle的安装相对较为复杂,涉及较多参数配置,若配置不当可能导致安装失败;而达梦数据库的安装流程更为简化,只需按照提示逐步执行即可完成部署[^2]。 #### 日志管理机制 关于日志文件管理方式的不同,Oracle的日志文件如alert.log和trace文件大多位于 `$ORACLE_BASE` 下方目录结构之中。相比之下,达梦数据库不仅命名规则有所差异,其告警文件的位置也不同于Oracle的标准路径设置[^3]。 #### 系统状态转换灵活性 就系统运行状态下而言,达梦数据库 shutdown, mount, open 及 suspend 四种基本工作模式,并允许由 open 转换至 mount 的特殊切换能力,这是 Oracle 所不具的一项特性。另外两者间还存在着诸如创建数据文件大小单位定义等方面的具体差别[^4]。 #### 库同步策略影响下的性能表现 对于库之间的同步处理方案来说,在事务一致性的前提条件下,为了保障节点间的事务一致性,则需等待用服务器完成Redo日志重放之后才能回应客户端提交请求,这无疑增加了每次事务确认所需耗时从而带来一定范围内的效能损耗现象发生; 若追求更高效率可考虑采取高性能模式来实现吞吐量最大化目标尽管如此却不得不接受一定程度上的事务完整性质疑风险存在其中因此建议依据具体应用场景需求权衡利弊做出合理抉择[^5]. ```sql -- 示例SQL语句展示两种数据库环境下可能存在的语法差异 SELECT * FROM users WHERE created_at >= SYSDATE - INTERVAL '7' DAY; /* 上述为标准PL/SQL写法适用于Oracle环境 */ SELECT * FROM users WHERE created_at >= CURRENT_DATE - INTERVAL '7 day'; /* 修改后的版本适应于DM8及以上版本的达梦数据库 */ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值