当前位置: 首页 > 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 性能和数据安全性。例如,数据文件存放在数据盘,日志文件存放在日志盘,备份文件存放在备份盘。

流程

流程图说明

  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 等,及时发现并处理异常情况。

相关文章:

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

目录标题 达梦数据库单主转主备配置笔记前期准备服务器环境数据库安装磁盘空间 流程流程图说明 详细步骤1. 检查主库归档模式2. 配置主库配置文件dm.ini 文件dmmal.ini 文件dmarch.ini 文件 3. 备份主库数据库4. 备库配置新建备库数据库配置备库配置文件dm.ini 文件复制主库的 …...

SpringUI Web高端动态交互元件库

Axure Web高端动态交互元件库是一个专为Web设计与开发领域设计的高质量资源集合&#xff0c;旨在加速原型设计和开发流程。以下是关于这个元件库的详细介绍&#xff1a; 一、概述 Axure Web高端动态交互元件库是一个集成了多种预制、高质量交互组件的工具集合。这些组件经过精…...

ES冷热数据分离配置

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

七大排序思想

目录 七大排序的时间复杂度和稳定性 排序 插入排序 简单插入排序 希尔排序 选择排序 简单选择排序 堆排序 交换排序 冒泡排序 快速排序 快排的递归实现 hoare版本的快排 挖坑法的快排 双指针法的快排 快排的非递归 归并排序 归并的递归实现 归并的非递归实现…...

制作PE启动盘(内含Win11 iso镜像)

前言 本文用于记录制作PE启动盘过程&#xff0c;学习记录用&#xff0c;如有不对请指出&#xff0c;谢谢&#xff01; 参考视频&#xff1a; 1. 微PE下载&#xff1a;https://www.bilibili.com/video/BV1vT4y1n7JX/?spm_id_from333.788.top_right_bar_window_history.conte…...

css字体样式与文本样式详解

目录 一、CSS字体样式 1. 字体类型&#xff08;font-family&#xff09; 2. 字体大小&#xff08;font-size&#xff09; 3. 字体粗细&#xff08;font-weight&#xff09; 4. 字体风格&#xff08;font-style&#xff09; 5. 字体颜色&#xff08;color&#xff09; 6. …...

游戏引擎学习第89天

回顾 由于一直没有渲染器&#xff0c;终于决定开始动手做一个渲染器&#xff0c;虽然开始时并不确定该如何进行&#xff0c;但一旦开始做&#xff0c;发现这其实是正确的决定。因此&#xff0c;接下来可能会花一到两周的时间来编写渲染器&#xff0c;甚至可能更长时间&#xf…...

derpseek来讲lua

Lua 是一种轻量级、高效、可嵌入的脚本语言&#xff0c;广泛应用于游戏开发、嵌入式系统、Web 服务器等领域。以下是 Lua 的主要特点和一些基本概念&#xff1a; 1. 特点 轻量级&#xff1a;Lua 的核心非常小&#xff0c;适合嵌入到其他应用程序中。高效&#xff1a;Lua 的执…...

HL7 学习(一)

一、概述&#xff1a; 1、医疗信息化是个很宽广的范围和话题&#xff0c;要实现医疗信息化&#xff0c;必须使用DICOM&#xff0c;HL7 等标准&#xff0c;加上IHE(医疗一体化)&#xff1b; 2、目前对于DICOM和IHE只是大概了解&#xff0c;知道是是干什么的&#xff0c;诸多细…...

Linux学习笔记16---高精度延时实验

延时函数是很常用的 API 函数&#xff0c;在前面的实验中我们使用循环来实现延时函数&#xff0c;但是使用循环来实现的延时函数不准确&#xff0c;误差会很大。虽然使用到延时函数的地方精度要求都不会很严格( 要求严格的话就使用硬件定时器了 ) &#xff0c;但是延时函数肯定…...

STM32HAL库RTC时钟

RTC的结构非常像一个简化版的定时器&#xff0c;核心当然是一个计数器&#xff0c;与定时器的16位计数器只能从0计数到65535不同&#xff0c;RTC的计数器是32位的&#xff0c;可以从0技术到4294967295&#xff0c;RTC的计数器前还有个RTC预分频器&#xff0c;可以将时钟源的时钟…...

Word List 2

词汇颜色标识解释 词汇表中的生词 词汇表中的词组成的搭配、派生词 例句中的生词 我自己写的生词&#xff08;用于区分易混淆的词&#xff0c;无颜色标识&#xff09; 不认识的单词或句式 单词的主要汉语意思 不太理解的句子语法和结构 Word List 2 英文音标中文regi…...

杨氏数组中查找某一数值是否存在

判断数据是否存在于杨氏矩阵中 &#xff08;小米真题&#xff09; 题目&#xff1a;有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 要求&#xff1a;时间复杂度小于O(N) …...

51单片机 02 独立按键

一、独立按键控制LED亮灭 轻触按键&#xff1a;相当于是一种电子开关&#xff0c;按下时开关接通&#xff0c;松开时开关断开&#xff0c;实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。 #include <STC89C5xRC.H> void main() { // P20xFE;while(1){…...

AI + 编程时代,飞算JavaAI如何引领行业趋势变革

在当今科技飞速发展的浪潮下&#xff0c;AI 与编程的深度融合已成为不可阻挡的时代趋势&#xff0c;正重塑着各个行业的格局。在这场变革中&#xff0c;飞算JavaAI脱颖而出&#xff0c;凭借其卓越的特性和创新的理念&#xff0c;在 AI 编程领域展现出强大的引领力量&#xff0…...

计算机网络之物理层通信基础(电路交换、报文交换与分组交换)

