OpenEuler部署DM8主备复制集群

news/2025/2/11 14:23:50/文章来源:https://www.cnblogs.com/tiany1224/p/18709666

案例说明:
在OpenEuler系统上部署DM8的主备复制架构。

系统环境:

[root@node209 dm]# cat /etc/os-release
NAME="openEuler"
VERSION="20.03 (LTS-SP4)"
ID="openEuler"
VERSION_ID="20.03"
PRETTY_NAME="openEuler 20.03 (LTS-SP4)"
ANSI_COLOR="0;31"

系统架构:

节点信息:

一、部署安装DM8(所有节点)
1、软件包校验

[root@node208 dm]# sha256sum dm8_20240712_x86_rh7_64.iso
bdc89febd19ef051050b47446c21f2354aa03aba0e6cca1f98e3c51d35fdcaf5  dm8_20240712_x86_rh7_64.iso[root@node208 dm]# cat dm8_20240712_x86_rh7_64.iso_SHA256.txt
bdc89febd19ef051050b47446c21f2354aa03aba0e6cca1f98e3c51d35fdcaf5

2、配置数据库用户

[root@node208 dm]# id dmdba
uid=205(dmdba) gid=2003(dinstall) groups=2003(dinstall)

3、配置内核参数

[root@node208 dm]# sysctl -p
kernel.sysrq = 0
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
kernel.dmesg_restrict = 1
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_retries2 = 12
net.ipv4.ip_local_reserved_ports = 15400-15407,20050-20057
net.core.netdev_max_backlog = 65535
kernel.shmall = 1152921504606846720
kernel.shmmax = 18446744073709551615
fs.file-max = 7672460
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
vm.vfs_cache_pressure = 200
vm.swappiness = 20
net.core.wmem_max = 21299200
net.core.rmem_max = 21299200
net.core.wmem_default = 21299200
net.core.rmem_default = 21299200
kernel.sem = 250 6400000 1000 25600
net.ipv4.tcp_rmem = 8192 250000 16777216
net.ipv4.tcp_wmem = 8192 250000 16777216
vm.min_free_kbytes = 112111
net.ipv4.tcp_max_syn_backlog = 65535
net.core.somaxconn = 65535

4、创建系统目录

# 软件包存储目录
[dmdba@node208 ~]$ mkdir -p dmdbms
# 数据库存储目录
[dmdba@node208 ~]$ mkdir -p dmdata

5、安装数据库软件
如下所示,软件部署检查/tmp空间失败:

[dmdba@node208 mnt]$ ./DMInstall.bin -i
Installer Language:
[1]: 简体中文
[2]: English
Please select the installer's language [2]:
The Temp Directory's size is too small, please set the size more than 2G. Or set DM_INSTALL_TMPDIR environment variable to assign the temporary directory of DM Installer.

1)查看系统/tmp
如下所示,系统/tmp大小为1.1G ,不满足软件部署要求:

[dmdba@node208 mnt]$ df -h
.......
tmpfs                       1.1G  4.0K  1.1G   1% /tmp

2)调整/tmp空间

[root@node208 dm]# cat /etc/fstab
........
tmpfs                           /tmp              tmpfs nodev,nosuid,size=3G 0 0

3)重新mount文件系统
[root@node208 dm]# mount -o remount,size=3G /tmp

4)查看/tmp文件系统

[root@node208 dm]# df -h
.......
tmpfs                       3.0G  4.0K  3.0G   1% /tmp

执行软件部署:

[dmdba@node208 mnt]$ ./DMInstall.bin -i
Installer Language:
[1]: 简体中文
[2]: English
Please select the installer's language [2]:
Extract install files.........
Hardware architecture verification passed!
Welcome to DM DBMS InstallerWhether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:no
Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:No
Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:nWhether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:Y
TimeZone:
[ 1]: (GTM-12:00) West Date Line
[ 2]: (GTM-11:00) Samoa
[ 3]: (GTM-10:00) Hawaii
[ 4]: (GTM-09:00) Alaska
[ 5]: (GTM-08:00) Pacific(America and Canada)
[ 6]: (GTM-07:00) Arizona
[ 7]: (GTM-06:00) Central(America and Canada)
[ 8]: (GTM-05:00) East(America and Canada)
[ 9]: (GTM-04:00) Atlantic(America and Canada)
[10]: (GTM-03:00) Brasilia
[11]: (GTM-02:00) Middle Atlantic
[12]: (GTM-01:00) Azores
[13]: (GTM) Greenwich Mean Time
[14]: (GTM+01:00) Sarajevo
[15]: (GTM+02:00) Cairo
[16]: (GTM+03:00) Moscow
[17]: (GTM+04:00) AbuDhabi
[18]: (GTM+05:00) Islamabad
[19]: (GTM+06:00) Dakar
[20]: (GTM+07:00) BangKok,Hanoi
[21]: (GTM+08:00) China
[22]: (GTM+09:00) Seoul
[23]: (GTM+10:00) Guam
[24]: (GTM+11:00) Solomon
[25]: (GTM+12:00) Fiji
[26]: (GTM+13:00) Nukualofa
[27]: (GTM+14:00) Kiribati
Please Select the TimeZone [21]:Installation Type:
1 Typical
2 Server
3 Client
4 Custom
Please Input the number of the Installation Type [1 Typical]:1
Require Space: 2284MPlease Input the install path [/home/dmdba/dmdbms]:
Available Space:32G
Please Confirm the install path(/home/dmdba/dmdbms)? (Y/y:Yes N/n:No) [Y/y]:yPre-Installation Summary
Installation Location: /home/dmdba/dmdbms
Require Space: 2284M
Available Space: 32G
Version Information:
Expire Date:
Installation Type: Typical
Confirm to Install? (Y/y:Yes N/n:No):y
2025-02-08 17:06:42
[INFO] Installing DM DBMS...
2025-02-08 17:06:42
[INFO] Installing BASE Module...
2025-02-08 17:09:05
[INFO] Installing SERVER Module...
2025-02-08 17:09:21
[INFO] Installing CLIENT Module...
2025-02-08 17:10:22
[INFO] Installing DRIVERS Module...
2025-02-08 17:10:56
[INFO] Installing MANUAL Module...
2025-02-08 17:11:04
[INFO] Installing SERVICE Module...
2025-02-08 17:11:05
[INFO] Move log file to log directory.
2025-02-08 17:11:07
[INFO] Installed DM DBMS completely.Please execute the commands by root:
/home/dmdba/dmdbms/script/root/root_installer.shEnd# 执行脚本注册服务(注意:DmAPService服务,备份需要用得到)
[root@node209 dm]# /home/dmdba/dmdbms/script/root/root_installer.sh
Move /home/dmdba/dmdbms/bin/dm_svc.conf to /etc
Create the DmAPService service
Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service → /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)
Start the DmAPService service
[root@node209 dm]# systemctl status DmAPService
● DmAPService.service - DM Assistant Plug-In Service(DmAPService).Loaded: loaded (/usr/lib/systemd/system/DmAPService.service; enabled; vendor preset: disabled)Active: active (running) since Sat 2025-02-08 17:35:13 CST; 19s agoProcess: 43845 ExecStart=/home/dmdba/dmdbms/bin/DmAPService start (code=exited, status=0/SUCCESS)Main PID: 43870 (dmap)Tasks: 3Memory: 41.7MCGroup: /system.slice/DmAPService.service└─43870 /home/dmdba/dmdbms/bin/dmapFeb 08 17:34:57 node209 systemd[1]: Starting DM Assistant Plug-In Service(DmAPService)....
Feb 08 17:35:13 node209 DmAPService[43845]: [33B blob data]
Feb 08 17:35:13 node209 systemd[1]: Started DM Assistant Plug-In Service(DmAPService)..

二、创建数据库实例(数据节点)
1、初始化实例

[dmdba@node208 bin]$ ./dminit path=/home/dmdba/dmdata page_size=32 extent_size=32 log_size=2048 port_num=5236 db_name=DAMENG instance_name=DMSERVER
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-07-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLLlog file path: /home/dmdba/dmdata/DAMENG/DAMENG01.loglog file path: /home/dmdba/dmdata/DAMENG/DAMENG02.logwrite to dir [/home/dmdba/dmdata/DAMENG].
create dm database success. 2025-02-08 17:57:29

2、启动实例

[dmdba@node208 bin]$ ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
csek2_vm_t = 1408
nsql_vm_t = 328
.......
trx: 6740 purged 1 pages
trx: 6742 purged 1 pages
trx: 6744 purged 1 pages
systables desc init success.
ndct_db_load_info finished, code:0.
nsvr_process_before_open begin.
nsvr_process_before_open success.
SYSTEM IS READY.

3、查看数据库服务状态

[root@node208 ~]# ps -ef |grep dmserver
dmdba     195430  194673 16 17:58 pts/0    00:00:10 ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini
[root@node208 ~]# netstat -antlp |grep 5236
tcp6       0      0 :::5236                 :::*                    LISTEN      195430/./dmserver

4、停止实例

exitServer is stopping...
listener closed and all sessions disconnected
adjust undo_retention & wakeup purge thread...full check point starting...
generate force checkpoint, rlog free space[4281253888], used space[13705216]
checkpoint begin, used_space[13705216], free_space[4281253888]...
full check point end.
.......
shutdown huge buffer and memory pools...OK
close lsnr socket
DM Database Server shutdown successfully.

三、构建主备复制架构

1、主节点执行备份

