【達夢MPP(帶主備)集群搭建】

達夢MPP(帶主備)集群搭建

為了提高MPP系統可靠性,克服由于單節點故障導致整個系統不能繼續正常工作的問題,DM在普通的MPP系統基礎上,引入數據守護主備機制,為每一個MPP節點配置一個實時備庫作為備份節點,必要時備庫可切換為主庫代替故障節點工作,提高系統的可靠性和可用性。我們推薦用戶在使用DM MPP時都應使用MPP主備守護系統以確保系統可靠性。
MPP主備的主要目的是為DMMPP集群提供數據可靠性保障,備庫只做數據容災、備份,MPP備庫并不是MPP集群的一部分,只是某個MPP節點(主庫)的鏡像。MPP備庫不參與MPP操作,與其他MPP備庫之間也沒有任何關系,MPP備庫只能以單節點方式提供只讀服務,但不提供全局的MPP只讀服務。
為了提高系統可靠性并節約硬件資源,DM MPP主備系統可采用交叉守護的方式,即每個EP和其對應的備庫實例不在同一臺主機上,將EP與別的EP的備庫放在一臺主機上。
完成MPP主備集群的搭建,要求如下:
1)完成MPP集群(帶主備)的部署,并測試建表和插入數據是否會根據分布列進行自動分發。
2)測試故障一個節點后,集群可持續提供服務。

一、環境規劃

配置一個兩節點的MPP(主備)集群,實例名為EP01、EP02、EP01_1和EP01_2,相關配置信息如下。

機器IP實例名實例對外端口MAL端口MAL守護進程端口守護進程端口OGUID守護組安裝目錄實例歸檔歸檔上限
A機器192.168.148.128EP01523653365436553645331GRP1/home/dmdba/dmdbms/home/dmdba/dmdbms/data51200
A機器192.168.148.128EP02523753375437553745332GRP2/home/dmdba/dmdbms/home/dmdba/dmdbms/data51200
B機器192.168.148.130EP01_1523653365436553645331GRP1/home/dmdba/dmdbms/home/dmdba/dmdbms/data51200
B機器192.168.148.130EP01_2523753375437553745332GRP2/home/dmdba/dmdbms/home/dmdba/dmdbms/data51200

二、環境搭建

2.1創建實例

2.1.1創建實例EP01
su - dmdba
cd /home/dmdba/dmdbms/bin
./dminit path=/home/dmdba/dmdbms/data/  PAGE_SIZE=32  EXTENT_SIZE=32  CASE_SENSITIVE=Y DB_NAME=EP01  INSTANCE_NAME=EP01 PORT_NUM=5236 LOG_SIZE=1024 SYSDBA_PWD=DaMeng123 SYSAUDITOR_PWD=DaMeng123
2.1.2 創建實例EP02
su - dmdba
cd /home/dmdba/dmdbms/bin
./dminit path=/home/dmdba/dmdbms/data/  PAGE_SIZE=32  EXTENT_SIZE=32  CASE_SENSITIVE=Y DB_NAME=EP02  INSTANCE_NAME=EP02 PORT_NUM=5237 LOG_SIZE=1024 SYSDBA_PWD=DaMeng123 SYSAUDITOR_PWD=DaMeng123
2.1.3 創建實例EP01_1
su - dmdba
cd /home/dmdba/dmdbms/bin
./dminit path=/home/dmdba/dmdbms/data/  PAGE_SIZE=32  EXTENT_SIZE=32  CASE_SENSITIVE=Y DB_NAME=EP01_1  INSTANCE_NAME=EP01_1 PORT_NUM=5236 LOG_SIZE=1024 SYSDBA_PWD=DaMeng123 SYSAUDITOR_PWD=DaMeng123
2.1.4 創建實例EP02_1
su - dmdba
cd /home/dmdba/dmdbms/bin
./dminit path=/home/dmdba/dmdbms/data/  PAGE_SIZE=32  EXTENT_SIZE=32  CASE_SENSITIVE=Y DB_NAME=EP02_1  INSTANCE_NAME=EP02_1 PORT_NUM=5237 LOG_SIZE=1024 SYSDBA_PWD=DaMeng123 SYSAUDITOR_PWD=DaMeng123
2.1.5 注冊服務

A機器

su root
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/data/EP01/dm.ini -p DMSERVER01
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/data/EP02/dm.ini -p DMSERVER02

B機器

su root
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/data/EP01_1/dm.ini -p DMSERVER01
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/data/EP02_1/dm.ini -p DMSERVER02
2.1.6創建成功后啟動服務

兩機器均需要執行

systemctl start DmServiceDMSERVER01.service
systemctl start DmServiceDMSERVER02.service

注意:兩臺機器關閉防火墻

systemctl stop firewalld
systemctl disable firewalld

2.2 配置EP01庫參數

2.2.1修改dm.ini
cd /home/dmdba/dmdbms/data/EP01
vim /home/dmdba/dmdbms/data/EP01/dm.ini
#configuration file
ALTER_MODE_STATUS      =      0      #不允許手工方式修改實例模式/狀態/OGUID
ENABLE_OFFLINE_TS      =      2      #不允許備庫 OFFLINE 表空間
MAL_INI                =      1      #打開 MAL 系統
ARCH_INI               =      1      #打開歸檔配置
MPP_INI                =      1      #啟用 MPP 配置
2.2.2創建dmmal.ini
vim /home/dmdba/dmdbms/data/EP01/dmmal.ini
MAL_CHECK_INTERVAL           =    5      #MAL 鏈路檢測時間間隔
MAL_CONN_FAIL_INTERVAL       =    5      #判定 MAL 鏈路斷開的時間

