最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

H2內(nèi)存數(shù)據(jù)庫支持存儲到文件

來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 14:59:59
文檔

H2內(nèi)存數(shù)據(jù)庫支持存儲到文件

H2內(nèi)存數(shù)據(jù)庫支持存儲到文件:準備工作 1、下載JDK(本人下載的版本為JDK1.7)、設(shè)置環(huán)境變量JAVA_HOME,設(shè)置PATH(%JAVA_HOME%\bin%)。 2、下載并解壓:h2-2014-07-13.zip 官網(wǎng)下載地址:http://www.h2database.com/html/main.html 3、設(shè)置環(huán)境變量H2_HO
推薦度:
導讀H2內(nèi)存數(shù)據(jù)庫支持存儲到文件:準備工作 1、下載JDK(本人下載的版本為JDK1.7)、設(shè)置環(huán)境變量JAVA_HOME,設(shè)置PATH(%JAVA_HOME%\bin%)。 2、下載并解壓:h2-2014-07-13.zip 官網(wǎng)下載地址:http://www.h2database.com/html/main.html 3、設(shè)置環(huán)境變量H2_HO


控制臺打印出:1,Hi
\

server模式

1、直接將jdbc url 改為:jdbc:h2:tcp://localhost/~/test 就行了。因為我們在上面第一步的時候已經(jīng)在C:\Users\Administrator創(chuàng)建了test數(shù)據(jù)庫。
你也可以再創(chuàng)建新的數(shù)據(jù)庫,默認都是保存在C:\Users\Administrator下的。
注意:你必須啟動服務(wù):%H2_HOME%\bin\h2.bat 或者 以服務(wù)模式啟動:%H2_HOME%\service\0_run_server_debug.bat ,里面有好幾個腳本把H2部署為服務(wù)模式。每次機器啟動后自動啟動H2服務(wù)。
2、新建 TestServerH2類 主要代碼

public static void main(String[] a)
throws Exception {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.
getConnection("jdbc:h2:tcp://localhost/~/test", "sa", "");
// add application code here
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM TEST ");
while(rs.next()) {
System.out.println(rs.getInt("ID")+","+rs.getString("NAME"));
}
conn.close();
}

運行的結(jié)果和上面一樣。

內(nèi)存模式(數(shù)據(jù)只保存在內(nèi)存中)

1、新建 TestMemH2類 主要代碼

public static void main(String[] a)
throws Exception {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.
getConnection("jdbc:h2:tcp://localhost/mem:test2", "sa", "");
// add application code here
Statement stmt = conn.createStatement();

stmt.executeUpdate("CREATE TABLE TEST_MEM(ID INT PRIMARY KEY,NAME VARCHAR(255));");
stmt.executeUpdate("INSERT INTO TEST_MEM VALUES(1, 'Hello_Mem');");
ResultSet rs = stmt.executeQuery("SELECT * FROM TEST_MEM");
while(rs.next()) {
System.out.println(rs.getInt("ID")+","+rs.getString("NAME"));
}
conn.close();
}

控制臺打印出:1,Hello_Mem

\

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

集群 / 高可用性

數(shù)據(jù)庫支持簡單的集群/高可用性機制。架構(gòu)是:兩個數(shù)據(jù)庫服務(wù)運行在兩臺不同的計算機上,兩臺計算機有同樣數(shù)據(jù)庫的副本,如果兩個服務(wù)器都處于運行狀態(tài),每個數(shù)據(jù)庫操作都被在兩臺計算機上執(zhí)行,如果一臺服務(wù)器宕機(斷電、硬件故障、網(wǎng)絡(luò)故障等),另外一臺計算機仍能提供服務(wù),從這一刻開始,數(shù)據(jù)庫操作僅在一臺服務(wù)器上執(zhí)行,直到另外一臺服務(wù)器恢復運行。

集群僅能用于服務(wù)器模式(內(nèi)嵌模式并不支持集群)??梢栽跀?shù)據(jù)庫運行狀態(tài)下恢復集群,但是要求在第二個數(shù)據(jù)庫恢復期間沒有應用在改變第一個數(shù)據(jù)庫的數(shù)據(jù),因此恢復集群是一個手工的過程。

初始化集群,使用下面的步驟:

· 創(chuàng)建數(shù)據(jù)庫

· 使用CreateCluster工具創(chuàng)建一個數(shù)據(jù)庫福分到另外的地方,并且初始化集群,這樣就得到了同樣數(shù)據(jù)的兩個數(shù)據(jù)庫

· 啟動兩個數(shù)據(jù)庫服務(wù)(每個數(shù)據(jù)庫的副本)

· 現(xiàn)在可以通過應用客戶端連接到數(shù)據(jù)庫

使用創(chuàng)建集群工具

要了解集群如何工作,請嘗試下面的例子,在這個例子里,兩個數(shù)據(jù)庫駐留在同一臺計算機上,但通常,兩個數(shù)據(jù)庫在不同的計算機上。

· 創(chuàng)建兩個目錄:server1,server2。每個目錄將模擬一臺計算機

· 在第一個目錄啟動TCP服務(wù),你可以運行下面的命令:

· java org.h2.tools.Server

· -tcp-tcpPort 9101

· -baseDirserver1

· 在第二個目錄啟動TCP服務(wù),模擬第二個服務(wù)器(冗余運行),你能使用下面的命令:

· java org.h2.tools.Server

· -tcp-tcpPort 9102

· -baseDirserver2

