达梦数据库部署异步主备集群

1、环境准备与说明

本示例中数据守护进程组名为"GRP1" ,配置为实时主备,主库实例名为"NODE1" ,备库实例名为"NODE2"。

集群配置环境说明:

如果服务器上面有多个网卡,服务ip和心跳ip可以使用不同的网卡ip,这里只有一个网卡,就是使用相同的ip进行测试使用。

主备角色

服务ip

心跳ip(MAL_HOST)

实例名

实例端口

主库

192.168.58.30

192.168.58.30

NODE1

5236

备库

192.168.58.31

192.168.58.31

NODE2

5236

监视器

192.168.58.32

端口规划:

实例名

PORT_NUM

MAL_INST_DW_ PORT

MAL_HOST

MAL_PORT

MAL_DW_ PORT

NODE1

5236

5237

192.168.58.30

5238

5239

NODE2

5236

5237

192.168.58.31

5238

5239

端口说明:

  • PORT_NUM:数据库实例监听端口。

  • MAL_INST_DW_ PORT:实例对守护进程的监听端口,守护进程使用 MAL_HOST + MAL_INST_DW_PORT 创建到实例的 TCP连接。

  • MAL_PORT:MAL系统监听TCP连接的端口。

  • MAL_DW_ PORT:守护进程监听端口,其他守护进程或监视器使用 MAL_HOST + MAL_DW_ PORT创建 TCP 连 接。监视器配置文件 dmmonitor.ini 中,MON_DW_ IP 就是一组 MAL_HOST: MAL_DW_PORT。

MAL系统是基于 TCP 协议实现的一种内部通信机制,DM通过 MAL系统实现 Redo日志传输, 以及其他一 些实例间的消息通讯。

守护进程 (dmwatcher ) 是数据库实例和监视器之间信息流转的桥梁。数据库实例向本地守护进程发送信息, 接收本地守护进程的消息和命令;

监视器 (dmmonitor) 接收守护进程的消息,并向守护进程发送命令;数据库实例与监视器之间没有直接的消 息交互;

守护进程解析并执行监视器发起的各种命令 (Switchover/Takeover/Open force 等) ,并在必要时通知数据库实例执行相应的操作。

2、在主库、备库、监视器三台服务器上安装达梦数据库

1、安装前的准备工作

详情请参考官方文档:https://eco.dameng.com/document/dm/zh-cn/ops/before-installation.html

1、创建达梦数据库对应的用户和组

注意:安装前必须创建 dmdba 用户,禁止使用 root 用户安装数据库。

groupadd dinstall    # 创建dinstall组
useradd -g dinstall dmdba    # 创建dmdba用户
echo "DaMeng12345" |passwd --stdin dmdba    # 为dmdba用户设置密码

2、创建达梦数据库安装目录

# dminstall是达梦数据库软件安装的位置,dmdata是达梦数据库实例存放位置,dmarch是达梦数据库归档日志存放位置,dmbak是达梦数据库备份文件存放位置
mkdir -p /dm8/{dminstall,dmdata,dmarch,dmbak}
chown -R dmdba:dinstall /dm8
chmod -R 755 /dm8

3、调整系统资源限制

查看dmdba用户的系统资源情况:

su - dmdba
ulimit -a

官方建议:

root用户下配置资源限制,在/etc/security/limits.conf文件中追加下面的内容:

vim /etc/security/limits.conf

# soft软连接,hard硬连接,nofile打开文件,nproc打开的进程
dmdba   soft    nofile  65536
dmdba   hard    nofile  65536
dmdba   soft    nproc   65536
dmdba   hard    nproc   65536

配置完成之后,到dmdba用户下查看资源限制

su - dmdba
ulimit -a


2、去官网下载达梦8镜像并解压挂载到服务器上

选择好自己的cpu平台和操作系统版本,开放版这里没有银河麒麟v10,选择redhat7代替

root用户操作:

