当前位置: 首页 > article >正文

达梦数据库从单主模式转换为主备模式

目录标题

  • 达梦数据库单主转主备配置笔记
    • 前期准备
      • 服务器环境
      • 数据库安装
      • 磁盘空间
  • 流程
      • 流程图说明
      • 基于脱机备份方式的单实例转主备流程图
      • 详细步骤说明
    • 详细步骤
      • 1. 检查主库归档模式
      • 2. 配置主库配置文件
        • dm.ini 文件
        • dmmal.ini 文件
        • dmarch.ini 文件
      • 3. 备份主库数据库
      • 4. 备库配置
        • 新建备库数据库
        • 配置备库配置文件
          • dm.ini 文件
          • 复制主库的 dmmal.ini 和 dmarch.ini 文件
      • 5. 恢复备库数据
      • 6. 配置主备模式
        • 主库
        • 备库
      • 7. 配置监视器
        • 创建监视器配置文件 dmmonitor.ini
        • 启动监视器
    • 验证主备同步
    • 注意事项

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

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

在这里插入图片描述

前期准备

安装前准备工作

在这里插入图片描述

服务器环境

  • 准备至少两台服务器,一台作为主库服务器,另一台作为备库服务器。确保服务器硬件配置满足达梦数据库运行要求,例如有足够的 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 等,及时发现并处理异常情况。

http://www.kler.cn/a/535212.html

相关文章:

  • 语言月赛 202311【基因】题解(AC)
  • “AI隐患识别系统,安全多了道“智能护盾”
  • 硬件电路基础
  • [leetcode]双指针算法的使用
  • 2025年最新python就业方向、就业前景等
  • 《深度洞察ICA:人工智能信号处理降维的独特利器》
  • (苍穹外卖)项目结构
  • 深度学习|表示学习|卷积神经网络|DeconvNet是什么?|18
  • Android studio 编译速度增加
  • 微服务中服务治理都包含什么
  • 【回溯+剪枝】单词搜索,你能用递归解决吗?
  • [原创](Modern C++)现代C++的关键性概念: 文件编码细节之一:BOM(Byte Order Mark, 字节顺序标记)
  • 分库分表详解
  • 02.06 网络编程_概述
  • 补小识JVM中的分代收集理论
  • 离线安装Appium Server
  • 结合R语言、ArcGIS Pro、ChatGPT+生态学模型(PLUS模型、InVEST模型)的生态系统服务的多情景模拟预测及其应用
  • K8S组件架构
  • Eureka 高频考点
  • 网络工程师 (22)网络协议
  • C# foreach循环:性能提升
  • JAVA异步的UDP 通讯-服务端
  • WGCLOUD监控系统部署教程
  • WPS计算机二级•幻灯片的输出、打印与分享
  • 本地部署DeepSeek(Mac版本,带图形化操作界面)
  • MyBatis.XML文件之insert新增获取数据库自动生成的主键并映射到指定字段