[MAL_INST1]
MAL_INST_NAME               =   EP01  #實例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST                    = 192.168.148.128  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5336     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.128  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5236      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5436  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5536  #實例監聽守護進程 TCP 連接的端口
?
[MAL_INST2]
MAL_INST_NAME               = EP02
MAL_HOST                    = 192.168.148.128  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5337     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.128  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5237      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5437  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5537  #實例監聽守護進程 TCP 連接的端口[MAL_INST3]
MAL_INST_NAME              = EP01_1
MAL_HOST                    = 192.168.148.130  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5336     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.130  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5236      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5436  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5536  #實例監聽守護進程 TCP 連接的端口[MAL_INST4]
MAL_INST_NAME              = EP02_1
MAL_HOST                    = 192.168.148.130  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5337     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.130  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5237     #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5437  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5537  #實例監聽守護進程 TCP 連接的端口
2.2.3創建dmarch.ini
vim /home/dmdba/dmdbms/data/EP01/dmarch.ini
#DaMeng Database Archive Configuration file
#0:高性能,1:事務一致
ARCH_WAIT_APPLY      	 = 0        
[ARCHIVE_LOCAL1]
#本地歸檔類型
ARCH_TYPE            = LOCAL        
#本地歸檔存放路徑 
ARCH_DEST            = /home/dmdba/dmdbms/data/EP01/arch  
ARCH_FILE_SIZE       = 1024
ARCH_SPACE_LIMIT     = 51200
ARCH_FLUSH_BUF_SIZE  = 2    
ARCH_HANG_FLAG       = 1
[ARCHIVE_REALTIME1]
#實時歸檔類型
ARCH_TYPE            = REALTIME
#實時歸檔目標實例名
ARCH_DEST            = EP01_1
2.2.4配置dmmpp.ini
vim /home/dmdba/dmdbms/data/EP01/dmmpp.ini
[SERVICE_NAME1] 
MPP_SEQ_NO = 0 
MPP_INST_NAME = EP01[SERVICE_NAME2] 
MPP_SEQ_NO = 1 
MPP_INST_NAME = EP02

#使用DM提供的工具dmctlcvt將dmmpp.ini轉換成dmmpp.ctl,dmctlcvt工具在DM安裝目錄的“bin”子目錄中。
轉換生成的dmmpp.ctl需要放在與dm.ini同一個目錄。下面的命令將dmmpp.ini轉換為dmmpp.ctl,命令中的“TYPE=2”參數表示將文本文件轉換成控制文件,也可以使用“TYPE=1”參數進行逆向轉換。

su - root
chown -R dmdba:2002 /home/dmdba/dmdbms
chmod -R 755 /home/dmdba/dmdbms
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmctlcvt TYPE=2 SRC=/home/dmdba/dmdbms/data/EP01/dmmpp.ini  DEST=/home/dmdba/dmdbms/data/EP01/dmmpp.ctl

2.3 配置EP02庫參數

2.3.1修改dm.ini
cd /home/dmdba/dmdbms/data/EP02
vim /home/dmdba/dmdbms/data/EP02/dm.ini
#configuration file
ALTER_MODE_STATUS      =      0      #不允許手工方式修改實例模式/狀態/OGUID
ENABLE_OFFLINE_TS      =      2      #不允許備庫 OFFLINE 表空間
MAL_INI                =      1      #打開 MAL 系統
ARCH_INI               =      1      #打開歸檔配置
MPP_INI                =      1      #啟用 MPP 配置
2.3.2創建dmmal.ini
vim /home/dmdba/dmdbms/data/EP02/dmmal.ini
MAL_CHECK_INTERVAL           =    5      #MAL 鏈路檢測時間間隔
MAL_CONN_FAIL_INTERVAL       =    5      #判定 MAL 鏈路斷開的時間[MAL_INST1]
MAL_INST_NAME               =   EP01  #實例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST                    = 192.168.148.128  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5336     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.128  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5236      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5436  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5536  #實例監聽守護進程 TCP 連接的端口
?
[MAL_INST2]
MAL_INST_NAME               = EP02
MAL_HOST                    = 192.168.148.128  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5337     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.128  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5237      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5437  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5537  #實例監聽守護進程 TCP 連接的端口[MAL_INST3]
MAL_INST_NAME              = EP01_1
MAL_HOST                    = 192.168.148.130  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5336     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.130  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5236      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5436  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5536  #實例監聽守護進程 TCP 連接的端口[MAL_INST4]
MAL_INST_NAME              = EP02_1
MAL_HOST                    = 192.168.148.130  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5337     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.130  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5237     #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5437  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5537  #實例監聽守護進程 TCP 連接的端口
2.3.3創建dmarch.ini
vim /home/dmdba/dmdbms/data/EP01/dmarch.ini
#DaMeng Database Archive Configuration file
#0:高性能,1:事務一致
ARCH_WAIT_APPLY      	 = 0        
[ARCHIVE_LOCAL1]
#本地歸檔類型
ARCH_TYPE            = LOCAL        
#本地歸檔存放路徑 
ARCH_DEST            = /home/dmdba/dmdbms/data/EP02/arch  
ARCH_FILE_SIZE       = 1024
ARCH_SPACE_LIMIT     = 51200
ARCH_FLUSH_BUF_SIZE  = 2    
ARCH_HANG_FLAG       = 1
[ARCHIVE_REALTIME1]
#實時歸檔類型
ARCH_TYPE            = REALTIME
#實時歸檔目標實例名
ARCH_DEST            = EP02_1
2.3.4配置dmmpp.ini
vim /home/dmdba/dmdbms/data/EP02/dmmpp.ini
[SERVICE_NAME1] 
MPP_SEQ_NO = 0 
MPP_INST_NAME = EP01[SERVICE_NAME2] 
MPP_SEQ_NO = 1 
MPP_INST_NAME = EP02

