把H2資料庫從jar包部署到Kubernetes,並解決Ingress不支援TCP的問題
阿新 • • 發佈:2020-08-13
# 1 前言
> 歡迎訪問[南瓜慢說 www.pkslow.com](https://www.pkslow.com/)獲取更多精彩文章!
[`H2 Database`](https://www.h2database.com/html/main.html)是一個優秀的資料庫,又小又方便,支援記憶體和檔案形式,經常會在`測試`、`POC(proof of concept)`或`開發環境`用到它。在`Springboot`的許多應用中,也是內建了`H2資料庫`,很常用。接下來我們來一步步把它推上`k8s`,讓它坐上一個不一樣的位置。
建議閱讀下面文章以幫助理解:
[Kubernetes用Helm安裝Ingress並踩一下使用的坑](https://www.pkslow.com/archives/kubernetes-ingress)
[容器技術相關文章](https://www.pkslow.com/categories/container)
# 2 本地jar包執行
## 2.1 下載和啟動
下載官網`jar`包如下:
```bash
$ curl http://www.h2database.com/h2-2019-03-13.zip -o h2-2019-03-13.zip
```
解壓:
```bash
$ unzip h2-2019-03-13.zip
```
啟動`H2資料庫`:
```bash
$ java -cp h2/bin/h2*.jar org.h2.tools.Server -ifNotExists
TCP server running at tcp://localhost:9092 (only local connections)
PG server running at pg://localhost:5435 (only local connections)
Web Console server running at http://localhost:8082 (others can connect)
```
如果需要修改配置,如埠號、資料儲存目錄,可以在啟動時新增引數:
```bash
java -cp h2/bin/h2*.jar org.h2.tools.Server -ifNotExists \
-web -webAllowOthers -webPort 8082 \
-tcp -tcpAllowOthers -tcpPort 9092 \
-baseDir ${DATA_DIR} ${H2_OPTIONS}
```
## 2.2 配置連線
成功啟動後訪問`http://localhost:8082`就能登陸控制檯了。如下:
![](https://img2020.cnblogs.com/other/946674/202008/946674-20200813152154375-133236783.png)
`Driver Class`:`org.h2.Driver`,驅動類;
`JDBC URL`:`jdbc:h2:mem:pkslow`,使用記憶體資料庫,資料庫名為`pkslow`;
賬號密碼設定為`admin/123456`。
設定完成後,點選連線即可建立資料庫。
如果我們把`JDBC URL`改為`jdbc:h2:file:~/pkslow`,就是以檔案形式存在,這樣能把資料持久化,所以我們採取這種方式。這裡就會在`~`目錄,即`${HOME}`目錄生成檔案`pkslow.mv.db`以儲存資料。還有檔案` ~/.h2.server.properties`。
更多`URL`的配置方法如下表:
| Topic | URL Format and Examples |
| :----------------------------------------------------------- | :----------------------------------------------------------- |
| [Embedded (local) connection](http://www.h2database.com/html/features.html#embedded_databases) | jdbc:h2:[