· 使用 CreateCluster 工具初始化集群,如果數(shù)據(jù)庫不存在,將創(chuàng)建一個新的空數(shù)據(jù)庫,運行下面命令行:

· java org.h2.tools.CreateCluster

· -urlSourcejdbc:h2:tcp://localhost:9101/~/test

· -urlTargetjdbc:h2:tcp://localhost:9102/~/test

· -user sa

· -serverList localhost:9101,localhost:9102

· 應用或者是H2控制臺可以通過下面的JDBC的URL連接數(shù)據(jù)庫:jdbc:h2:tcp://localhost:9101,localhost:9102/~/test

· 如果你停止一個服務(wù)(通過殺進程),你注意到另一個機器繼續(xù)工作,數(shù)據(jù)庫仍能提供訪問。

· 恢復集群,你需要先刪掉宕機的數(shù)據(jù)庫,然后重啟宕機的數(shù)據(jù)庫的服務(wù),再重新運行CreateCluster集群工具。

檢測運行狀態(tài)下的集群

查找哪些節(jié)點當前正在運行,通過執(zhí)行下面的SQL語句:

SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERENAME='CLUSTER'

結(jié)果返回為 '' (兩個單引號),說明集群模式被屏蔽,否則,集群服務(wù)器列表將被單引號包括著返回,如'server1:9191,server2:9191'。

2、上面的 URL 改為 jdbc:h2:~/mem:test 也是可以的。如果是localhost必須啟動服務(wù)。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

數(shù)據(jù)庫連接 URL說明

數(shù)據(jù)庫支持多種連接模式和連接設(shè)置,不同的連接模式和連接設(shè)置是通過不同的URL來區(qū)分的,URL中的設(shè)置是不區(qū)分大小寫。

Topic

URL Format and Examples

嵌入式(本地)連接

jdbc:h2:[file:][]
jdbc:h2:~/test
jdbc:h2:file:/data/sample
jdbc:h2:file:C:/data/sample (Windows only)

內(nèi)存數(shù)據(jù)庫(私有)

jdbc:h2:mem:

內(nèi)存數(shù)據(jù)庫(被命名)

jdbc:h2:mem:
jdbc:h2:mem:test_mem

使用TCP/IP的服務(wù)器模式(遠程連接)

jdbc:h2:tcp://[:]/[]
jdbc:h2:tcp://localhost/~/test
jdbc:h2:tcp://dbserv:8084/~/sample

使用SSL/TLS的服務(wù)器模式(遠程連接)

jdbc:h2:ssl://[:]/
jdbc:h2:ssl://secureserv:8085/~/sample;

使用加密文件

jdbc:h2:;CIPHER=[AES|XTEA]
jdbc:h2:ssl://secureserv/~/testdb;CIPHER=AES
jdbc:h2:file:~/secure;CIPHER=XTEA

文件鎖

jdbc:h2:;FILE_LOCK={NO|FILE|SOCKET}
jdbc:h2:file:~/quickAndDirty;FILE_LOCK=NO
jdbc:h2:file:~/private;CIPHER=XTEA;FILE_LOCK=SOCKET

僅打開存在的數(shù)據(jù)庫

jdbc:h2:;IFEXISTS=TRUE
jdbc:h2:file:~/sample;IFEXISTS=TRUE

當虛擬機退出時并不關(guān)閉數(shù)據(jù)庫

jdbc:h2:;DB_CLOSE_ON_EXIT=FALSE

用戶名和密碼

jdbc:h2:[;USER=][;PASSWORD=]
jdbc:h2:file:~/sample;USER=sa;PASSWORD=123

更新記入索引

jdbc:h2:;LOG=2
jdbc:h2:file:~/sample;LOG=2

調(diào)試跟蹤項設(shè)置

jdbc:h2:;TRACE_LEVEL_FILE=
jdbc:h2:file:~/sample;TRACE_LEVEL_FILE=3

忽略位置參數(shù)設(shè)置

jdbc:h2:;IGNORE_UNKNOWN_SETTINGS=TRUE

指定文件讀寫模式

jdbc:h2:;ACCESS_MODE_LOG=rws;ACCESS_MODE_DATA=rws

在Zip文件中的數(shù)據(jù)庫

jdbc:h2:zip:!/
jdbc:h2:zip:~/db.zip!/test

兼容模式

jdbc:h2:;MODE=
jdbc:h2:~/test;MODE=MYSQL

自動重連接

jdbc:h2:;AUTO_RECONNECT=TRUE
jdbc:h2:tcp://localhost/~/test;AUTO_RECONNECT=TRUE

自動混合模式

jdbc:h2:;AUTO_SERVER=TRUE
jdbc:h2:~/test;AUTO_SERVER=TRUE

更改其他設(shè)置

jdbc:h2:;=[;=...]
jdbc:h2:file:~/sample;TRACE_LEVEL_SYSTEM_OUT=3

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

H2內(nèi)存數(shù)據(jù)庫支持存儲到文件

H2內(nèi)存數(shù)據(jù)庫支持存儲到文件:準備工作 1、下載JDK(本人下載的版本為JDK1.7)、設(shè)置環(huán)境變量JAVA_HOME,設(shè)置PATH(%JAVA_HOME%\bin%)。 2、下載并解壓:h2-2014-07-13.zip 官網(wǎng)下載地址:http://www.h2database.com/html/main.html 3、設(shè)置環(huán)境變量H2_HO
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top