使用DM提供的工具dmctlcvt將dmmpp.ini轉換成dmmpp.ctl,dmctlcvt工具在DM安裝目錄的“bin”子目錄中。
轉換生成的dmmpp.ctl需要放在與dm.ini同一個目錄。下面的命令將dmmpp.ini轉換為dmmpp.ctl,命令中的“TYPE=2”參數表示將文本文件轉換成控制文件,也可以使用“TYPE=1”參數進行逆向轉換。

su - root
chown -R dmdba:2002 /home/dmdba/dmdbms
chmod -R 755 /home/dmdba/dmdbms
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmctlcvt TYPE=2 SRC=/home/dmdba/dmdbms/data/EP02/dmmpp.ini  DEST=/home/dmdba/dmdbms/data/EP02/dmmpp.ctl

2.4 配置EP01_1庫參數

2.4.1修改dm.ini
cd /home/dmdba/dmdbms/data/EP01_1
vim /home/dmdba/dmdbms/data/EP01_1/dm.ini
#configuration file
ALTER_MODE_STATUS      =      0      #不允許手工方式修改實例模式/狀態/OGUID
ENABLE_OFFLINE_TS      =      2      #不允許備庫 OFFLINE 表空間
MAL_INI                =      1      #打開 MAL 系統
ARCH_INI               =      1      #打開歸檔配置
MPP_INI                =      1      #啟用 MPP 配置
2.4.2創建dmmal.ini
vim /home/dmdba/dmdbms/data/EP01_1/dmmal.ini
MAL_CHECK_INTERVAL           =    5      #MAL 鏈路檢測時間間隔
MAL_CONN_FAIL_INTERVAL       =    5      #判定 MAL 鏈路斷開的時間[MAL_INST1]
MAL_INST_NAME               =   EP01  #實例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST                    = 192.168.148.128  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5336     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.128  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5236      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5436  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5536  #實例監聽守護進程 TCP 連接的端口
?
[MAL_INST2]
MAL_INST_NAME               = EP02
MAL_HOST                    = 192.168.148.128  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5337     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.128  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5237      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5437  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5537  #實例監聽守護進程 TCP 連接的端口[MAL_INST3]
MAL_INST_NAME              = EP01_1
MAL_HOST                    = 192.168.148.130  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5336     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.130  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5236      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5436  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5536  #實例監聽守護進程 TCP 連接的端口[MAL_INST4]
MAL_INST_NAME              = EP02_1
MAL_HOST                    = 192.168.148.130  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5337     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.130  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5237     #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5437  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5537  #實例監聽守護進程 TCP 連接的端口
2.4.3創建dmarch.ini
vim /home/dmdba/dmdbms/data/EP01_1/dmarch.ini
#DaMeng Database Archive Configuration file
#0:高性能,1:事務一致
ARCH_WAIT_APPLY      	 = 0        
[ARCHIVE_LOCAL1]
#本地歸檔類型
ARCH_TYPE            = LOCAL        
#本地歸檔存放路徑 
ARCH_DEST            = /home/dmdba/dmdbms/data/EP01_1/arch  
ARCH_FILE_SIZE       = 1024
ARCH_SPACE_LIMIT     = 51200
ARCH_FLUSH_BUF_SIZE  = 2    
ARCH_HANG_FLAG       = 1
[ARCHIVE_REALTIME1]
#實時歸檔類型
ARCH_TYPE            = REALTIME
#實時歸檔目標實例名
ARCH_DEST            = EP01
2.4.4配置dmmpp.ini
vim /home/dmdba/dmdbms/data/EP01_1/dmmpp.ini
[SERVICE_NAME1] 
MPP_SEQ_NO = 0 
MPP_INST_NAME = EP01[SERVICE_NAME2] 
MPP_SEQ_NO = 1 
MPP_INST_NAME = EP02

使用DM提供的工具dmctlcvt將dmmpp.ini轉換成dmmpp.ctl,dmctlcvt工具在DM安裝目錄的“bin”子目錄中。
轉換生成的dmmpp.ctl需要放在與dm.ini同一個目錄。下面的命令將dmmpp.ini轉換為dmmpp.ctl,命令中的“TYPE=2”參數表示將文本文件轉換成控制文件,也可以使用“TYPE=1”參數進行逆向轉換。

su - root
chown -R dmdba:2002 /home/dmdba/dmdbms
chmod -R 755 /home/dmdba/dmdbms
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmctlcvt TYPE=2 SRC=/home/dmdba/dmdbms/data/EP01_1/dmmpp.ini  DEST=/home/dmdba/dmdbms/data/EP01_1/dmmpp.ctl

2.5 配置EP02_1庫參數

