LOG_FILE="/tmp/dmdsc_env_$(hostname)_$(date +%Y%m%d_%H%M%S).log"
{
echo "========== DMDSC 环境信息采集 =========="
echo "采集时间: $(date)"
echo "主机名: $(hostname)"
echo "日志路径: $LOG_FILE"
echo ""
echo "--- 1. 操作系统版本 ---"
cat /etc/os-release
uname -a
echo ""
echo "--- 2. CPU信息 ---"
lscpu | grep -E "Model name|Socket|Core|Thread|CPU\(s\)"
echo ""
echo "--- 3. 内存信息 ---"
free -h
echo ""
echo "--- 4. 磁盘分区(lsblk) ---"
lsblk
echo ""
echo "--- 5. 磁盘UUID(blkid) ---"
sudo blkid
echo ""
echo "--- 6. 磁盘by-id(用于udev绑定) ---"
ls -l /dev/disk/by-id/
echo ""
echo "--- 7. 网卡IP地址 ---"
ip addr
echo ""
echo "--- 8. 路由信息 ---"
ip route
echo ""
echo "--- 9. 当前主机名 ---"
hostname
echo ""
echo "--- 10. /etc/hosts内容 ---"
cat /etc/hosts
echo ""
echo "--- 11. 资源限制(ulimit) ---"
ulimit -a
echo ""
echo "--- 12. 系统最大打开文件数 ---"
cat /proc/sys/fs/file-max
echo ""
echo "--- 13. 透明大页状态 ---"
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag
echo ""
echo "--- 14. 共享内存内核参数 ---"
sysctl kernel.shmall kernel.shmmax kernel.sem
echo ""
echo "--- 15. fs.aio-max-nr ---"
sysctl fs.aio-max-nr
echo ""
echo "--- 16. 磁盘I/O调度器 ---"
cat /sys/block/vd*/queue/scheduler 2>/dev/null || echo "未找到vd*设备"
echo ""
echo "--- 17. glibc版本 ---"
ldd --version | head -1
echo ""
echo "--- 18. SELinux状态 ---"
getenforce 2>/dev/null || echo "SELinux未安装"
echo ""
echo "--- 19. 防火墙状态 ---"
systemctl status firewalld 2>/dev/null | head -3 || echo "防火墙未安装"
echo ""
echo "--- 20. 当前用户 ---"
whoami
echo ""
echo "========== 采集完成 =========="
} 2>&1 | tee "$LOG_FILE"
cat /tmp/dmdsc_env_yangke_20260721_133414.log #展示日志信息
========== DMDSC 环境信息采集 ==========
采集时间: Tue Jul 21 13:34:16 CST 2026
主机名: ******
日志路径: /tmp/dmdsc_env_yangke_20260721_133414.log
--- 1. 操作系统版本 ---
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
Linux yangke 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
--- 2. CPU信息 ---
CPU(s): 6
On-line CPU(s) list: 0-5
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 6
Model name: Intel(R) Xeon(R) 6966P-C
NUMA node0 CPU(s): 0-5
--- 3. 内存信息 ---
total used free shared buff/cache available
Mem: 13G 2.3G 6.5G 32M 4.7G 10G
Swap: 2.0G 0B 2.0G
--- 4. 磁盘分区(lsblk) ---
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 50G 0 disk
├─vda1 253:1 0 1G 0 part /boot
├─vda2 253:2 0 2G 0 part [SWAP]
└─vda3 253:3 0 47G 0 part /
vdb 253:16 0 500M 0 disk
vdc 253:32 0 500M 0 disk
vdd 253:48 0 20G 0 disk
vde 253:64 0 50G 0 disk
loop0 7:0 0 956.9M 0 loop /mnt
--- 5. 磁盘UUID(blkid) ---
/dev/vda3: UUID="618abf2e-0839-4a89-80d4-4c08110b9d95" TYPE="ext4"
/dev/vda1: UUID="c83c2f43-b6f5-4bab-a059-b50c8c7b3d06" TYPE="ext4"
/dev/vda2: UUID="467a068b-e4b1-4384-9bc3-d422e0bf3b6a" TYPE="swap"
/dev/loop0: UUID="2026-04-27-10-22-17-00" LABEL="dameng" TYPE="iso9660"
--- 6. 磁盘by-id(用于udev绑定) ---
ls: cannot access /dev/disk/by-id/: No such file or directory
--- 7. 网卡IP地址 ---
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:32:da:17 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.31/24 brd 192.168.200.255 scope global noprefixroute dynamic eth0
valid_lft 3568sec preferred_lft 3568sec
inet6 fe80::5054:ff:fe32:da17/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:ce:c6:80 brd ff:ff:ff:ff:ff:ff
inet 192.168.201.94/24 brd 192.168.201.255 scope global noprefixroute dynamic eth1
valid_lft 3161sec preferred_lft 3161sec
inet6 fe80::3cff:c8dd:5e56:bdb0/64 scope link noprefixroute
valid_lft forever preferred_lft forever
--- 8. 路由信息 ---
default via 192.168.200.1 dev eth0 proto dhcp metric 100
default via 192.168.201.1 dev eth1 proto dhcp metric 101
192.168.200.0/24 dev eth0 proto kernel scope link src 192.168.200.31 metric 100
192.168.201.0/24 dev eth1 proto kernel scope link src 192.168.201.94 metric 101
--- 9. 当前主机名 ---
******
--- 10. /etc/hosts内容 ---
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
--- 11. 资源限制(ulimit) ---
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 55393
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 65536
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
--- 12. 系统最大打开文件数 ---
1357627
--- 13. 透明大页状态 ---
[always] madvise never
[always] madvise never
--- 14. 共享内存内核参数 ---
kernel.shmall = 18446744073692774399
kernel.shmmax = 18446744073692774399
kernel.sem = 250 32000 32 128
--- 15. fs.aio-max-nr ---
fs.aio-max-nr = 65536
--- 16. 磁盘I/O调度器 ---
[none] mq-deadline kyber
[none] mq-deadline kyber
[none] mq-deadline kyber
[none] mq-deadline kyber
[none] mq-deadline kyber
--- 17. glibc版本 ---
ldd (GNU libc) 2.17
--- 18. SELinux状态 ---
Disabled
--- 19. 防火墙状态 ---
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
--- 20. 当前用户 ---
root
192.168.201.94,仅通过端口号错开来模拟双节点。scsi_id。我们将直接使用 udev 的 KERNEL 规则将裸盘 vdb、vdc、vdd、vde 绑定为 ASM 裸设备,供 DMASM 使用。vdb (500M) -> DCR 磁盘vdc (500M) -> VOTE 磁盘vdd (20G) -> REDO 日志盘vde (50G) -> 数据+归档盘创建 udev 规则文件,将虚拟磁盘绑定为 ASM 可识别的设备:
cat > /etc/udev/rules.d/88-dm-asmdevices.rules <<EOF
KERNEL=="vdb", SYMLINK+="dm/asm-dmdcr", OWNER="dmdba", GROUP="dinstall", MODE="0660"
KERNEL=="vdc", SYMLINK+="dm/asm-dmvote", OWNER="dmdba", GROUP="dinstall", MODE="0660"
KERNEL=="vdd", SYMLINK+="dm/asm-dmlog", OWNER="dmdba", GROUP="dinstall", MODE="0660"
KERNEL=="vde", SYMLINK+="dm/asm-dmdata", OWNER="dmdba", GROUP="dinstall", MODE="0660"
EOF
# 刷新 udev 规则并验证
udevadm control --reload-rules
udevadm trigger --type=devices --action=change
# 验证绑定是否生效
ll /dev/dm/asm-*
# 预期输出应显示 /dev/dm/asm-dmdcr, /dev/dm/asm-dmvote 等软链接指向对应的 vdb, vdc 等盘
su - dmdba
mkdir -p /home/dmdba/dsc_config/DSC0
mkdir -p /home/dmdba/dsc_config/DSC1 #-p一次性创建
3.1 配置 dmdcr_cfg.ini
两节点共用一份配置文件。
vi /home/dmdba/dsc_config/dmdcr_cfg.ini
写入以下内容(注意端口已错开):
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/dm/asm-dmvote
DCR_OGUID = 210715
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 65
[GRP_CSS]
DCR_EP_NAME = CSS0
DCR_EP_HOST = 192.168.201.94 # 使用 eth1 网卡
DCR_EP_PORT = 11286
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.201.94 # 使用 eth1 网卡
DCR_EP_PORT = 11287
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 61
[GRP_ASM]
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 42424
DCR_EP_SHM_SIZE = 512
DCR_EP_HOST = 192.168.201.94 # 使用 eth1 网卡
DCR_EP_PORT = 11276
DCR_EP_ASM_LOAD_PATH = /dev/dm
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 42425
DCR_EP_SHM_SIZE = 512
DCR_EP_HOST = 192.168.201.94 # 使用 eth1 网卡
DCR_EP_PORT = 11277
DCR_EP_ASM_LOAD_PATH = /dev/dm
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 57
[GRP_DSC]
DCR_EP_NAME = DSC0
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236 # 业务端口,外部用 eth0 IP 连接
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5237 # 业务端口,外部用 eth0 IP 连接
3.2 配置 dmasvrmal.ini
两节点共用,需拷贝至各自目录:
vi /home/dmdba/dsc_config/dmasvrmal.ini
写入内容:
[MAL_INST0]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.201.94 # 使用 eth1 网卡
MAL_PORT = 11266
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.201.94 # 使用 eth1 网卡
MAL_PORT = 11267
分发到两个节点目录:
cp /home/dmdba/dsc_config/dmasvrmal.ini /home/dmdba/dsc_config/DSC0/ cp /home/dmdba/dsc_config/dmasvrmal.ini /home/dmdba/dsc_config/DSC1/
3.3 配置 dmdcr.ini
节点 0 配置:
vi /home/dmdba/dsc_config/DSC0/dmdcr.ini
DMDCR_PATH = /dev/dm/asm-dmdcr
DMDCR_MAL_PATH = /home/dmdba/dsc_config/DSC0/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_AUTO_OPEN_CHECK = 111
DMDCR_ASM_TRACE_LEVEL = 2
节点 1 配置:
vi /home/dmdba/dsc_config/DSC1/dmdcr.ini
DMDCR_PATH = /dev/dm/asm-dmdcr
DMDCR_MAL_PATH = /home/dmdba/dsc_config/DSC1/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_AUTO_OPEN_CHECK = 111
DMDCR_ASM_TRACE_LEVEL = 2
/home/dmdba/dmdbms/bin/dmasmcmd
在 ASM> 提示符下依次执行:
create dcrdisk '/dev/dm/asm-dmdcr' 'dcr'
create votedisk '/dev/dm/asm-dmvote' 'vote'
init dcrdisk '/dev/dm/asm-dmdcr' from '/home/dmdba/dsc_config/dmdcr_cfg.ini' identified by 'DMdsc_123'
init votedisk '/dev/dm/asm-dmvote' from '/home/dmdba/dsc_config/dmdcr_cfg.ini'
create asmdisk '/dev/dm/asm-dmdata' 'DATA0'
create asmdisk '/dev/dm/asm-dmlog' 'LOG0'
exit
为了实验方便,我们使用后台 nohup 方式启动。开启两个终端窗口分别执行,或在单终端后台执行:
启动节点0服务:
nohup /home/dmdba/dmdbms/bin/dmcss DCR_INI=/home/dmdba/dsc_config/DSC0/dmdcr.ini > /home/dmdba/dsc_config/DSC0/dmcss.log 2>&1 & nohup /home/dmdba/dmdbms/bin/dmasmsvr DCR_INI=/home/dmdba/dsc_config/DSC0/dmdcr.ini > /home/dmdba/dsc_config/DSC0/dmasmsvr.log 2>&1 &
启动节点1服务:
nohup /home/dmdba/dmdbms/bin/dmcss DCR_INI=/home/dmdba/dsc_config/DSC1/dmdcr.ini > /home/dmdba/dsc_config/DSC1/dmcss.log 2>&1 & nohup /home/dmdba/dmdbms/bin/dmasmsvr DCR_INI=/home/dmdba/dsc_config/DSC1/dmdcr.ini > /home/dmdba/dsc_config/DSC1/dmasmsvr.log 2>&1 &
检查进程:ps -ef | grep dm 应该能看到 2 个 dmcss 和 2 个 dmasmsvr 进程。
/home/dmdba/dmdbms/bin/dmasmtool DCR_INI=/home/dmdba/dsc_config/DSC0/dmdcr.ini
在 ASM> 提示符下执行:
create diskgroup 'DMDATA' asmdisk '/dev/dm/asm-dmdata'
create diskgroup 'DMLOG' asmdisk '/dev/dm/asm-dmlog'
exit
创建 dminit.ini:
vi /home/dmdba/dsc_config/dminit.ini
写入内容:
DB_NAME = DSC
SYSDBA_PWD = SYSDBA001
SYSAUDITOR_PWD = SYDAUDITOR001
SYSTEM_PATH = +DMDATA/data
SYSTEM = +DMDATA/data/SYSTEM.dbf
SYSTEM_SIZE = 256
ROLL = +DMDATA/data/ROLL.dbf
ROLL_SIZE = 256
MAIN = +DMDATA/data/MAIN.dbf
MAIN_SIZE = 256
CTL_PATH = +DMDATA/data/dm.ctl
CTL_SIZE = 8
LOG_SIZE = 1024
DCR_PATH = /dev/dm/asm-dmdcr
DCR_SEQNO = 0
AUTO_OVERWRITE = 1
PAGE_SIZE = 32
EXTENT_SIZE = 16
BLANK_PAD_MODE = 1
[DSC0]
CONFIG_PATH = /home/dmdba/dsc_config/DSC0
PORT_NUM = 5236
MAL_HOST = 192.168.201.94 # 使用 eth1 网卡
MAL_PORT = 11246
LOG_PATH = +DMLOG/DSC0_LOG01.log
LOG_PATH = +DMLOG/DSC0_LOG02.log
[DSC1]
CONFIG_PATH = /home/dmdba/dsc_config/DSC1
PORT_NUM = 5237
MAL_HOST = 192.168.201.94 # 使用 eth1 网卡
MAL_PORT = 11247
LOG_PATH = +DMLOG/DSC1_LOG01.log
LOG_PATH = +DMLOG/DSC1_LOG02.log
执行初始化命令:
/home/dmdba/dmdbms/bin/dminit control=/home/dmdba/dsc_config/dminit.ini
注:因为是单机,dminit 会自动在 /home/dmdba/dsc_config/ 下生成 DSC0 和 DSC1 目录的相关配置文件,无需再 scp 拷贝。
修改 DSC0 和 DSC1 的 dm.ini 开启归档:
sed -i 's/^ARCH_INI.*/ARCH_INI = 1/g' /home/dmdba/dsc_config/DSC0/dm.ini
sed -i 's/^ARCH_INI.*/ARCH_INI = 1/g' /home/dmdba/dsc_config/DSC1/dm.ini
创建 DSC0 的归档配置:
vi /home/dmdba/dsc_config/DSC0/dmarch.ini
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/arch/DSC0
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMDATA/arch/DSC1
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 0
创建 DSC1 的归档配置:
vi /home/dmdba/dsc_config/DSC1/dmarch.ini
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/arch/DSC1
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMDATA/arch/DSC0
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 0
nohup /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dsc_config/DSC0/dm.ini dcr_ini=/home/dmdba/dsc_config/DSC0/dmdcr.ini > /home/dmdba/dsc_config/DSC0/dmserver.log 2>&1 & #请完整输入
#这条指令在后台异步启动了 DSC 集群节点 0 的数据库服务进程,指定了该节点的配置文件和集群注册文件,并将所有运行日志输出重定向到指定的日志文件中。
nohup /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dsc_config/DSC1/dm.ini dcr_ini=/home/dmdba/dsc_config/DSC1/dmdcr.ini > /home/dmdba/dsc_config/DSC1/dmserver.log 2>&1 & #请完整输入
我们将指令拆分为五个部分来理解:
1. nohup (No Hang Up)
作用:忽略挂断信号。
解释:它允许程序在您关闭终端窗口或退出登录后,依然继续在后台运行。如果不加这个,一旦您关闭 SecureCRT 或 Xshell 窗口,数据库进程就会随之关闭。
2. /home/dmdba/dmdbms/bin/dmserver
作用:达梦数据库服务端的主程序。
解释:这是数据库实例的可执行文件本身。
3. /home/dmdba/dsc_config/DSC0/dm.ini
作用:指定数据库实例的主配置文件。
解释:
dmserver 启动时必须知道它“是谁”(实例名)、“数据在哪”(控制文件路径)、“内存开多大”等参数。
这里的路径表明,您正在启动的是 DSC0 节点的配置。
4. dcr_ini=/home/dmdba/dsc_config/DSC0/dmdcr.ini
作用:指定集群注册表(DCR)配置文件。
关键点:这是 DSC 集群特有的参数。
解释:
单机数据库启动不需要这个参数。
在 DSC 集群中,数据库进程需要通过 dmdcr.ini 找到 DCR 磁盘(之前提到的 asm-dmdcr)和 VOTE 磁盘。
通过读取这个文件,节点才能找到集群的“大脑”,从而与其他节点通信并加入集群。
5. > /home/dmdba/dsc_config/DSC0/dmserver.log 2>&1
作用:重定向日志输出。
解释:
>:将标准输出(正常日志)写入指定的 log 文件。
2>&1:将标准错误输出(报错信息)也重定向到标准输出的文件中。
合起来的效果就是:把启动过程中所有打印在屏幕上的信息,全部存到 dmserver.log 文件里,方便后续排查故障。
6. & (Ampersand)
作用:放入后台执行。
解释:让命令在后台运行,立刻释放当前终端的控制权,您可以继续输入其他命令。
此时可以通过 disql 分别连接两个节点验证:
disql SYSDBA/DMdsc_123@127.0.0.1:5236 和 disql SYSDBA/DMdsc_123@127.0.0.1:5237
vi /home/dmdba/dmdbms/bin/dmcssm.ini
CSSM_OGUID = 210715
CSSM_CSS_IP = 192.168.201.94:11286 # 使用 eth1 网卡
CSSM_CSS_IP = 192.168.201.94:11287 # 使用 eth1 网卡
CSSM_LOG_PATH = ../log
CSSM_LOG_FILE_SIZE = 512
CSSM_LOG_SPACE_LIMIT = 2048
启动监视器:
/home/dmdba/dmdbms/bin/dmcssm INI_PATH=/home/dmdba/dmdbms/bin/dmcssm.ini
输入 show 命令,如果能看到 GRP_CSS, GRP_ASM, GRP_DSC 的状态均为 OPEN 且 is_ok 为 TRUE,即代表单机版 DMDSC 部署圆满成功!
这正是单机部署导致的根本差异。在原指南的标准双机场景中,CSS0 和 CSS1 分别运行在物理上两台不同的服务器(db0、db1)上,每台服务器各自有独立的心跳网卡,因此两节点的 DCR_EP_HOST 必然不同(10.10.10.1 vs 10.10.10.2),而端口可以相同(都用 11286),因为"IP + 端口"组合本身就能唯一定位进程。
在你的单机环境里,两个 CSS 进程跑在同一台机器上,绑定在同一块 eth1 网卡上,只有一个可用 IP(192.168.201.94)。既然 IP 没法区分,就只能靠端口不同(11286 / 11287)来让操作系统区分这两个监听进程。
| 部署形态 | 节点 | 心跳 IP | CSS 端口 | 区分依据 |
|---|---|---|---|---|
| 原指南·双机 | CSS0 (db0) | 10.10.10.1 | 11286 | IP 不同 |
| 原指南·双机 | CSS1 (db1) | 10.10.10.2 | 11286 | IP 不同 |
| 单机·本方案 | CSS0 | 192.168.201.94 | 11286 | 端口不同 |
| 单机·本方案 | CSS1 | 192.168.201.94 | 11287 | 端口不同 |
| 判断原则其实只有一条:同一台物理机上,"IP + 端口"必须能唯一确定一个监听进程。 |
dmdcr_cfg.ini 配置项,到了单机场景就需要把第二个节点的端口 +1(ASM、DB 的 MAL 端口同理,都是这个逻辑)。本质还是为了满足操作系统对网络监听唯一性的要求,而非达梦集群本身的特殊限制。根据您提供的共享存储映射信息,这四个磁盘设备在达梦数据共享集群(DMDSC)的搭建中各自扮演着核心角色。它们是集群高可用性和数据共享的基础。
首先,通过一个表格快速了解这四个磁盘的定位和关键职责:
| 磁盘别名 | 映射设备 | 核心作用 | 关键特性 |
|---|---|---|---|
| asm-dmdcr | /dev/dm/asm-dmdcr |
集群注册表 | 存储整个集群的配置信息,是集群的“大脑” |
| asm-dmvote | /dev/dm/asm-dmvote |
表决磁盘 | 用于节点心跳检测和故障仲裁,是集群的“法官” |
| asm-dmlog | /dev/dm/asm-dmlog |
Redo日志盘 | 存储联机重做日志,保障事务的持久性和故障恢复能力 |
| asm-dmdata | /dev/dm/asm-dmdata |
数据盘 | 存放所有业务数据文件,是数据的“仓库” |
下面详细解释每个磁盘在DMDSC集群中的具体作用和重要性。
DCR(DM Clusterware Registry)是达梦集群注册表的简称,用于存储、维护集群配置的详细信息。整个集群环境共享DCR配置信息,包括DMDSC、DMASM、DMCSS资源,实例名、监听端口,以及集群中故障节点信息等。
VOTE磁盘是表决磁盘,记录了集群成员信息。DM集群通过VOTE磁盘进行心跳检测,确定集群中节点的状态,判断节点是否出现故障。
这个磁盘用于存储数据库集群的Redo Log(联机重做日志)。Redo日志记录了对数据库数据页的所有修改操作,是保障数据一致性和故障恢复能力的关键。
数据盘用于存放所有业务数据文件(如系统表空间SYSTEM.DBF、用户表空间等)。在DMDSC架构中,多个数据库实例共同访问和修改同一份数据库文件,这些文件就存放在共享存储的数据盘上。
这些磁盘共同支撑了DMDSC集群的运行逻辑,其协作关系如下图所示:
flowchart LR
A[启动集群] --> B[节点1 & 节点2]
B --> C[DMCSS服务]
C --> D[读取/写入<br>DCR & VOTE磁盘]
D --> E[获取集群配置<br>协调节点状态]
E --> F[DMASM服务]
F --> G[管理数据盘 & 日志盘]
G --> H[数据库实例]
H --> I[并发访问<br>共享数据]
核心要点:DMDSC的核心思想是“多个数据库实例共同访问同一份数据库文件”。这四个磁盘正是实现这一思想的物理基础:DCR和VOTE盘确保多个实例能够协调一致地工作,而数据和日志盘则提供了共享的数据载体和事务保障。
在生产环境中,这些磁盘的规划和可靠性至关重要:
disql SYSDBA/DMdsc_123@127.0.0.1:5236 和 disql SYSDBA/DMdsc_123@127.0.0.1:5237的网卡设置和正常在两个服务器上部署的区别:不需要修改网卡(eth0),也不需要修改 IP 地址。
这里使用 127.0.0.1(本地回环地址)是完全正确且推荐的做法,这跟网卡配置没有关系。
127.0.0.1 代表“本机”。既然您是在数据库服务器本机上执行 disql 客户端去连接本地的数据库实例,那么使用 127.0.0.1 是最高效、最稳定的方式。
在命令 disql SYSDBA/DMdsc_123@127.0.0.1:5236 中:
127.0.0.1:表示连接本机。5236:表示连接本机上监听 5236 端口的数据库实例。只有当您从另一台服务器(例如您的 Windows 电脑,或者其他 Linux 服务器)远程连接数据库时,才需要把 127.0.0.1 改为达梦服务器真实的物理 IP(例如 192.168.200.31)。
例如:
如果您的 Windows 电脑想连接达梦服务器(IP 为 192.168.200.31),命令如下:
disql SYSDBA/DMdsc_123@192.168.200.31:5236
文章
阅读量
获赞
