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

目录标题

  • 达梦数据库单主转主备配置笔记
    • 前期准备
      • 服务器环境
      • 数据库安装
      • 磁盘空间
  • 流程
      • 流程图说明
      • 基于脱机备份方式的单实例转主备流程图
      • 详细步骤说明
    • 详细步骤
      • 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 等,及时发现并处理异常情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/965523.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计hadoop+spark+hive民宿推荐系统 酒店推荐系统 民宿价格预测 酒店价预测 机器学习 深度学习 Python爬虫 HDFS集群

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

接口对象封装思想及实现-笔记

目录 接口对象封装代码分层思想 封装案例封装Tpshop商城登录Tpshop商城登录参数化 接口自动化测试框架 接口对象封装 代码分层思想 分层思想&#xff1a;将普通思想分为两层&#xff0c;分为接口对象层和测试脚本层 接口对象层&#xff1a; 对接口进行封装&#xff0c;封装好之…

【LeetCode】5. 贪心算法:买卖股票时机

太久没更了&#xff0c;抽空学习下。 看一道简单题。 class Solution:def maxProfit(self, prices: List[int]) -> int:cost -1profit 0for i in prices:if cost -1:cost icontinueprofit_ i - costif profit_ > profit:profit profit_if cost > i:cost iret…

微信小程序调用企业微信客户服务插件联通企业微信客服

需求背景:用户在小程序页面点击按钮添加企业微信的客服 相关技术:基于uniapp开发的微信小程序 插件名称:企业微信客户服务插件「联系我」插件 - 文档 - 企业微信开发者中心 仔细阅读文档「联系我」插件 - 文档 - 企业微信开发者中心 以下是我的实例代码 1.首先先小程序管…

大数据数仓实战项目(离线数仓+实时数仓)2

目录 1.课程目标和课程内容介绍 2.数仓维度建模设计 3.数仓为什么要分层 4.数仓分层思想和作用 5.数仓中表的种类和同步策略 6.数仓中表字段介绍以及表关系梳理 订单表itcast_orders 订单明细表 itcast_order_goods 商品信息表 itcast_goods 店铺表 itcast_shops 商…

【Android】jni开发之导入opencv和libyuv来进行图像处理

做视频图像处理时需要对其进行水印的添加&#xff0c;放在应用层调用工具性能方面不太满意&#xff0c;于是当下采用opencvlibyuv方法进行处理。 对于Android的jni开发不是很懂&#xff0c;我的需求是导入opencv方便在cpp中调用&#xff0c;但目前找到的教程都是把opencv作为模…

理解 C 与 C++ 中的 const 常量与数组大小的关系

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;数组大小的常量要求&#x1f4af;C 语言中的数组大小要求&#x1f4af;C 中的数组大小要求&#x1f4af;为什么 C 中 const 变量可以作为数组大小&#x1f4af;进一步的…

小菜鸟系统学习Python第六天

1.函数: 2.全局变量加global(这里博主记混了,global使用的时候不能赋值,然后就错了两回) 3.内嵌函数 4.闭包 存在嵌套函数&#xff1a;在一个函数内部定义另一个函数。内部函数引用外部函数的变量&#xff1a;内部函数使用了外部函数作用域中的变量。外部函数返回内部函数&…

【STM32系列】利用MATLAB配合ARM-DSP库设计IIR数字滤波器(保姆级教程)

ps.源码放在最后面 设计FIR数字滤波器可以看这里&#xff1a;利用MATLAB配合ARM-DSP库设计FIR数字滤波器&#xff08;保姆级教程&#xff09; 设计IIR滤波器 MATLAB配置 设计步骤 首先在命令行窗口输入"filterDesigner"&#xff0c;接着就会跳出以下界面&#xf…

WSL2中安装的ubuntu搭建tftp服务器uboot通过tftp下载