2.5.1修改dm.ini
cd /home/dmdba/dmdbms/data/EP02_1
vim /home/dmdba/dmdbms/data/EP02_1/dm.ini
#configuration file
ALTER_MODE_STATUS      =      0      #不允許手工方式修改實例模式/狀態/OGUID
ENABLE_OFFLINE_TS      =      2      #不允許備庫 OFFLINE 表空間
MAL_INI                =      1      #打開 MAL 系統
ARCH_INI               =      1      #打開歸檔配置
MPP_INI                =      1      #啟用 MPP 配置
2.5.2創建dmmal.ini
vim /home/dmdba/dmdbms/data/EP02_1/dmmal.ini
MAL_CHECK_INTERVAL           =    5      #MAL 鏈路檢測時間間隔
MAL_CONN_FAIL_INTERVAL       =    5      #判定 MAL 鏈路斷開的時間[MAL_INST1]
MAL_INST_NAME               =   EP01  #實例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST                    = 192.168.148.128  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5336     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.128  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5236      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5436  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5536  #實例監聽守護進程 TCP 連接的端口
?
[MAL_INST2]
MAL_INST_NAME               = EP02
MAL_HOST                    = 192.168.148.128  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5337     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.128  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5237      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5437  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5537  #實例監聽守護進程 TCP 連接的端口[MAL_INST3]
MAL_INST_NAME              = EP01_1
MAL_HOST                    = 192.168.148.130  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5336     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.130  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5236      #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5436  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5536  #實例監聽守護進程 TCP 連接的端口[MAL_INST4]
MAL_INST_NAME              = EP02_1
MAL_HOST                    = 192.168.148.130  #MAL 系統監聽 TCP 連接的 IP 地址?
MAL_PORT                    =   5337     #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST               = 192.168.148.130  #實例的對外服務 IP 地址
MAL_INST_PORT               =  5237     #實例的對外服務端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT              = 5437  #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT         = 5537  #實例監聽守護進程 TCP 連接的端口
2.5.3創建dmarch.ini
vim /home/dmdba/dmdbms/data/EP02_1/dmarch.ini
#DaMeng Database Archive Configuration file
#0:高性能,1:事務一致
ARCH_WAIT_APPLY      	 = 0        
[ARCHIVE_LOCAL1]
#本地歸檔類型
ARCH_TYPE            = LOCAL        
#本地歸檔存放路徑 
ARCH_DEST            = /home/dmdba/dmdbms/data/EP02_1/arch  
ARCH_FILE_SIZE       = 1024
ARCH_SPACE_LIMIT     = 51200
ARCH_FLUSH_BUF_SIZE  = 2    
ARCH_HANG_FLAG       = 1
[ARCHIVE_REALTIME1]
#實時歸檔類型
ARCH_TYPE            = REALTIME
#實時歸檔目標實例名
ARCH_DEST            = EP02
2.5.4配置dmmpp.ini
vim /home/dmdba/dmdbms/data/EP02_1/dmmpp.ini
[SERVICE_NAME1] 
MPP_SEQ_NO = 0 
MPP_INST_NAME = EP01[SERVICE_NAME2] 
MPP_SEQ_NO = 1 
MPP_INST_NAME = EP02

使用DM提供的工具dmctlcvt將dmmpp.ini轉換成dmmpp.ctl,dmctlcvt工具在DM安裝目錄的“bin”子目錄中。
轉換生成的dmmpp.ctl需要放在與dm.ini同一個目錄。下面的命令將dmmpp.ini轉換為dmmpp.ctl,命令中的“TYPE=2”參數表示將文本文件轉換成控制文件,也可以使用“TYPE=1”參數進行逆向轉換。

su - root
chown -R dmdba:2002 /home/dmdba/dmdbms
chmod -R 755 /home/dmdba/dmdbms
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmctlcvt TYPE=2 SRC=/home/dmdba/dmdbms/data/EP02_1/dmmpp.ini  DEST=/home/dmdba/dmdbms/data/EP02_1/dmmpp.ctl

2.6 配置dmwatcher.ini

一般來說,每個單獨的實例都是使用一個單獨的守護進程守護。比如前面的實時主備和讀寫分離集群的配置。
本例中,由于同一臺機器上有不同組的兩個實例,我們可以只配置一個守護進程,同時守護兩個實例。A機器上配置dmwatcher.ini,配置為全局守護類型,使用自動切換模式。

