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

目录标题

  • 达梦数据库单主转主备配置笔记
    • 前期准备
      • 服务器环境
      • 数据库安装
      • 磁盘空间
  • 流程
      • 流程图说明
    • 详细步骤
      • 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 性能和数据安全性。例如,数据文件存放在数据盘,日志文件存放在日志盘,备份文件存放在备份盘。

流程

流程图说明

  1. 开始:整个流程的起始点。
  2. 前期配置
    • 设置Kubeconfig:查找Kubeconfig文件路径,通过设置环境变量export KUBECONFIG=/path/to/your/kubeconfig来配置,最后使用kubectl config view等命令验证是否生效。
    • 准备数据库配置文件:编辑dm.ini文件,设置实例名、端口号等关键参数;创建dmmal.ini文件用于主备库通信配置;创建dmarch.ini文件用于归档配置。
  3. 主库操作
    • 检查数据库连接:通过ps -ef | grep dmserver查看数据库服务状态,若未运行则使用systemctl start dmdba.service启动 ,检查连接配置,用telnet <数据库主机地址> 5236测试网络连通性。
    • 启动DmAPService:使用systemctl start DmAPService命令启动。
    • 主库备份:启动dmrman工具,执行BACKUP DATABASE FULL TO backup_name BACKUPSET 'backup_path'进行全量备份。
    • 停止DmAPService:使用systemctl stop DmAPService命令停止。
    • 启动主库dmwatcher:编辑dmwatcher.ini配置文件,然后使用./dmwatcher /dm8/dmwatcher.ini启动。
    • 连接主库数据库:使用disql SYSDBA/密码连接,若失败则排查防火墙和网络配置等问题。
    • 检查Pod标签:使用kubectl get pods --show-labels查看。
  4. 备库操作
    • 初始化备库:使用dminit工具进行初始化。
    • 复制配置文件:通过scp命令将主库的dm.inidmmal.inidmarch.ini文件复制到备库相应位置。
    • 恢复主库备份到备库:先将主库备份文件复制到备库,然后启动dmrman工具,依次执行恢复数据库、恢复归档日志和更新数据库魔数的命令。
    • 更新备库GUID和模式:使用disql连接备库,执行命令更新OGUID和将数据库模式设置为standby
    • 启动备库dmwatcher:编辑配置文件后启动。
    • 停止备库DmAPService:使用systemctl stop DmAPService命令停止。
  5. 验证主备同步
    • 在主库创建测试表并插入数据,在备库查询测试表,若同步失败则排查网络、配置文件和数据库日志等问题,成功则流程结束。

详细步骤

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"

在这里插入图片描述

在这里插入图片描述

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

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.mzph.cn/pingmian/69205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用C#开发一款通用数据库管理工具

由于经常使用各种数据库&#xff0c;笔者自己动手丰衣足食&#xff0c;使用C#开发了一款通用数据库管理工具&#xff0c;支持Mysql、Oracle、Sqlite、SQL Server等数据库的表、视图、存储过程、函数管理功能&#xff0c;并支持导入导出、数据字典生成、拖拽式跨机器跨库数据一键…

vue2-给data动态添加属性

vue2-给data动态添加属性 1. 问题的来源 在VUe2中&#xff08;VUE3中使用了proxy&#xff0c;及时动态添加也能实现响应式&#xff09;&#xff0c;如果我们动态给data添加一个属性&#xff0c;会发现视图没有同步更新举个例子我们通过v-for遍历data中的一个属性list&#xf…

Github 2025-01-31Java开源项目日报 Top10