[dmdba@node208 bin]$ ./dmrman CTLSTMT="BACKUP DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE_01 BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01' COMPRESSED"
dmrman V8
BACKUP DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE_01 BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01' COMPRESSED
file dm.key not found, use default license!
Processing backupset /home/dmdba/dmdata/BACKUP_FILE_01
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
backup successfully!
time used: 00:00:03.951#查看备份:
[dmdba@node208 ~]$ cd dmdata/
[dmdba@node208 dmdata]$ ls -lh
total 8.0K
drwxr-xr-x 2 dmdba dinstall 4.0K Feb  8 18:09 BACKUP_FILE_01
drwxr-xr-x 6 dmdba dinstall 4.0K Feb  8 18:05 DAMENG
[dmdba@node208 dmdata]$ cd BACKUP_FILE_01/
[dmdba@node208 BACKUP_FILE_01]$ ls -lh
total 1.4M
-rw-r--r-- 1 dmdba dinstall 1.2M Feb  8 18:09 BACKUP_FILE_01.bak
-rw-r--r-- 1 dmdba dinstall 106K Feb  8 18:09 BACKUP_FILE_01.meta

2、备库执行数据库恢复

# 拷贝备份到备节点:
[dmdba@node208 ~]$ scp -r dmdata/BACKUP_FILE_01 node209:/home/dmdba/dmdata/# 备节点恢复:
[dmdba@node209 bin]$ ./dmrman CTLSTMT="RESTORE DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01'"
dmrman V8
RESTORE DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01'
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00]
restore successfully.
time used: 00:00:04.422# recovery database:
[dmdba@node209 bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01'"
dmrman V8
RECOVER DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01'
file dm.key not found, use default license!
recover successfully!
time used: 683.114(ms)[dmdba@node209 bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
recover successfully!
time used: 00:00:01.218

3、配置集群配置文件

  • dm.ini
# 主机点:#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME  = dm01
PORT_NUM  = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL  = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS  = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS  = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI  = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息# 备节点:#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME  = dm02
PORT_NUM  = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL  = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS  = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS  = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI  = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
  • dmarch.ini(归档日志配置文件)
# 主节点:[dmdba@node208 DAMENG]$ cat dmarch.ini
ARCH_WAIT_APPLY=0
[ARCHIVE_REALTIME1]
ARCH_TYPE =  REALTIME #远程实时归档
ARCH_DEST = dm02  #实时归档目标实例名(当数据库dm02是主库时同步到其他目标实例)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 2048  #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT  = 204800 #单位 Mb,0 表示无限制,范围 1024~4294967294M#备节点:[dmdba@node209 DAMENG]$ cat dmarch.ini
ARCH_WAIT_APPLY=0
[ARCHIVE_REALTIME1]
ARCH_TYPE =  REALTIME #远程实时归档
ARCH_DEST = dm01  #实时归档目标实例名(当数据库GRP1_RT_02是主库时同步到其他目标实例)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 2048  #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT  = 204800 #单位 Mb,0 表示无限制,范围 1024~4294967294M
  • dmwatcher.ini(主备节点一致)
[dmdba@node208 DAMENG]$ cat dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 120  #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 120  #本地实例故障认定时间
INST_OGUID = 453332  #守护系统唯一 OGUID 值
INST_INI = /home/dmdba/dmdata/DAMENG/dm.ini  #dm.ini 实例配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmService5236 start #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
  • dmmail.ini(主备节点一致)
[dmdba@node208 DAMENG]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 60                 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 60     #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME  = dm01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST  = 192.168.1.208       #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5256                                 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST  = 192.168.1.208 #实例的对外服务 IP 地址
MAL_INST_PORT  = 5236                   #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5266              #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT  = 5246        #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = dm02
MAL_HOST = 192.168.1.209
MAL_PORT = 5256
MAL_INST_HOST = 192.168.1.209
MAL_INST_PORT = 5236
MAL_DW_PORT = 5266
MAL_INST_DW_PORT  = 5246
  • dmmonitor_0.ini(主备节点和监控节点一致,基础监控)
[dmdba@node208 DAMENG]$ cat dmmonitor_0.ini
MON_DW_CONFIRM = 0 #确认监视器模式
MON_LOG_PATH = /home/dmdba/dmdata/DAMENG/dmmonitorlog #监视器日志文件存放路径
MON_LOG_INTERVAL  = 60  #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32  #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453332 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.1.208:5266
MON_DW_IP = 192.168.1.209:5266
  • dmmonitor_1.ini(monitor节点配置,监控确认)
[dmdba@node203 bin]$ cat ../../dmdata/DAMENG/dmmonitor_1.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /home/dmdba/dmdata/DAMENG/dmmonitorlog #监视器日志文件存放路径
MON_LOG_INTERVAL  = 60  #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32  #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453332 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.1.208:5266
MON_DW_IP = 192.168.1.209:5266

4、配置主备节点
启动主库到mount,并配置为主节点:

[dmdba@node208 bin]$ ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini mount
file dm.key not found, use default license!
version info: develop
csek2_vm_t = 1408
.......
uthr_pipe_create, create pipe[read:44, write:45]
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info finished, code:0.
SYSTEM IS READY.# 主节点开启新的session:
[dmdba@node208 bin]$ ./disql SYSDBA/SYSDBA:5236Server[LOCALHOST:5236]:mode is normal, state is mount
login used time : 9.314(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
DMSQL executed successfully
used time: 17.244(ms). Execute id is 1.SQL> ALTER DATABASE PRIMARY;
executed successfully
used time: 25.808(ms). Execute id is 0.SQL> SP_SET_OGUID(453332);
DMSQL executed successfully
used time: 22.211(ms). Execute id is 2.SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
DMSQL executed successfully
used time: 13.946(ms). Execute id is 3.
SQL>

启动主库到mount,并配置为备节点:

[dmdba@node209 bin]$ ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini mount
file dm.key not found, use default license!
version info: develop
......
uthr_pipe_create, create pipe[read:46, write:47]
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info finished, code:0.
SYSTEM IS READY.# 开启新的session:
[dmdba@node209 bin]$ ./disql SYSDBA/SYSDBA:5236Server[LOCALHOST:5236]:mode is normal, state is mount
login used time : 8.764(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
DMSQL executed successfully
used time: 17.415(ms). Execute id is 1.
SQL> ALTER DATABASE STANDBY;
executed successfully
used time: 50.691(ms). Execute id is 0.
SQL> SP_SET_OGUID(453332);
DMSQL executed successfully
used time: 26.219(ms). Execute id is 2.
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
DMSQL executed successfully
used time: 12.890(ms). Execute id is 3.
SQL>

5、启动monitor(任意节点)

[dmdba@node208 bin]$ ./dmmonitor /home/dmdba/dmdata/DAMENG/dmmonitor_0.ini &
[1] 207833
[dmdba@node208 bin]$ [monitor]         2025-02-08 18:44:53: DMMONITOR[4.0] V8
[monitor]         2025-02-08 18:44:54: DMMONITOR[4.0] IS READY.

6、启动dmwatcher守护进程(数据节点)

# 主节点:
[dmdba@node208 bin]$ ./dmwatcher /home/dmdba/dmdata/DAMENG/dmwatcher.ini &
[2] 208198# 备节点:
[dmdba@node209 bin]$ ./dmwatcher /home/dmdba/dmdata/DAMENG/dmwatcher.ini &
[1] 60001

7、启动dmmonitor(监控节点)

如下所示,执行show命令,可以获取到主备复制状态信息:

[dmdba@node203 bin]$ ./dmmonitor /home/dmdba/dmdata/DAMENG/dmmonitor_1.ini
[monitor]         2025-02-08 18:53:31: DMMONITOR[4.0] V8
[monitor]         2025-02-08 18:53:32: DMMONITOR[4.0] IS READY.[monitor]         2025-02-08 18:53:33:
#-----------------------------------------------------------------------------------------------#
GET MONITOR CONNECT INFO FROM DMWATCHER(DM02), THE FIRST LINE IS SELF INFO.DW_CONN_TIME         MON_CONFIRM    MID            MON_IP                MON_VERSION                               
2025-02-08 18:53:33  TRUE           32172244       ::ffff:192.168.1.203  DMMONITOR[4.0] V82025-02-08 18:46:17  FALSE          210449392      ::ffff:192.168.1.208  DMMONITOR[4.0] V8#-----------------------------------------------------------------------------------------------#[monitor]         2025-02-08 18:53:33: Received message from(DM02)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN2025-02-08 18:53:34  OPEN           OK        DM02             OPEN        STANDBY   NULL     2        43477           43477[monitor]         2025-02-08 18:53:33: Received message from(DM01)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN2025-02-08 18:53:35  OPEN           OK        DM01             OPEN        PRIMARY   VALID    2        43477           43477show
2025-02-08 18:53:39
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             453332      TRUE            AUTO            FALSE<<DATABASE GLOBAL INFO:>>
DW_IP          MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.1.208  5266         2025-02-08 18:53:40  GLOBAL    VALID     OPEN           DM01             OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALIDEP INFO:
INST_IP        INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT       FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.1.208  5236       OK        DM01             OPEN        PRIMARY   0          0            REALTIME  VALID       3163            43477           3163            43477           NONE<<DATABASE GLOBAL INFO:>>
DW_IP          MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.1.209  5266         2025-02-08 18:53:39  GLOBAL    VALID     OPEN           DM02             OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALIDEP INFO:
INST_IP        INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT       FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.1.209  5236       OK        DM02             OPEN        STANDBY   0          0            REALTIME  VALID       3163            43477           3163            43477           NONEDATABASE(DM02) APPLY INFO FROM (DM01), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[3163, 3163, 3163], (RLSN, SLSN, KLSN)[43477, 43477, 43477], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (43477)#================================================================================#

四、主备集群维护操作

1、启动达梦数据库实例(主备库)

[dmdba@node208 bin]$ ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini &
[1] 19496
[dmdba@node208 bin]$ file dm.key not found, use default license!
version info: develop
csek2_vm_t = 1408
nsql_vm_t = 328
........
uthr_pipe_create, create pipe[read:44, write:45]
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info finished, code:0.
SYSTEM IS READY.[root@node208 ~]# ps -ef |grep dmserver
dmdba     195430  194673 16 17:58 pts/0    00:00:10 ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini
[dmdba@node208 bin]$ ps -ef |grep dmserver
dmdba      19496   15921 12 10:49 pts/0    00:00:02 ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini

2、启动dm watcher

[dmdba@node208 bin]$ ./dmwatcher /home/dmdba/dmdata/DAMENG/dmwatcher.ini &
[2] 20334
[dmdba@node208 bin]$ DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY[dmdba@node208 bin]$ ps aux |grep dmwatcher
dmdba      20334  0.2  0.5 391560 11516 pts/0    Sl   10:52   0:00 ./dmwatcher /home/dmdba/dmdata/DAMENG/dmwatcher.ini

3、启动dm monitor

[dmdba@node203 bin]$ ./dmmonitor /home/dmdba/dmdata/DAMENG/dmmonitor_1.ini
[monitor]         2025-02-10 10:54:41: DMMONITOR[4.0] V8
[monitor]         2025-02-10 10:54:42: DMMONITOR[4.0] IS READY.[monitor]         2025-02-10 10:54:43:
#-----------------------------------------------------------------------------------------------#
GET MONITOR CONNECT INFO FROM DMWATCHER(DM01), THE FIRST LINE IS SELF INFO.DW_CONN_TIME         MON_CONFIRM    MID            MON_IP                MON_VERSION                               
2025-02-10 10:54:44  TRUE           1669615864     ::ffff:192.168.1.203  DMMONITOR[4.0] V8#-----------------------------------------------------------------------------------------------#[monitor]         2025-02-10 10:54:44: Received message from(DM01)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN2025-02-10 10:54:45  OPEN           OK        DM01             OPEN        PRIMARY   VALID    3        43533           43533[monitor]         2025-02-10 10:54:44: Received message from(DM02)WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN2025-02-10 10:54:43  OPEN           OK        DM02             OPEN        STANDBY   VALID    3        43533           43533show
2025-02-10 10:54:54
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             453332      TRUE            AUTO            FALSE<<DATABASE GLOBAL INFO:>>
DW_IP          MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.1.208  5266         2025-02-10 10:54:55  GLOBAL    VALID     OPEN           DM01             OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALIDEP INFO:
INST_IP        INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT       FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.1.208  5236       OK        DM01             OPEN        PRIMARY   0          0            REALTIME  VALID       3165            43533           3165            43533           NONE<<DATABASE GLOBAL INFO:>>
DW_IP          MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.1.209  5266         2025-02-10 10:54:53  GLOBAL    VALID     OPEN           DM02             OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALIDEP INFO:
INST_IP        INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT       FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.1.209  5236       OK        DM02             OPEN        STANDBY   0          0            REALTIME  VALID       3165            43533           3165            43533           NONEDATABASE(DM02) APPLY INFO FROM (DM01), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[3165, 3165, 3165], (RLSN, SLSN, KLSN)[43533, 43533, 43533], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (43533)

4、连接数据库访问

[dmdba@node208 bin]$ ./disql SYSDBA/SYSDBA:5236Server[LOCALHOST:5236]:mode is primary, state is open
login used time : 12.461(ms)
disql V8
SQL> SQL> select * from v$version;LINEID     BANNER
---------- ---------------------------------
1          DM Database Server 64 V8
2          DB Version: 0x7000c
3          03134284194-20240703-234060-20108
4          Msg Version: 12
5          Gsu level(5) cnt: 0used time: 1.714(ms). Execute id is 601.

5、执行主备switchover切换
在监控主机下执行切换命令:

switchover
Be careful to do so, this operation will cause switching of primary database, continue use GRP1.DM02 to do SWITCHOVER or not(YES/NO/Y/N)?
y
[monitor]         2025-02-10 15:24:16: Not login dmmonitor or server public key changed, please try to login again!# 需要以sysdba的身份登录后执行(sysdba/SYSDBA):
login
username:sysdba
password:
[monitor]         2025-02-10 15:27:18: Login dmmonitor success!switchover
Be careful to do so, this operation will cause switching of primary database, continue use GRP1.DM02 to do SWITCHOVER or not(YES/NO/Y/N)?
y
[monitor]         2025-02-10 15:27:31: Start to switchover instance DM02
[monitor]         2025-02-10 15:27:31: Notify dmwatcher(DM01) switch to SWITCHOVER status
[monitor]         2025-02-10 15:27:31: Dmwatcher process DM01 status switching [OPEN-->SWITCHOVER]
[monitor]         2025-02-10 15:27:31: Switch dmwatcher DM01 to SWITCHOVER status success
[monitor]         2025-02-10 15:27:31: Notify dmwatcher(DM02) switch to SWITCHOVER status
[monitor]         2025-02-10 15:27:31: Dmwatcher process DM02 status switching [OPEN-->SWITCHOVER]
[monitor]         2025-02-10 15:27:31: Switch dmwatcher DM02 to SWITCHOVER status success
[monitor]         2025-02-10 15:27:31: Instance DM01 start to execute sql SP_SET_GLOBAL_DW_STATUS(0, 6)
[monitor]         2025-02-10 15:27:31: Instance DM01 execute sql SP_SET_GLOBAL_DW_STATUS(0, 6) success
[monitor]         2025-02-10 15:27:31: Instance DM02 start to execute sql SP_SET_GLOBAL_DW_STATUS(0, 6)
[monitor]         2025-02-10 15:27:31: Instance DM02 execute sql SP_SET_GLOBAL_DW_STATUS(0, 6) success
[monitor]         2025-02-10 15:27:31: Instance DM01 start to execute sql ALTER DATABASE MOUNT
[monitor]         2025-02-10 15:27:31: Instance DM01 execute sql ALTER DATABASE MOUNT success
[monitor]         2025-02-10 15:27:31: Instance DM02 start to execute sql SP_APPLY_KEEP_PKG()
[monitor]         2025-02-10 15:27:32: Instance DM02 execute sql SP_APPLY_KEEP_PKG() success
[monitor]         2025-02-10 15:27:32: Instance DM02 start to execute sql ALTER DATABASE MOUNT
[monitor]         2025-02-10 15:27:32: Instance DM02 execute sql ALTER DATABASE MOUNT success
[monitor]         2025-02-10 15:27:32: Instance DM01 start to execute sql ALTER DATABASE STANDBY
[monitor]         2025-02-10 15:27:32: Instance DM01 execute sql ALTER DATABASE STANDBY success
[monitor]         2025-02-10 15:27:32: Instance DM02 start to execute sql ALTER DATABASE PRIMARY
[monitor]         2025-02-10 15:27:32: Instance DM02 execute sql ALTER DATABASE PRIMARY success
[monitor]         2025-02-10 15:27:32: Notify instance DM02 to change all arch status to be invalid
[monitor]         2025-02-10 15:27:32: Succeed to change all instances arch status to be invalid
[monitor]         2025-02-10 15:27:32: Instance DM01 start to execute sql ALTER DATABASE OPEN FORCE
[monitor]         2025-02-10 15:27:32: Instance DM01 execute sql ALTER DATABASE OPEN FORCE success
[monitor]         2025-02-10 15:27:32: Instance DM02 start to execute sql ALTER DATABASE OPEN FORCE
[monitor]         2025-02-10 15:27:33: Instance DM02 execute sql ALTER DATABASE OPEN FORCE success
[monitor]         2025-02-10 15:27:33: Instance DM01 start to execute sql SP_SET_GLOBAL_DW_STATUS(6, 0)
[monitor]         2025-02-10 15:27:33: Instance DM01 execute sql SP_SET_GLOBAL_DW_STATUS(6, 0) success
[monitor]         2025-02-10 15:27:33: Instance DM02 start to execute sql SP_SET_GLOBAL_DW_STATUS(6, 0)
[monitor]         2025-02-10 15:27:33: Instance DM02 execute sql SP_SET_GLOBAL_DW_STATUS(6, 0) success
[monitor]         2025-02-10 15:27:33: Notify dmwatcher(DM01) switch to OPEN status
[monitor]         2025-02-10 15:27:33: Dmwatcher process DM01 status switching [SWITCHOVER-->OPEN]
[monitor]         2025-02-10 15:27:33: Switch dmwatcher DM01 to OPEN status success
[monitor]         2025-02-10 15:27:33: Notify dmwatcher(DM02) switch to OPEN status
[monitor]         2025-02-10 15:27:33: Dmwatcher process DM02 status switching [SWITCHOVER-->OPEN]
[monitor]         2025-02-10 15:27:33: Switch dmwatcher DM02 to OPEN status success
[monitor]         2025-02-10 15:27:33: Notify group(GRP1)'s dmwatcher to do clear
[monitor]         2025-02-10 15:27:33: Clean request of dmwatcher processer DM01 success
2025-02-10 15:27:34
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             453332      TRUE            AUTO            FALSE<<DATABASE GLOBAL INFO:>>
DW_IP          MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.1.209  5266         2025-02-10 15:27:33  GLOBAL    VALID     OPEN           DM02             OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALIDEP INFO:
INST_IP        INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT       FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.1.209  5236       OK        DM02             OPEN        PRIMARY   0          0            REALTIME  VALID       3192            43628           3192            43628           NONE<<DATABASE GLOBAL INFO:>>
DW_IP          MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.1.208  5266         2025-02-10 15:27:35  GLOBAL    VALID     OPEN           DM01             OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  INVALIDEP INFO:
INST_IP        INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT       FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.1.208  5236       OK        DM01             OPEN        STANDBY   0          0            REALTIME  INVALID     3190            43572           3190            43572           NONEDATABASE(DM01) APPLY INFO FROM (DM02), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[3190, 3190, 3190], (RLSN, SLSN, KLSN)[43572, 43572, 43572], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (43572)#================================================================================#[monitor]         2025-02-10 15:27:34: Clean request of dmwatcher processer DM02 success
[monitor]         2025-02-10 15:27:34: Switchover instance DM02 success[monitor]         2025-02-10 15:27:35: Dmwatcher process DM02 status switching [OPEN-->RECOVERY]WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN2025-02-10 15:27:35  RECOVERY       OK        DM02             OPEN        PRIMARY   VALID    4        43628           43628[monitor]         2025-02-10 15:27:38: Dmwatcher process DM02 status switching [RECOVERY-->OPEN]WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN2025-02-10 15:27:38  OPEN           OK        DM02             OPEN        PRIMARY   VALID    4        43628           43628show
# 如下所示,原主库DM01已经切换为standby,原备库DM02切换为primary:
2025-02-10 15:28:38
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             453332      TRUE            AUTO            FALSE<<DATABASE GLOBAL INFO:>>
DW_IP          MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.1.209  5266         2025-02-10 15:28:37  GLOBAL    VALID     OPEN           DM02             OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALIDEP INFO:
INST_IP        INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT       FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.1.209  5236       OK        DM02             OPEN        PRIMARY   0          0            REALTIME  VALID       3192            43628           3192            43628           NONE<<DATABASE GLOBAL INFO:>>
DW_IP          MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
192.168.1.208  5266         2025-02-10 15:28:39  GLOBAL    VALID     OPEN           DM01             OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALIDEP INFO:
INST_IP        INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT       FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
192.168.1.208  5236       OK        DM01             OPEN        STANDBY   0          0            REALTIME  VALID       3192            43628           3192            43628           NONEDATABASE(DM01) APPLY INFO FROM (DM02), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[3192, 3192, 3192], (RLSN, SLSN, KLSN)[43628, 43628, 43628], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (43628)#================================================================================#

6、关闭数据库服务

[dmdba@node208 bin]$ ./disql SYSDBA/SYSDBA:5236Server[LOCALHOST:5236]:mode is primary, state is open
login used time : 5.453(ms)
disql V8SQL> shutdown immediate;
executed successfully
used time: 0.570(ms). Execute id is 0.
SQL> Server is stopping...
listener closed and all sessions disconnected
adjust undo_retention & wakeup purge thread...full check point starting...
generate force checkpoint, rlog free space[4294950912], used space[8192]
checkpoint begin, used_space[8192], free_space[4294950912]...
checkpoint end, 0 pages flushed, used_space[12288], free_space[4294946816].
full check point end.
shutdown audit subsystem...OK
shutdown schedule subsystem...OK
shutdown timer successfully.
pre-shutdown MAL subsystem...OK
shutdown worker threads subsystem...OK
shutdown logic log subsystem...OK
shutdown sequence cache subsystem...OK
wait for mtsk link worker to exit..OK
shutdown mpp session subsystem...OK
wait for rapply is all over... OK
rapply worker threads exit successfully.
pre ending task & worker threads...OK
shutdown dblink subsystem...OK
shutdown local parallel threads pool successfully.
shutdown pthd_pools...OK
shutdown session subsystem...shutdown aux session subsystem...OK
shutdown rollback segments purging subsystem...OK
shutdown transaction subsystem...OK
shutdown locking subsystem...OK
shutdown dbms_lock subsystem...OK
ending tsk and worker threads...OK
ckpt2_exec_immediately begin.
checkpoint begin, used_space[12288], free_space[4294946816]...
checkpoint end, 0 pages flushed, used_space[8192], free_space[4294950912].
checkpoint begin, used_space[8192], free_space[4294950912]...
checkpoint begin, used_space[0], free_space[4294959104]...
Send apply keep buf msg to standby instance...OK
shutdown archive subsystem...OK
shutdown redo log subsystem...OK
shutdown MAL subsystem...OK
shutdown message compress subsystem successfully.
shutdown task subsystem...OK
shutdown trace subsystem...OK
shutdown svr_log subsystem...OK
shutdown plan cache subsystem...OK
shutdown database dictionary subsystem...OK
shutdown file subsystem...OK
shutdown mac cache subsystem...OK
shutdown dynamic login cache subsystem...OK
shutdown ifun/bifun/sfun/afun cache subsystem...OK
shutdown crypt subsystem...OK
shutdown pipe subsystem...OK
shutdown compress component...OK
shutdown slave redo subsystem...OK
shutdown kernel buffer subsystem...OK
shutdown SQL capture subsystem...OK
shutdown control file system...OK
shutdown dtype subsystem...OK
shutdown huge buffer and memory pools...OK
close lsnr socket
DM Database Server shutdown successfully.

参考博文:
https://blog.csdn.net/qq_37358909/article/details/143325324

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

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

相关文章

OpenEuler部署DM8主备复制

DM8、主备复制案例说明: 在OpenEuler系统上部署DM8的主备复制架构。 系统环境: [root@node209 dm]# cat /etc/os-release NAME="openEuler" VERSION="20.03 (LTS-SP4)" ID="openEuler" VERSION_ID="20.03" PRETTY_NAME="openEu…

对称密码算法

1. 定义 对称密码算法加密过程与解密过程使用相同的或容易相互推导得出的密钥,即加密和解密两方的密钥是“对称”的 2. 加解密流程用户通过加密算法将明文变换为密文。密文的具体值由密钥和加密算法共同决定。只有掌握了同一个密钥和对应解密算法的用户才可以将密文逆变换为有…

SaaS+AI应用架构:业务场景、智能体、大模型、知识库、传统工具系统

大家好,我是汤师爷~ 在SaaS与AI应用的演进过程中,合理的架构设计至关重要。本节将详细介绍其五个核心层次:业务场景层:发现和确定业务场景 智能体层:构建可复用的智能应用 大模型层:采用最合适的大模型,作为思考推理的核心 知识库:管理企业的核心知识资产 传统工具:传…

50N06-ASEMI吹风筒专用MOS管50N06

50N06-ASEMI吹风筒专用MOS管50N06编辑:ll 50N06-ASEMI吹风筒专用MOS管50N06 型号:50N06 品牌:ASEMI 封装:TO-252 最大漏源电流:50A 漏源击穿电压:60V 批号:最新 RDS(ON)Max:15mΩ 引脚数量:3 沟道类型:N沟道MOS管 芯片尺寸:MIL 漏电流: 恢复时间:ns 芯片材质: …

瑞芯微开发板/主板Android调试串口配置为普通串口方法

本文介绍瑞芯微开发板/主板Android调试串口配置为普通串口方法,不同板型找到对应文件修改,修改的方法相通。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。…

Ubuntu22.04 搭建离线APT源(apt-mirror)

1、应用场景 目前需要在Linux环境下做UE开发,Ubuntu版本使用的是22.04。项目现场是没法连到外网的,所以安装库十分不方便,所以需要搭建一套内网的离线APT源。 2、搭建步骤 2.1 资源拉取 首先需要在联网机器上将资源拉取到本地。 本教程使用使用apt-mirror拉取镜像源,使用ng…

013 Promise对象_Ajax实操

Promise封装Ajax,让网络请求的异步操作变得更简单<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><titl…

题解:P7213 [JOISC2020] 最古の遺跡 3

两种思考方式:值域维度:从原始高度大往小插入柱子,不确定右边是否有最终高度等于它的柱子,并不好记录状态。下标维度:从后往前扫描,注意到前面的对后面的后效性很小,此时不难设出一个基础的状压 DP 方程。为了避免记录后方柱子初始高度出现情况(相同初始高度有且仅有 \…

【车道线检测项目实战】

1-车道数据与标签解读 1.1数据集链接 原项目共使用两个数据集这里出于学习便捷考虑,只使用CULane的部分数据集进行训练 数据集目录1.2 list目录其中list目录下都是文件的路径1.3 frame目录 frame目录下都是视频的节帧 1.4 lable目录 lable目录下都是车道线的信息,肉眼看不出来…

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-12- iframe操作-上篇(详细教程)

1.简介 原估计宏哥这里就不对iframe这个知识点做介绍和讲解了,因为前边的窗口切换就为这种网页处理提供了思路,另一个原因就是虽然iframe很强大,但是现在很少有网站用它了。但是还是有小伙伴或者童鞋们私下问这个问题,那么宏哥就单独写一篇关于iframe网页处理的文章。ifram…

CH585 CH584 CH592 BLE设备的VID和PID

在 BLE(蓝牙低功耗)设备中,PID(Product ID,产品标识符)和 VID(Vendor ID,厂商标识符)有着重要作用,以下为你详细介绍: 区分不同设备与厂商VID 的作用:VID 是由相关管理机构分配给设备制造商的唯一标识符,用于明确设备的生产厂商。例如,像苹果、三星、英特尔等众多…

streamlit入门笔记【1】环境搭建

1. 背景 24年底交代了一个产品排行榜的工作,其实就是把开发测试等各项指标排序,指标获取和存储部分可以用requests和selenium以及xlsx、json分析等完成,展示部分使用了streamlit框架,可以把数据直接运行成简单的web app。本系列笔记将streamlit应用部分做个总结。 2. 环境搭…