2.6.1 在A機器配置dmwatcher.ini
cd /home/dmdba/dmdbms/data/EP01
vim /home/dmdba/dmdbms/data/EP01/dm.ini
[GRP1]
DW_TYPE               = GLOBAL       #全局守護類型
DW_MODE               = AUTO         #自動切換模式
DW_ERROR_TIME         = 10           #遠程守護進程故障認定時間
INST_RECOVER_TIME     = 60           #主庫守護進程啟動恢復的間隔時間
INST_ERROR_TIME       = 10           #本地實例故障認定時間
INST_OGUID            = 45331        #守護系統唯一 OGUID 值
INST_INI              = /home/dmdba/dmdbms/data/EP01/dm.ini 配置文件路徑
INST_AUTO_RESTART     = 1            #打開實例的自動啟動功能
INST_STARTUP_CMD      = /home/dmdba/dmdbms/bin/dmserver #命令行方式啟動
RLOG_SEND_THRESHOLD   = 0            #指定主庫發送日志到備庫的時間閾值,默認關閉
RLOG_APPLY_THRESHOLD  = 0            #指定備庫重演日志的時間閾值,默認關閉
?
[GRP2]
?DW_TYPE               = GLOBAL       #全局守護類型
DW_MODE               = AUTO         #自動切換模式
DW_ERROR_TIME         = 10           #遠程守護進程故障認定時間
INST_RECOVER_TIME     = 60           #主庫守護進程啟動恢復的間隔時間
INST_ERROR_TIME       = 10           #本地實例故障認定時間
INST_OGUID            = 45332        #守護系統唯一 OGUID 值
INST_INI              = /home/dmdba/dmdbms/data/EP02/dm.ini #dm.ini 配置文件路徑
INST_AUTO_RESTART    = 1             #打開實例的自動啟動功能
INST_STARTUP_CMD     = /home/dmdba/dmdbms/bin/dmserver #命令行方式啟動
RLOG_SEND_THRESHOLD  = 0             #指定主庫發送日志到備庫的時間閾值,默認關閉
RLOG_APPLY_THRESHOLD = 0             #指定備庫重演日志的時間閾值,默認關閉
2.6.2 在B機器配置dmwatcher.ini
cd /home/dmdba/dmdbms/data/EP01_1
vim /home/dmdba/dmdbms/data/EP01_1/dm.ini
[GRP1]
DW_TYPE               = GLOBAL       #全局守護類型
DW_MODE               = AUTO         #自動切換模式
DW_ERROR_TIME         = 10           #遠程守護進程故障認定時間
INST_RECOVER_TIME     = 60           #主庫守護進程啟動恢復的間隔時間
INST_ERROR_TIME       = 10           #本地實例故障認定時間
INST_OGUID            = 45331        #守護系統唯一 OGUID 值
INST_INI              = /home/dmdba/dmdbms/data/EP01_1/dm.ini 配置文件路徑
INST_AUTO_RESTART     = 1            #打開實例的自動啟動功能
INST_STARTUP_CMD      = /home/dmdba/dmdbms/bin/dmserver #命令行方式啟動
RLOG_SEND_THRESHOLD   = 0            #指定主庫發送日志到備庫的時間閾值,默認關閉
RLOG_APPLY_THRESHOLD  = 0            #指定備庫重演日志的時間閾值,默認關閉
?
[GRP2]
?DW_TYPE               = GLOBAL       #全局守護類型
DW_MODE               = AUTO         #自動切換模式
DW_ERROR_TIME         = 10           #遠程守護進程故障認定時間
INST_RECOVER_TIME     = 60           #主庫守護進程啟動恢復的間隔時間
INST_ERROR_TIME       = 10           #本地實例故障認定時間
INST_OGUID            = 45332        #守護系統唯一 OGUID 值
INST_INI              = /home/dmdba/dmdbms/data/EP02_1/dm.ini #dm.ini 配置文件路徑
INST_AUTO_RESTART    = 1             #打開實例的自動啟動功能
INST_STARTUP_CMD     = /home/dmdba/dmdbms/bin/dmserver #命令行方式啟動
RLOG_SEND_THRESHOLD  = 0             #指定主庫發送日志到備庫的時間閾值,默認關閉
RLOG_APPLY_THRESHOLD = 0             #指定備庫重演日志的時間閾值,默認關閉

2.7 主庫備份從庫啟動

#兩機器均需執行
systemctl stop DmServiceDMSERVER01.service
systemctl stop DmServiceDMSERVER02.service
2.7.1主從庫均啟動AP服務
cd /home/dmdba/dmdbms/bin/service_template/
./DmAPService start
2.7.2備份主庫

節點EP01(A機器)

cd /home/dmdba/dmdbms/bin
./dmrman
backup database '/home/dmdba/dmdbms/data/EP01/dm.ini' backupset '/home/dmdba/dmdbms/data/EP01/bak/dmbackup';

節點EP02(A機器)

cd /home/dmdba/dmdbms/bin
./dmrman
backup database '/home/dmdba/dmdbms/data/EP02/dm.ini' backupset '/home/dmdba/dmdbms/data/EP02/bak/dmbackup';
2.7.3備份文件拷貝到從庫(A機器)

節點EP01

scp -r /home/dmdba/dmdbms/data/EP01/bak/dmbackup root@192.168.148.130:/home/dmdba/dmdbms/data/EP01_1/bak

節點EP02

scp -r /home/dmdba/dmdbms/data/EP02/bak/dmbackup root@192.168.148.130:/home/dmdba/dmdbms/data/EP02_1/bak
2.7.4恢復從庫(B機器)

節點EP01

su dmdba
cd /home/dmdba/dmdbms/bin
./dmrman
restore database '/home/dmdba/dmdbms/data/EP01_1/dm.ini' from backupset '/home/dmdba/dmdbms/data/EP01_1/bak/dmbackup';
recover database '/home/dmdba/dmdbms/data/EP01_1/dm.ini' from backupset '/home/dmdba/dmdbms/data/EP01_1/bak/dmbackup';
recover database '/home/dmdba/dmdbms/data/EP01_1/dm.ini' update db_magic;

在這里插入圖片描述
節點EP02

su dmdba
cd /home/dmdba/dmdbms/bin
./dmrman
restore database '/home/dmdba/dmdbms/data/EP02_1/dm.ini' from backupset '/home/dmdba/dmdbms/data/EP02_1/bak/dmbackup';
recover database '/home/dmdba/dmdbms/data/EP02_1/dm.ini' from backupset '/home/dmdba/dmdbms/data/EP02_1/bak/dmbackup';
recover database '/home/dmdba/dmdbms/data/EP02_1/dm.ini' update db_magic;