# 下载dm8
wget https://download.dameng.com/eco/adapter/DM8/202401END/dm8_20240408_x86_rh7_64.zip
# 解压dm8
unzip dm8_20240408_x86_rh7_64.zip

挂载iso镜像:

mount -o loop dm8_20240408_x86_rh7_64.iso /mnt

3、切换到dmdba用户下安装达梦数据库

注意:如果/tmp 目录不能保证 2GB 的存储空间,在安装达梦数据库的时候会报错,用户可以扩展/tmp 目录存储空间或者通过设置环境变量 DM_INSTALL_TMPDIR 指定安装程序的临时目录。具体操作如下所示:

1、切换到dmdba用户下:su - dmdba

2、在环境变量文件中追加配置:vim ~/.bash_profile

追加内容为:export DM_INSTALL_TMPDIR=/dm8/dmtmp

(/dm8/dmtmp这个目录确保有2g的空间,并且dmdba用户有权限操作该目录)

3、加载环境变量,让它生效:source ~/.bash_profile

# 切换成dmdba用户
su - dmdba
# 执行安装命令,这个是命令行安装命令,-i指定命令行
/mnt/DMInstall.bin -i

根据实际情况去配置:

根据上面执行结果的要求,新开一个窗口登录root用户执行上述root_installer.sh脚本注册数据库服务:

/dm8/dminstall/script/root/root_installer.sh

到这里,dm8软件就安装完成了

4、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

3、在主、备库节点上初始化实例(使用dmdba用户操作)

按实际需要初始化实例:

本例只指定数据库存放路径、DB_NAME、INSTANCE_NAME,页大小为32k,其它参数使用默认值。

主库:192.168.58.30

su - dmdba
cd /dm8/dminstall/bin
./dminit PATH=/dm8/dmdata DB_NAME=APP INSTANCE_NAME=NODE1 PORT_NUM=5236 PAGE_SIZE=32

# 初始化成功后,前台启动实例
./dmserver /dm8/dmdata/APP/dm.ini

# 没有问题就exit退出数据库
exit

备库:192.168.58.31

su - dmdba
cd /dm8/dminstall/bin
./dminit PATH=/dm8/dmdata DB_NAME=APP INSTANCE_NAME=NODE2 PORT_NUM=5236 PAGE_SIZE=32

# 初始化成功后,前台启动实例
./dmserver /dm8/dmdata/APP/dm.ini

# 没有问题就exit退出数据库
exit

4、注册服务(使用root用户操作)

主库:192.168.58.30

# 切换到root用户,注册服务要使用root用户操作
su - root
/dm8/dminstall/script/root/dm_service_installer.sh -t dmserver -p NODE1 -dm_ini /dm8/dmdata/APP/dm.ini

#关闭DmServiceNODE1服务开机自启动
systemctl disable DmServiceNODE1.service

备库:192.168.58.31

# 切换到root用户,注册服务要使用root用户操作
su - root
/dm8/dminstall/script/root/dm_service_installer.sh -t dmserver -p NODE2 -dm_ini /dm8/dmdata/APP/dm.ini

#关闭DmServiceNODE2服务开机自启动
systemctl disable DmServiceNODE2.service

5、脱机备份主库,还原备库(使用dmdba用户操作)

主库:192.168.58.30

su - dmdba
cd /dm8/dminstall/bin
# 备份数据库
./dmrman CTLSTMT="BACKUP DATABASE '/dm8/dmdata/APP/dm.ini' FULL BACKUPSET '/dm8/dmbak/DB_APP_FULL'" 

# 主库上拷贝备份文件到备库
scp -r /dm8/dmbak/DB_APP_FULL dmdba@192.168.58.31:/dm8/dmbak/DB_APP_FULL
# 输入dmdba用户的密码

备库:192.168.58.31

