springboot配置數據庫包括集羣下 配置

首先準備數據庫的必要信息。

查詢當前數據庫實例名
方法一:select instance_name from v$instance;
方法二:show parameter instance
查詢數據庫服務名
方法一:show parameter service_name

ora文件:

單實例的2中配法:

//通過SERVICE_NAME配置
SINGLE1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = db1)
    )
  )
//通過SID配置
SINGLE1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.1)(PORT = 1521))
    (CONNECT_DATA =
      (SID = db1)
    )
  )

//SERVICE_NAME (數據庫服務名)和 SID(數據庫實例名)是有區別的。
一般情況下,單實例,我們會把SERVICE_NAME (數據庫服務名)和 SID(數據庫實例名)寫成一樣的,
那麼上面的2中配置就等效。
如果配置的不一樣,或者在集羣下,SID是有多個的,SERVICE_NAME用的是同一個。
即SERVICE_NAME: dbcommon
SID: db1,db2,db3......

那麼上面的2中配置就不同了,我們一般用SERVICE_NAME那種配置。

oracle集羣:
集羣下,登錄oracle用戶,在plsql裏改的數據,會自動同步,這就是集羣。

你可以等一臺機器,建一張表,然後登另一臺,查這張表。
注意要加上用戶名
例如 select * from scott.t_aaa;
所以ora的配置文件中有個LOAD_BALANCE=yes就是負載均衡,雖然是隨機分發請求。
但是,無論訪問哪個實例,最後的數據都是同步的。
根本原因就是集羣是實例的集羣,數據文件在底層都是同一個。
 

在集羣下:

rac_group =  
(DESCRIPTION =  
    (ADDRESS_LIST =  
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.1)(PORT = 1521))  
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.2)(PORT = 1521))  
    )  
    (LOAD_BALANCE=yes)  
    (CONNECT_DATA =  
        (SERVER = DEDICATED)  
        (SERVICE_NAME = dbcommon)  
    )  
) 

yml文件:

spring:
  datasource:
    url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.22.1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.22.2)(PORT=1521))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVICE_NAME=dbcommon)))
    username: test
    password: Test@123
    driver-class-name: oracle.jdbc.driver.OracleDriver
    initialSize: 5
    minIdle: 5
    maxActive: 200
    maxWait: 60000

如果,你在集羣的oracle機器外又使用了浮動ip。
簡單介紹下浮動ip的原理:
浮動ip即在你的應用服務器之外專門有一臺機器做轉發,對請求來說,只有一個ip。
這個浮動ip會按照一定的算法把請求轉發到後面的任意一臺機器上。
當應用有宕機的時候,就不會抓飯到宕機的機器上。
浮動ip原理介紹:
https://wenku.baidu.com/view/ed2b639b770bf78a6529546a.html

這個原理跟springcloud中的api網關很類似。

如果你的數據庫也做了浮動ip,比如192.168.22.56 端口是 8888
那麼在配置oracle集羣時即可以這樣配置一個ip:
 

rac =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.56)(PORT = 8888))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbcommon)
    )
  )

yml文件:
 

spring:
  datasource:
    url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.22.56)(PORT=8888))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVICE_NAME=dbcommon)))
    username: test
    password: Test@123
    driver-class-name: oracle.jdbc.driver.OracleDriver
    initialSize: 5
    minIdle: 5
    maxActive: 200
    maxWait: 60000

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章