在這里插入圖片描述

2.7.5注冊服務

A機器執行

su root
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p EP01 -dm_ini /home/dmdba/dmdbms/data/EP01/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p EP02 -dm_ini /home/dmdba/dmdbms/data/EP02/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /home/dmdba/dmdbms/data/EP01/dmwatcher.ini

在這里插入圖片描述
B機器執行

su root
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p EP01_1 -dm_ini /home/dmdba/dmdbms/data/EP01_1/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p EP02_1 -dm_ini /home/dmdba/dmdbms/data/EP02_1/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /home/dmdba/dmdbms/data/EP01_1/dmwatcher.ini

在這里插入圖片描述

2.7.6啟動主備服務并修改參數

A機器執行

/home/dmdba/dmdbms/bin/DmServiceEP01 start
/home/dmdba/dmdbms/bin/DmServiceEP02 start/home/dmdba/dmdbms/bin/disql SYSDBA/DaMeng123:5236
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);/home/dmdba/dmdbms/bin/disql SYSDBA/DaMeng123:5237
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45332);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

B機器執行

/home/dmdba/dmdbms/bin/DmServiceEP01_1 start
/home/dmdba/dmdbms/bin/DmServiceEP02_1 start/home/dmdba/dmdbms/bin/disql SYSDBA/DaMeng123:5236
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);/home/dmdba/dmdbms/bin/disql SYSDBA/DaMeng123:5237
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45332);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

啟動守護進程(兩臺機器均需要啟動)

/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start

2.8 配置dmmonitor.ini

修改 dmmonitor.ini 配置確認監視器,其中MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT 配置項保持一致。
創建 dmmonitor.ini

vi /home/dmdba/dmdbms/data/EP01_1/dmmonitor.ini
MON_DW_CONFIRM              = 1              #確認監視器模式
MON_LOG_PATH                = ../log  #監視器日志文件存放路徑
MON_LOG_INTERVAL            = 60             #每隔 60s 定時記錄系統信息到日志文件
MON_LOG_FILE_SIZE           = 32             #每個日志文件最大 32M
MON_LOG_SPACE_LIMIT         = 0              #不限定日志文件總占用空間
[GRP1]
MON_INST_OGUID              = 45331          #組 GRP1 的唯一 OGUID 值 
#以下配置為監視器到組 GRP1 的守護進程的連接信息,以―IP:PORT‖的形式配置
#IP 對應 dmmal.ini 中的 MAL_HOST,PORT 對應 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP                   = 192.168.148.128:5436
MON_DW_IP                   = 192.168.148.130:5436
[GRP2]
MON_INST_OGUID              = 45332          #組 GRP2 的唯一 OGUID 值 
#以下配置為監視器到組 GRP2 的守護進程的連接信息,以―IP:PORT‖的形式配置
#IP 對應 dmmal.ini 中的 MAL_HOST,PORT 對應 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP                  = 192.168.148.128:5437
MON_DW_IP                  = 192.168.148.130:5437

啟動監聽器

cd /home/dmdba/dmdbms/bin
./dmmonitor /home/dmdba/dmdbms/data/EP01_1/dmmonitor.ini

在這里插入圖片描述

三、環境驗證

登錄監聽器輸入命令

show

(GRP1)
在這里插入圖片描述
(GRP2)
在這里插入圖片描述
輸入以下SQL語句,查看兩節點狀態是否為OK:

SELECT * FROM V$MPP_CFG_ITEM WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();

在這里插入圖片描述

四、驗證是否根據分布列進行自動分發

4.1建立不同的分布式表

--1、創建哈希分布表T_HASH,分布列為 C1
CREATE TABLE T_HASH(C1 INT, C2 CHAR(10))DISTRIBUTED BY HASH (C1);-- 插入測試數據
INSERT INTO T_HASH VALUES (1, 'A'), (2, 'B'), (3, 'C'), (4, 'D'), (5, 'E');-- 驗證數據分布(正確方法)
--MPP系統下設置當前會話是否只查詢本節點數據。如果不設置,表示可以查詢全部節點數據,0表示全部,1表示當前節點
SP_SET_SESSION_MPP_SELECT_LOCAL(0);
--查詢MPP系統下當前會話是否只查詢本節點數據。0表示查詢全部節點數據,1表示只查詢本節點數據
SELECT SF_GET_SESSION_MPP_SELECT_LOCAL();
--統計 MPP 環境下表在各個節點的數據行數
CALL SP_GET_EP_COUNT('SYSDBA','T_HASH');

可以觀察到EP01、EP02和上能夠查詢到各個節點的數據,EP01_1和EP02_1只能觀察到當前節點的數據。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

--2、創建隨機分布表 T_RANDOM
CREATE TABLE T_RANDOM(C1 INT, C2 CHAR(10))DISTRIBUTED RANDOMLY;-- 插入數據
INSERT INTO T_RANDOM VALUES 
(1, 'A'), (2, 'B'), (3, 'C'), 
(4, 'D'), (5, 'E'), (6, 'F');-- 驗證數據分布(正確方法)
--統計 MPP 環境下表在各個節點的數據行數
CALL SP_GET_EP_COUNT('SYSDBA','T_RANDOM');

在這里插入圖片描述