su - dmdba
cd /dm8/dminstall/bin
# 还原数据库
./dmrman CTLSTMT="RESTORE DATABASE '/dm8/dmdata/APP/dm.ini' FROM BACKUPSET '/dm8/dmbak/DB_APP_FULL'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdata/APP/dm.ini' FROM BACKUPSET '/dm8/dmbak/DB_APP_FULL'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdata/APP/dm.ini' UPDATE DB_MAGIC"

6、修改dm.ini文件参数(使用dmdba用户操作)

主库:192.168.58.30

vim /dm8/dmdata/APP/dm.ini

#修改内容如下:
INSTANCE_NAME = NODE1    # 主库实例名
PORT_NUM = 5236    # 数据库实例监听端口
ALTER_MODE_STATUS = 0    # 0不允许手工方式修改实例模式/状态,1是允许
ENABLE_OFFLINE_TS = 2    # 不允许备库OFFLINE(脱机)表空间
MAL_INI = 1    # 打开MAL系统
ARCH_INI = 1    # 打开归档配置
TIMER_INI = 1    # 打开定时器配置,除异步备库外的主备库需要

备库:192.168.58.31

vim /dm8/dmdata/APP/dm.ini

#修改内容如下:
INSTANCE_NAME = NODE2    # 主库实例名
PORT_NUM = 5236    # 数据库实例监听端口
ALTER_MODE_STATUS = 0    # 0不允许手工方式修改实例模式/状态,1是允许
ENABLE_OFFLINE_TS = 2    # 不允许备库OFFLINE(脱机)表空间
MAL_INI = 1    # 打开MAL系统
ARCH_INI = 1    # 打开归档配置

7、配置dmmal.ini文件(使用dmdba用户操作)

集群中所有节点dmmal.ini文件内容必须一致。

主库和备库:192.168.58.30、192.168.58.31

vim /dm8/dmdata/APP/dmmal.ini

# 添加内容:
MAL_CHECK_INTERVAL = 5    # MAL系统链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5    #判定MAL系统链路断开的时间
[MAL_INST1]
MAL_INST_NAME = NODE1    # 主库实例名
MAL_HOST = 192.168.58.30    # 主库MAL系统监听TCP连接的IP地址
MAL_PORT = 5238    # 主库中MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.58.30    # 主库实例的对外服务IP地址
MAL_INST_PORT = 5236    # 主库实例的对外服务端口, 和主库dm.ini配置中的PORT_NUM一致
MAL_INST_DW_PORT = 5237    # 主库实例监听守护进程TCP连接的端口
MAL_DW_PORT = 5239    # 主库中dm watcher守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME=NODE2    # 备库实例名
MAL_HOST = 192.168.58.31    # 备库MAL系统监听TCP连接的IP地址
MAL_PORT = 5238    # 备库MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.58.31    # 备库实例的对外服务 IP 地址
MAL_INST_PORT = 5236    # 备库实例的对外服务端口, 和dm.ini 中的 PORT_NUM 一致
MAL_INST_DW_PORT = 5237    # 备库实例监听守护进程TCP连接的端口
MAL_DW_PORT = 5239    # 备库中dm watcher守护进程监听 TCP 连接的端口

8、配置归档dmarch.ini文件(使用dmdba用户操作)

主库:192.168.58.30

vim /dm8/dmdata/APP/dmarch.ini