一、电路交换 工作原理&#xff1a; 电路交换是在数据传输期间&#xff0c;源结点与目的结点之间建立一条由中间结点构成的专用物理连接线路&#xff0c;并在数据传输结束之前保持这条线路。整个报文的比特流连续地从源点直达终点&#xff0c;好像在一个管道中传送。 特点&am…...

Deepseek本地部署指南:在linux服务器部署,在mac远程web-ui访问

1. 在Linux服务器上部署DeepSeek模型 要在 Linux 上通过 Ollama 安装和使用模型&#xff0c;您可以按照以下步骤进行操作&#xff1a; 步骤 1&#xff1a;安装 Ollama 安装 Ollama&#xff1a; 使用以下命令安装 Ollama&#xff1a; curl -sSfL https://ollama.com/download.…...

社长的智慧

社长智慧 1. 社长智慧2. 联系方式获取方式3. 其他文章快来试试吧☺️ 1. 社长智慧 社长智慧&#x1f448;点击链接查看文章 2. 联系方式获取方式 更多文章获取做点击获取更多文章。 3. 其他文章 如果对您有帮助&#xff0c;请您点赞、收藏、关注、转发&#xff0c;让更多的…...

1-R语言概述

1.认识R语言 1.1 选择R语言的依据 免费的软件编程方便&#xff0c;语言灵活&#xff0c;图形功能强大优秀的内在帮助系统高质量、广泛的统计分析、数据挖掘平台国际上R语言已然是专业数据分析领域的标准 1.2 R的来源 ​ R是S语言的一种实现。S语言是由 AT&T贝尔实验室…...

【BQ3568HM开发板】智能家居中控屏连接华为云IoTDA物联网平台

目录 引言 安装OpenHarmony的MQTT库 华为云平台的操作 建立设备 建立物模型 连接华为云平台 发布LED灯状态 代码重构 测试结果 接收平台发送的属性修改命令 设备侧API Topic 下行请求参数说明 上行响应参数说明 程序修改 应用侧API 测试设备属性设置功能 结语…...

mac 安装 dotnet 环境

目录 一、安装准备 二、安装方法&#xff08;两种任选&#xff09; 方法 1&#xff1a;使用官方安装包&#xff08;推荐新手&#xff09; 方法 2&#xff1a;使用 Homebrew&#xff08;适合开发者&#xff09; 1. 安装 Homebrew&#xff08;如未安装&#xff09; 2. 通过 …...

Python爬虫--requests库

一、安装 requests pip install requests二、基础用法 1. 发送 GET 请求 import requestsresponse requests.get("https://www.example.com") print(response.status_code) # 状态码&#xff08;200表示成功&#xff09; print(response.text) # 响应内…...

java 8 在 idea 无法创建 java spring boot 项目的 变通解决办法

java 8 在 idea 无法创建 java spring boot 项目的 变通解决办法 spring boot 3 官方强制 要用 java 17 &#xff0c;但是 不想安装java 17的 &#xff0c;但是又想 使用 spring boot &#xff0c;可以这样 &#xff1a; 在这个网站 https://start.aliyun.com/ 选择 你相对…...

web-文件上传-CTFHub

前言 在众多的CTF平台当中&#xff0c;作者认为CTFHub对于初学者来说&#xff0c;是入门平台的不二之选。CTFHub通过自己独特的技能树模块&#xff0c;可以帮助初学者来快速入门。具体请看官方介绍&#xff1a;CTFHub。 作者更新了CTFHub系列&#xff0c;希望小伙伴们多多支持…...

langchain教程-5.DocumentLoader/多种文档加载器

前言 该系列教程的代码: https://github.com/shar-pen/Langchain-MiniTutorial 我主要参考 langchain 官方教程, 有选择性的记录了一下学习内容 这是教程清单 1.初试langchain2.prompt3.OutputParser/输出解析4.model/vllm模型部署和langchain调用5.DocumentLoader/多种文档…...

SQLAlchemy-2.0中模型定义和alembic的数据库迁移工具

SQLAlchemy-2.0中模型定义和alembic的数据库迁移工具 一、SQLAIchemy的介绍二、数据库引擎1、支持的数据库1.1、sqlite数据库1.2、MySQL数据库1.3、数据库引擎的参数 三、定义模型类1、定义模型2、engine负责数据库迁移 四、alembic数据库迁移⼯具1、安装alembic2、初始化alemb…...

C# OpenCV机器视觉:图像风格迁移

在一个充满奇思妙想的创意工作室里&#xff0c;小李正像只热锅上的蚂蚁&#xff0c;为客户的项目挠破了脑袋&#xff0c;急需寻找灵感的火花。他望着眼前那幅平淡无奇的风景图像&#xff0c;心想&#xff1a;“这玩意儿也太普通啦&#xff0c;就像一杯白开水&#xff0c;怎么能…...

6955BA/C/E信号收发仪

6955BA/C/E信号收发仪 6955BA/C/E信号收发仪为符合PXIe总线标准的3U模块化产品&#xff0c;该模块频率范围覆盖40MHz~8GHz/12GHz/26.5GHz、最大信号带宽1GHz、单边带相位噪声为-120dBc/Hz20kHz频偏&#xff08;载波10GHz&#xff0c;典型值&#xff09;&#xff0c;具有矢量信…...

语言月赛 202311【基因】题解(AC)

》》》点我查看「视频」详解》》》 [语言月赛 202311] 基因 题目描述 有一个长度为 n n n 的字符串 S S S。其只包含有大写字母。 小 A 将 S S S 进行翻转后&#xff0c;得到另一个字符串 S ′ S S′。两个字符串 S S S 与 S ′ S S′ 对应配对。例如说&#xff0c;对…...

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

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