--3、創建復制分布表 T_FULLY
CREATE TABLE T_FULLY(C1 INT, C2 CHAR(10))DISTRIBUTED FULLY;-- 插入數據
INSERT INTO T_FULLY VALUES 
(1, 'A'), (2, 'B'), (3, 'C'), 
(4, 'D'), (5, 'E'), (6, 'F');--統計 MPP 環境下表在各個節點的數據行數
CALL SP_GET_EP_COUNT('SYSDBA','T_FULLY');

在這里插入圖片描述

--4、創建范圍分布表 T_RANGE,分布列為 C1
CREATE TABLE T_RANGE (C1 INT, C2 CHAR(10)) DISTRIBUTED BY RANGE (C1) (VALUES EQU OR LESS THAN (100) ON EP01, VALUES LESS
THAN(MAXVALUE) ON EP02);
-- 插入測試數據
INSERT INTO T_RANGE VALUES (50, 'A'), (150, 'B'), (25, 'C'), (300, 'D'), (75, 'E');--統計 MPP 環境下表在各個節點的數據行數
CALL SP_GET_EP_COUNT('SYSDBA','T_RANGE');

在這里插入圖片描述

--5、創建LIST分布表T_LIST,分布列為C1
CREATE TABLE T_LIST(C1 INT, C2 CHAR(10))
DISTRIBUTED BY LIST (C1) (VALUES(3) ON EP01,VALUES(4) ON EP02);-- 插入測試數據
INSERT INTO T_LIST VALUES (3, 'A'), (4, 'B'), (4, 'C'), (3, 'D'), (4, 'E');--統計 MPP 環境下表在各個節點的數據行數
CALL SP_GET_EP_COUNT('SYSDBA','T_LIST');

在這里插入圖片描述

--6、創建哈希分布表的范圍水平分區表
CREATE TABLE T_HASH_RANGE_PARTITION
(C1 INT, C2 CHAR(10), C3 CHAR(10))
PARTITION BY RANGE(C1)
(
PARTITION PART_1 VALUES LESS THAN(0) ,
PARTITION PART_2 VALUES LESS THAN(10) ,
PARTITION PART_3 VALUES LESS THAN(100) ,
PARTITION PART_4 VALUES LESS THAN(MAXVALUE)
)
DISTRIBUTED BY HASH (C1);-- 插入測試數據
INSERT INTO T_HASH_RANGE_PARTITION VALUES 
(-5, 'A', 'X'), (5, 'B', 'Y'), (50, 'C', 'Z'), (500, 'D', 'W');--統計 MPP 環境下表在各個節點的數據行數
CALL SP_GET_EP_COUNT('SYSDBA','T_HASH_RANGE_PARTITION');

在這里插入圖片描述
總結:
哈希分布:數據均勻分布,相同鍵值總在同一節點,適合JOIN操作頻繁的表
隨機分布:數據完全隨機分布,適合沒有明顯JOIN需求的表
復制分布:每個節點有完整數據副本,適合小表、維度表
范圍分布:按范圍值分布數據,適合范圍查詢頻繁的場景
LIST分布:按離散值分布,適合有明顯分類屬性的數據
組合分布:可以結合分區和分布策略實現更復雜的數據分布

4.2 故障切換測試(主庫宕機)

我們模擬故障節點EP01和EP02,觀察主備切換情況,實例EP01_1和實例RP02_1自動接管。
在這里插入圖片描述
在這里插入圖片描述
簡單驗證是否根據分布列進行自動分發,在EP02_1上插入數據。
在這里插入圖片描述
在EP02_1和EP01_1上均能查詢到數據
在這里插入圖片描述

4.3 故障恢復

恢復節點EP01和EP02,觀察主備切換情況
在這里插入圖片描述
可以看到EP01和EP02切換為備庫了。
在這里插入圖片描述
在這里插入圖片描述

達夢社區地址:

達夢數據庫 - 新一代大型通用關系型數據庫 | 達夢在線服務平臺
https://eco.dameng.com

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94318.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94318.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94318.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java基礎學習(一):類名規范、返回值、注釋、數據類型

目錄 一、類名規范二、返回值三、注釋四、數據類型 1. 基本類型2. 引用類型3. 強制數據類型轉換4. 進制5. 進制的轉換6. 超范圍運算 相關文章 Java基礎學習(二):Java中的變量和常量、final(重點)、運算、字符串 了…

Nginx相關實驗(2)

nginx的一些高級配置 nginx狀態頁 基于nginx 模塊 ngx_http_stub_status_module 實現, 在編譯安裝nginx的時候需要添加編譯參數 --with-http_stub_status_module 否則配置完成之后監測會是提示語法錯誤 #檢查模塊是否配置 如果不存在需要添加模塊重新編譯 nginx …

2.Java和C++有什么區別

2.Java和C有什么區別 1.在C中,支持操作符重載,而在Java里是不允許的 2.C支持多繼承,而Java不可以,但Java可以單繼承多實現 3.Java內置多線程機制,而C沒有 4.Java里面自帶了垃圾回收機制,可以自動清理緩存等…

MLIR Introduction

簡介 MLIR 項目是一個構建可重用和可擴展編譯器基礎設施創新項目,旨在解決軟件碎片化問題,顯著降低構建特定領域編譯器的成本。 基于MLIR,可以實現: 數據流圖表達(如TensorFlow),包含dynamic…

[找出字符串中第一個匹配項的下標]