根据Github Trendings的统计,今日(2025-01-31统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目10C项目1Kotlin项目1Bazel:快速、可扩展的多语言构建系统 创建周期:3564 天开发语言:Java协议类型:Apache License 2.0Star数量:2…

w193基于Spring Boot的秒杀系统设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

DeepSeek各版本说明与优缺点分析

DeepSeek各版本说明与优缺点分析 DeepSeek是最近人工智能领域备受瞩目的一个语言模型系列&#xff0c;其在不同版本的发布过程中&#xff0c;逐步加强了对多种任务的处理能力。本文将详细介绍DeepSeek的各版本&#xff0c;从版本的发布时间、特点、优势以及不足之处&#xff0…

JDK17主要特性

JDK 17&#xff0c;也被称为Java 17或Java Platform, Standard Edition 17&#xff0c;是Java编程语言的第十七个主要版本&#xff0c;由Oracle公司在2021年9月发布。Java 17是一个长期支持&#xff08;LTS&#xff0c;Long-Term Support&#xff09;版本&#xff0c;这意味着它…

git 项目的更新

更新项目 当自己的本地项目与 远程的github 的仓库已经建立远程连接时&#xff0c; 则直接按照下面的步骤&#xff0c; 将本地的项目代码更新到远程仓库。 # Stage the resolved file git add README.md <file1> <file2># To stage all changes: git add .# Comm…

OpenCV:特征检测总结

目录 一、什么是特征检测&#xff1f; 二、OpenCV 中的常见特征检测方法 1. Harris 角点检测 2. Shi-Tomasi 角点检测 3. Canny 边缘检测 4. SIFT&#xff08;尺度不变特征变换&#xff09; 5. ORB 三、特征检测的应用场景 1. 图像匹配 2. 运动检测 3. 自动驾驶 4.…

windows版的docker如何使用宿主机的GPU

windows版的docker使用宿主机的GPU的命令 命令如下 docker run -it --nethost --gpus all --name 容器名 -e NVIDIA_DRIVER_CAPABILITIEScompute,utility -e NVIDIA_VISIBLE_DEVICESall 镜像名效果 (transformer) rootdocker-desktop:/# python Python 3.9.0 (default, Nov 15 …

Zabbix SQL注入漏洞CVE-2024-42327修复建议

近期&#xff0c;Zabbix官方修复了Zabbix SQL注入漏洞(CVE-2024-42327)。利用该漏洞&#xff0c;具有API访问权限的用户可越权访问高权限用户敏感信息以及执行恶意SQL语句。目前该漏洞技术细节与PoC已在互联网上公开。 一、漏洞情况分析 Zabbix 是一款开源的网络监控和报警系统…

neo4j-在Linux中安装neo4j

目录 切换jdk 安装neo4j 配置neo4j以便其他电脑可以访问 切换jdk 因为我安装的jdk是1.8版本的&#xff0c;而我安装的neo4j版本为5.15,Neo4j Community 5.15.0 不支持 Java 1.8&#xff0c;它要求 Java 17 或更高版本。 所以我需要升级Java到17 安装 OpenJDK 17 sudo yu…

最大矩阵的和

最大矩阵的和 真题目录: 点击去查看 E 卷 100分题型 题目描述 给定一个二维整数矩阵&#xff0c;要在这个矩阵中选出一个子矩阵&#xff0c;使得这个子矩阵内所有的数字和尽量大&#xff0c;我们把这个子矩阵称为和最大子矩阵&#xff0c;子矩阵的选取原则是原矩阵中一块相互…

Windows图形界面(GUI)-QT-C/C++ - QT Dock Widget

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 一、概述 二、使用场景 1. 工具栏 2. 侧边栏 3. 调试窗口 三、常见样式 1. 停靠位置 2. 浮动窗口 3. 可关闭 4. 可移动 四、属性设置 1. 设置内容 2. 获取内容 3. 设置标题 …

8.PPT:小李-第二次世界大战【21】

目录 NO123 ​ NO4567 ​ NO8\9\10\11​ 图片→格式→大小对话框→锁定纵横比✔动画→飞入→效果选项&#xff1a;方向/序列→开始→持续时间→延迟时间持续时间&#xff1a;1s延迟&#xff1a;0.5s音频剪切时间&#xff1a;0.5s&#xff1a;00:00.500自动换片时间设置&…

React中使用箭头函数定义事件处理程序

React中使用箭头函数定义事件处理程序 为什么使用箭头函数&#xff1f;1. 传递动态参数2. 避免闭包问题3. 确保每个方块的事件处理程序是独立的4. 代码可读性和维护性 示例代码总结 在React开发中&#xff0c;处理事件是一个常见的任务。特别是当我们需要传递动态参数时&#x…

GAN(生成对抗网络,Generative Adversarial Network)

https://www.bilibili.com/video/BV1mp4y187dm/?spm_id_from333.788.recommend_more_video.2&vd_source35b06c13f470dff84c947fa3045bafc3

Docker 国内最新可用镜像源20250205

2年没用dockerhub了结果今天发现镜像无法拉取了&#xff0c;找了很多镜像都无效&#xff0c;连阿里云镜像都不行了&#xff0c;最后找到下面可以用的。 Docker镜像仓库备注hub.urlsa.us.kg可用http://hub.haod.eu.org可用http://hub.chxza.eu.org可用http://ccoc.eu.org部分地…

网站快速收录:如何优化网站音频内容?

本文转自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/60.html 为了优化网站音频内容以实现快速收录&#xff0c;以下是一些关键的策略和步骤&#xff1a; 一、高质量音频内容创作 原创性&#xff1a; 确保音频内容是原创的&#xff0c;避免使…

【C++】多态详细讲解

本篇来聊聊C面向对象的第三大特性-多态。 1.多态的概念 多态通俗来说就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态)。 编译时多态&#xff1a;主要就是我们前⾯讲的函数重载和函数模板&#xff0c;他们传不同类型的参数就可以调⽤不同的函数&#xff0c;通…

【kafka的零拷贝原理】

kafka的零拷贝原理 一、零拷贝技术概述二、Kafka中的零拷贝原理三、零拷贝技术的优势四、零拷贝技术的实现细节五、注意事项一、零拷贝技术概述 零拷贝(Zero-Copy)是一种减少数据拷贝次数,提高数据传输效率的技术。 在传统的数据传输过程中,数据需要在用户态和内核态之间…