# 添加如下:
[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC    # 异步归档类型
ARCH_DEST = NODE2    # 异步归档目标实例名(主库侧填写异步备库实例名)
ARCH_TIMER_NAME = RT_TIMER  #定时器名称,和 dmtimer.ini 中的名称一致
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL    # 本地归档类型
ARCH_DEST = /dm8/dmarch    # 本地归档文件存放路径
ARCH_FILE_SIZE = 128    # 单位 Mb ,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0    # 单位 Mb ,0表示无限制,范围 1024~4294967294M

备库:192.168.58.31

vim /dm8/dmdata/APP/dmarch.ini

# 内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL    # 本地归档类型
ARCH_DEST = /dm8/dmarch    # 本地归档文件存放路径
ARCH_FILE_SIZE = 128    # 单位 Mb ,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0    # 单位 Mb ,0表示无限制,范围 1024~4294967294M

9、配置dmtimer.ini文件(使用dmdba用户操作)

主库配置就行,备库不需要配置

主库:

vim /dm8/dmdata/APP/dmtimer.ini

# 添加内容如下
[RT_TIMER]  #定时器名称,跟主库dmarch.ini
TYPE = 2
FREQ_MONTH_WEEK_INTERVAL = 1 #当 TYPE=2 时,表示每隔几天执行
FREQ_SUB_INTERVAL = 1  #间隔天数
FREQ_MINUTE_INTERVAL = 1 #间隔分钟数
START_TIME = 00:00:00 #定时器开始时间
END_TIME = 00:00:00 #定时器结束时间
DURING_START_DATE = 2016-02-11 17:36:09  #开始日期
DURING_END_DATE = 9999-12-31 23:59:59 #结束日期
NO_END_DATE_FLAG = 1 #是否结束标记
IS_VALID=1  #定时器有效标记

10、配置dmwatcher.ini(使用dmdba用户操作)

主库:192.168.58.30

vim /dm8/dmdata/APP/dmwatcher.ini

# 内容如下:
[GRP1]
DW_TYPE = LOCAL    # 本地守护类型,一主库一异步备库,选择本地守护类型
DW_MODE = MANUAL    # MANUAL为手动切换模式,异步备机没有自动切换
DW_ERROR_TIME = 10    # 远程守护进程故障认定时间
INST_RECOVER_TIME = 60    # 主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10    # 本地实例故障认定时间
INST_OGUID = 240605    # 守护进程唯一OGUID值
INST_INI = /dm8/dmdata/APP/dm.ini    # dm.ini配置文件路径
INST_AUTO_RESTART = 0    # 0关闭实例的自动启动功能,1是打开
INST_STARTUP_CMD = /dm8/dminstall/bin/dmserver    # 命令行方式启动

备库:192.168.58.31

vim /dm8/dmdata/APP/dmwatcher.ini

# 内容如下:
[GRP1]
DW_TYPE = LOCAL    # 本地守护类型,一主库一异步备库,选择本地守护类型
DW_MODE = MANUAL    # MANUAL为手动切换模式,异步备机没有自动切换
DW_ERROR_TIME = 10    # 远程守护进程故障认定时间
INST_RECOVER_TIME = 60    # 主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10    # 本地实例故障认定时间
INST_OGUID = 240605    # 守护进程唯一OGUID值
INST_INI = /dm8/dmdata/APP/dm.ini    # dm.ini配置文件路径
INST_AUTO_RESTART = 0    # 0关闭实例的自动启动功能,1是打开
INST_STARTUP_CMD = /dm8/dminstall/bin/dmserver    # 命令行方式启动

11、配置监视器(192.168.58.32机器使用dmdba用户操作)

配置监视器,一般选择主备库以外的其他机器,安装了达梦服务端的即可),其中 MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。

su - dmdba
vim /dm8/dmdata/dmmonitor.ini

# 添加内容如下:
MON_DW_CONFIRM = 0    # 1是确认监视器模式,0是非确认监视器
MON_LOG_PATH = /dm8/dmdata/log    # 监视器日志文件存放路径
MON_LOG_INTERVAL = 60    # 每隔 60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32    # 每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0    # 不限定日志文件总占用空间

# 守护进程组,跟dmwatcher.ini文件里面的组对应
[GRP1]
MON_INST_OGUID = 240605    # 组 GRP1的唯一OGUID值
MON_DW_IP = 192.168.58.30:5239
MON_DW_IP = 192.168.58.31:5239

12、以 mount 模式启动主备库(使用dmdba用户操作)

注意:

一定要以 Mount 方式启动数据库实例,否则系统启动时会重构回滚表空间, 生成 Redo 日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。

主库:192.168.58.30

cd /dm8/dminstall/bin
./dmserver /dm8/dmdata/APP/dm.ini mount

备库:192.168.58.31

cd /dm8/dminstall/bin
./dmserver /dm8/dmdata/APP/dm.ini mount

13、设置 OGUID并修改主备库模式(使用dmdba用户操作)

主库:192.168.58.30

# 新开一个窗口操作
su - dmdba

# 启动命令行工具 DIsql,登录主库设置 OGUID 值为 240605,并修改为主库模式
cd /dm8/dminstall/bin
./disql SYSDBA/SYSDBA@192.168.58.30:5236
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
sp_set_oguid(240605); 
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
exit

备库:192.168.58.31

# 新开一个窗口操作
su - dmdba

# 启动命令行工具 DIsql,登录备库设置 OGUID 值为 240605,并修改为备库模式
cd /dm8/dminstall/bin
./disql SYSDBA/SYSDBA@192.168.58.31:5236
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
sp_set_oguid(240605); 
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
exit

14、主备启动数据库守护和监视器(使用dmdba用户操作)

主库:192.168.58.30

启动数据守护进程:

su - dmdba
cd /dm8/dminstall/bin
./dmwatcher /dm8/dmdata/APP/dmwatcher.ini

查看数据库状态:先执行完下面备库的守护进程启动命令再查看

# 另开一个窗口操作
su - dmdba
cd /dm8/dminstall/bin
./disql SYSDBA/SYSDBA@192.168.58.30:5236
select STATUS$ from v$instance;
# 显示内容如下:
行号     STATUS$
---------- -------
1          OPEN

备库:192.168.58.31

启动数据守护进程:

su - dmdba
cd /dm8/dminstall/bin
./dmwatcher /dm8/dmdata/APP/dmwatcher.ini

查看数据库状态:

# 另开一个窗口操作
su - dmdba
cd /dm8/dminstall/bin
./disql SYSDBA/SYSDBA@192.168.58.31:5236
select STATUS$ from v$instance;
# 显示内容如下:
行号     STATUS$
---------- -------
1          OPEN

监视器:192.168.58.32

启动监视器:查看主备集群运行情况:

cd /dm8/dminstall/bin
./dmmonitor /dm8/dmdata/dmmonitor.ini
# 通过show命令查看主备集群信息
show

15、主备同步测试(使用dmdba用户操作)

异步备机数据并不是实时同步(定时器配置文件 dmtimer.ini ),可以配置2-3分钟触发。如果间隔时间比较长,那么我们在主库操作时,可以通过监视器,手动指定异步备库重演到当前时间,这样备库就可以查到数据了。

set database [group_name.]db_name until time time_value

主库:192.168.58.30

cd /dm8/dminstall/bin
./disql SYSDBA/SYSDBA@192.168.58.30:5236
# 新建一个表,并插入数据
create table test(id int,username varchar(20),age int);
insert into test(id,username,age) values (1,'张三',18),(2,'李四',19);
commit;
exit

备库:192.168.58.31

cd /dm8/dminstall/bin
./disql SYSDBA/SYSDBA@192.168.58.31:5236
# 等几分钟执行,查看test表是否有数据
select * from test;
exit

如果上面的操作都没有什么问题,主备集群状态都正常,按照顺序关闭监视器、备库数据守护进程、主库数据守护进程、主库实例、备库实例。

16、注册集群服务(使用root用户操作)

主库:192.168.58.30

注册数据守护进程服务:

需要root用户登录注册服务:

/dm8/dminstall/script/root/dm_service_installer.sh -t dmwatcher -p NODE1 -watcher_ini /dm8/dmdata/APP/dmwatcher.ini

# 禁用数据守护进程开机自启
systemctl disable DmWatcherServiceNODE1.service