代碼思路分析: 1. 邊界情況處理 代碼中沒有顯式處理以下邊界情況,但邏輯已隱含支持: needle 為空字符串:應返回 0(但題目通常保證 needle 非空)。haystack 比 needle 短:直接返回 -1&#xff08…

深入剖析RT-Thread串口驅動:基于STM32H750的FinSH Shell全鏈路Trace分析與實戰解密(上)

0. 概述 這是cherryusb代碼trace分析系列文章之七。 RT-Thread串口驅動框架與FinSH Shell運行機制深度解析:針對STM32H750 ART-PI平臺,本文獨辟蹊徑采用創新的代碼trace分析方法,破解龐大串口框架下的復雜運行邏輯。通過精確trace日志與drv_u…

Python與C++通信教程:C++打包dll,供Python調用(1)

目錄 1,新建一個工程 math_functions.cpp內容: 先編譯一下看是否可以正常運行: 2,編譯成dll,并用Python調用 有兩種方式: 命令 1(使用靜態鏈接): 可移植性: 命令 2(動態鏈接): 可移植性: 這里我使用的是靜態鏈接的方式: python調用實例 test_dll.py 1,…

編程與數學 03-002 計算機網絡 19_網絡新技術研究

編程與數學 03-002 計算機網絡 19_網絡新技術研究一、軟件定義網絡(SDN)(一)SDN的基本原理與架構(二)SDN的應用場景與優勢二、網絡功能虛擬化(NFV)(一)NFV的概…

uniapp 跨端開發

一、創建uniapp項目 1. 項目架構2. 初始化項目3. pages.json 和 tabBar 案例4. uni-app和原生小程序開發區別5. 用命令行創建uni-app項目 官網鏈接:https://uniapp.dcloud.net.cn/quickstart-cli.html#創建uni-app6. 用vscode開發uni-app在uni-app中只有manifest.js…

區塊鏈支付技術的核心原理

區塊鏈支付利用分布式賬本技術(DLT)實現點對點的價值轉移,無需傳統銀行或支付網關的中介。核心特點是去中心化、透明、可追溯。? 基本流程:1. 用戶發起交易:通過加密貨幣錢包發送支付請求(例如用ETH支付&a…

linux中 多進程 導致cuda錯誤的問題解決

問題總結與解決方案 核心問題 在使用 Linux 系統時,多進程并行計算中加載模型到 GPU 時出現錯誤:_MODEL SentenceTransformer( model_path, device "cuda" if torch.cuda.is_available() else "cpu" )根本原因: CUDA 上…

智能感知的新入口:AIGC 與低延遲視頻通路的深度融合

?? 引言:AIGC,正在重構視覺智能的“生成邏輯” AI生成內容(AIGC)正在從“內容創作工具”躍升為計算機視覺系統的新引擎。它不再只是“文生圖”、“圖生文”的演示技術,而是實實在在地改變著我們構建、處理和理解視覺…

Ubuntu 內網多臺服務器時間同步方案(適用于臨時能上外網的環境)

哎,最近項目是運行在內網環境下的,出現了由于時間不同步導致的bug。一般來講,幾臺服務器的時間不一致,會帶來很多問題,比如日志時間對不上、分布式服務出現異常,等等。項目上現在有三臺服務器,其…

延長電池壽命的低Iq技術

本文章是筆者整理的備忘筆記。希望在幫助自己溫習避免遺忘的同時,也能幫助其他需要參考的朋友。如有謬誤,歡迎大家進行指正。一、概述隨著電池供電型應用的激增,人們對質優價廉的電池和電池包的需求持續猛漲。電池制造商們不斷采用新的化學物…

QT 如何實現enum與字符串的互轉

將enum中定義的枚舉值,以字符串的形式寫入文件,同時也能從字符串轉為枚舉值。舉例說明: ColorSelector中的Colors枚舉,我們希望 kColorRed 這個寫入到本地文件時,可以直接保存“kColorRed”,而非kColorRed對…

SLAM卷不動了,機器人還有哪些方向能做?

關注gongzhonghao【CVPR頂會精選】眾所周知,機器人因復雜環境適應性差、硬件部署成本高,對高效泛化一直需求迫切。再加上多傳感器協同難題、真實場景數據獲取不易,當下對遷移學習 機器人智能融合的研究也就更熱烈了。不過顯然,這…

H.266 vs H.265/AV1/H.264:從工程落地看下一代視頻系統的技術演進

一、背景:編解碼標準演進背后的技術驅動 視頻編碼標準的更迭,從未只是一次簡單的技術升級,而是對碼率壓縮效率、編碼復雜度與畫質質量三者之間平衡點的持續探索。在 H.264 成為全平臺事實標準的十余年里,它成功支撐了 SD 至 1080…

Javascript面試題及詳細答案150道之(031-045)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

Git如何同步本地與遠程倉庫并解決沖突

在團隊協作開發中,保持本地倉庫與遠程倉庫同步是至關重要的。本文將詳細介紹如何使用 Git 更新本地倉庫至最新遠程版本,并深入解析沖突的產生原因及解決方法。一、同步本地與遠程倉庫1. 檢查遠程倉庫配置首先,確保本地倉庫已正確關聯遠程倉庫…

Hadoop MapReduce 3.3.4 講解~

?博客主頁: https://blog.csdn.net/m0_63815035?typeblog 💗《博客內容》:.NET、Java.測試開發、Python、Android、Go、Node、Android前端小程序等相關領域知識 📢博客專欄: https://blog.csdn.net/m0_63815035/cat…