Windows中安装wsl2&#xff0c;wsl2里安装ubuntu。 1. Wsl启动后 1&#xff09;Windows下ip ipconfig 以太网适配器 vEthernet (WSL (Hyper-V firewall)): 连接特定的 DNS 后缀 . . . . . . . : IPv4 地址 . . . . . . . . . . . . : 172.19.32.1 子网掩码 . . . . . . . .…

ES冷热数据分离配置

冷热数据是根据索引创建时间来进行迁移的。一旦迁移到冷数据节点&#xff0c;则无法再恢复成热数据&#xff0c;因为热数据节点中该索引已经没有分片存在了。 基于Docker搭建ES集群,并设置冷热数据节点 配置冷热数据迁移策略 PUT https://192.168.x.xx:19200/_ilm/policy/my…

Javaweb学习日记(十一)Mybatis-基础操作

一、环境准备 二、基础操作-删除 日志输出&#xff1a; SQL注入&#xff1a; sql注入&#xff1a;例如一个登录页面&#xff0c;需要满足账号密码同时匹配数据库内的数据才可登录&#xff08;点击登录也页面在后台生成一条sql语句去检验是否正确&#xff08;通过判断sql语句返…

小程序-基础加强

前言 这一节把基础加强讲完 1. 导入需要用到的小程序项目 2. 初步安装和使用vant组件库 这里还可以扫描二维码 其中步骤四没什么用 右键选择最后一个 在开始之前&#xff0c;我们的项目根目录得有package.json 没有的话&#xff0c;我们就初始化一个 但是我们没有npm这个…

Spring @PropertySource:让你的应用配置更加模块化和可维护

PropertySource注解在Spring中的作用&#xff0c;就像是给Spring应用配了一个“外部配置箱”。 想象一下&#xff0c;你在开发一个Spring应用时&#xff0c;有很多配置信息需要设置&#xff0c;比如数据库的连接信息、应用的某些功能开关等。如果这些信息都硬编码在代码中&…

尝试在Excel里调用硅基流动上的免费大语言模型

我个人觉得通过api而不是直接浏览器客户端聊天调用大语言模型是使用人工智能大模型的一个相对进阶的阶段。 于是就尝试了一下。我用的是老师木 袁进辉博士新创的硅基流动云上的免费的大模型。——虽然自己获赠了不少免费token&#xff0c;但测试阶段用不上。 具体步骤如下&am…

问卷数据分析|SPSS之分类变量描述性统计

1.点击分析--描述统计--频率 2. 选中分类变量&#xff0c;点击中间箭头 3.图表选中条形图&#xff0c;图表值选择百分比&#xff0c;选择确定 4.这里显示出了描述性统计的结果 5.下面就是图形&#xff0c;但SPSS画的图形都不是很好啊看&#xff0c;建议用其他软件画图&#xff…

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (上)

今天小李哥将开启全新的技术分享系列&#xff0c;为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来&#xff0c;生成式 AI 安全市场正迅速发展。据 IDC 预测&#xff0c;到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元&#xff0c;年复合增长率超过 30%…

LQB(0)-python-基础知识

一、Python开发环境与基础知识 python解释器&#xff1a;用于解释python代码 方式&#xff1a; 1.直接安装python解释器 2.安装Anaconda管理python环境 python开发环境&#xff1a;用于编写python代码 1.vscode 2.pycharm # 3.安装Anaconda后可以使用网页版的jupyter n…

SQL Server 数据库备份指南

SQL Server备份是数据库维护的日常工作。备份的目的是在发生数据丢失、损坏甚至硬件故障时将数据库和事务日志恢复到最近的时间点。您可以借助专业的SQL Server备份软件,操作起来更方便。前提需要安装SQL Server Management Studio (SSMS)工具。 对于 SQL 数据库备份,有多种…

常见Linux命令的复习

常见命令 ls 列出工作目录 ls -l&#xff1a;以长格式显示目录下的文件和子目录信息。ls -a&#xff1a;显示所有文件和子目录&#xff0c;包括隐藏文件 ll 列出该目录下的详细信息 看到该目录下的所有目录和文件的详细信息 cd 切换当前工作目录里 cd /path/to/directory&…