备库:192.168.58.31

注册数据守护进程服务:

将守护进程注册为服务(数据库会由数据守护自动拉起),需要root用户登录注册服务:

/dm8/dminstall/script/root/dm_service_installer.sh -t dmwatcher -p NODE2 -watcher_ini /dm8/dmdata/APP/dmwatcher.ini

# 禁用数据守护进程开机自启
systemctl disable DmWatcherServiceNODE2.service

注册器:192.168.58.32

将确认监视器注册为服务:

root用户登录注册服务。

/dm8/dminstall/script/root/dm_service_installer.sh -t dmmonitor -p APP -monitor_ini /dm8/dmdata/dmmonitor.ini
# -p 原本是指定实例名,但是这个监视器是部署到第三台机器上,没有数据库实例,所以就使用主备库中APP数据库名

# 关闭自启动服务:
systemctl disable DmMonitorServiceAPP.service

创建非确认监视器用于管理:

su - dmdba
cp /dm8/dmdata/dmmonitor.ini /dm8/dmdata/dmmonitor_0.ini

vim /dm8/dmdata/dmmonitor_0.ini
# 修改dmmonitor_0.ini文件,内容如下:
MON_DW_CONFIRM = 0 # 0非确认监视器模式

17、修改后台启动文件,配置以mount启动(使用dmdba用户操作)

主库:192.168.58.30

su - dmdba
cd /dm8/dminstall/bin

vim DmServiceNODE1
# 修改内容
START_MODE=open改为START_MODE=mount

备库:192.168.58.31

su - dmdba
cd /dm8/dminstall/bin

vim DmServiceNODE2
# 修改内容
START_MODE=open改为START_MODE=mount

18、启动实时主备守护集群(使用dmdba用户操作)

1、启动主库实例(192.168.58.30)

cd /dm8/dminstall/bin
./DmServiceNODE1 start

2、启动备库实例(192.168.58.31)

cd /dm8/dminstall/bin
./DmServiceNODE2 start

3、启动主库守护进程(192.168.58.30)

cd /dm8/dminstall/bin
./DmWatcherServiceNODE1 start

4、启动备库守护进程(192.168.58.31)

cd /dm8/dminstall/bin
./DmWatcherServiceNODE2 start

5、启动监视器(192.168.58.32)

启动确认监视器:

cd /dm8/dminstall/bin
./DmMonitorServiceAPP start

启动非确认监视器查看主备运行情况:

/dm8/dminstall/bin/dmmonitor /dm8/dmdata/dmmonitor_0.ini

19、配置dm_svc.conf(使用dmdba用户操作)

dm_svc.conf配置文件,Windows平台下位于%SystemRoot%\system32目录中,Linux平台下位于/etc目录。

参数说明:

  • LOGIN_MODE:指定优先登录的服务器模式。0:优先连接 Primary 模式的库,Normal 模式次之, 最后选择 Stantby 模式;1:只连接主库;2:只连接备库;3:优先连接 Standby 模式的库,Primary 模式次之,最后选择Normal模式;4:优先连接Normal模式的库,Primary 模式次之,最后选择 Standby 模式。默认值为 4。

  • SWITCH_TIME:检测到数据库实例故障时,接口在服务器之间切换的次数;超过设置次数没有连接到有效数据库时,断开连接并报错。有效值范围 1~9223372036854775807,默认值为 3。

  • SWITCH_INTERVAL:表示在服务器之间切换的时间间隔 ,单位为毫秒,默认值为 200,有效值范围是1~9223372036854775807。

主库:192.168.58.30

vim  /etc/dm_svc.conf

# 添加内容如下:
TIME_ZONE=(+8:00)
LANGUAGE=(cn)
DM_APP=(192.168.58.30:5236,192.168.58.31:5236)
 
[DM_APP]
LOGIN_MODE=(1)
SWITCH_TIME=2000
SWITCH_INTERVAL=10

测试:

/dm8/dminstall/bin/disql SYSDBA/SYSDBA@DM_APP

备库:192.168.58.31

vim  /etc/dm_svc.conf

# 添加内容如下:
TIME_ZONE=(+8:00)
LANGUAGE=(cn)
DM_APP=(192.168.58.30:5236,192.168.58.31:5236)
 
[DM_APP]
LOGIN_MODE=(1)
SWITCH_TIME=2000
SWITCH_INTERVAL=10

测试:

/dm8/dminstall/bin/disql SYSDBA/SYSDBA@DM_APP

 大家想学习达梦数据库或者解决报错问题,可以去达梦数据库社区地址(https://eco.dameng.com

制作不易,各位看官如果觉得还可以,对您有帮助,请给小弟一键三连鼓励一下,后续还会继续保持 

### 达梦数据库中的DSC与ASN概述 达梦数据库(DM Database)是一种高性能的关系型数据库管理系统,在分布式环境中提供了多种功能支持,其中包括 **Distributed Storage Cluster (DSC)** 和 **Asynchronous Standby Node (ASN)** 的配置选项。 #### Distributed Storage Cluster (DSC) DSC 是一种用于实现高可用性和数据冗余的技术方案。它通过多个节点之间的协作来提供一致的数据存储服务[^1]。具体来说: - DSC 支持跨物理服务器部署,从而提高系统的可靠性和性能。 - 数据会在集群内的不同节点间同步复制,确保即使某个节点发生故障,整个系统仍然可以正常运行并保持数据一致性[^2]。 #### Asynchronous Standby Node (ASN) ASN 则是指异步用节点的功能模块。它的主要作用是在主架构下减少延迟时间的同时保障灾难恢复能力[^3]。以下是其特点描述: - 主库向从库传输日志文件时采用的是异步方式,这意味着不会因为等待确认而阻塞事务提交过程。 - 虽然这种方式可能会带来短暂的数据丢失风险,但在某些场景下能够显著提升整体吞吐量。 --- ### 配置方法详解 对于这两种特性的实际应用而言,合理的参数调整至关重要。下面分别介绍它们各自的设置流程以及注意事项。 #### 一、DSC 配置指南 要启用 DSC 功能,需完成以下几个方面的准工作: 1. 修改 `dm.ini` 文件以指定参与该组网的所有成员地址列表; ```ini [NETWORK] LOCAL_HOST=192.168.x.y REMOTE_HOSTS="192.168.a.b,192.168.c.d" ``` 2. 设置心跳检测间隔及时长阈值等网络通信相关属性; 3. 同样重要的一点是定义好磁盘映射关系表,使得各实例都能访问到相同的逻辑卷路径; 以上操作完成后重启服务即可生效[^4]。 #### 二、ASN 参数调优建议 针对 ASN 场景下的优化措施主要包括但不限于以下几点: - 增大归档缓冲区大小 (`ARCH_BUF_SIZE`) 来降低频繁写入硬盘造成的开销; - 减少最大重做记录数限制 (`MAX_LOG_RECORD_COUNT`) ,防止单次批量发送过多变更内容引起网络拥塞现象的发生; - 如果条件允许的话还可以考虑开启压缩算法开关(`COMPRESS_ARCHIVE_LOG`)进一步节约带宽资源消耗[^5]。 ```sql ALTER SYSTEM SET ARCH_BUF_SIZE = '67108864'; ALTER SYSTEM SET MAX_LOG_RECORD_COUNT = '100000'; ALTER SYSTEM SET COMPRESS_ARCHIVE_LOG = TRUE; ``` --- ### 小结 无论是构建基于共享存储模式的 DSC 还是设计满足最终一致性需求的 ASN 方案都需要深入理解业务特性并与之匹配相应的技术手段才能达到最佳效果。希望上述资料能帮助您更好地掌握这两项关键技术的应用要点!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值