1 前言
欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章!
H2 Database
是一个优秀的数据库,又小又方便,支持内存和文件形式,经常会在测试
、POC(proof of concept)
或开发环境
用到它。在Springboot
的许多应用中,也是内置了H2数据库
,很常用。接下来我们来一步步把它推上k8s
,让它坐上一个不一样的位置。
建议阅读下面文章以帮助理解:
Kubernetes用Helm安装Ingress并踩一下使用的坑
2 本地jar包运行
2.1 下载和启动
下载官网jar
包如下:
$ curl http://www.h2database.com/h2-2019-03-13.zip -o h2-2019-03-13.zip
解压:
$ unzip h2-2019-03-13.zip
启动H2数据库
:
$ 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)
如果需要修改配置,如端口号、数据存储目录,可以在启动时添加参数:
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
就能登陆控制台了。如下:
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 | jdbc:h2:[file:][] jdbc:h2:~/test jdbc:h2:file:/data/sample jdbc:h2:file:C:/data/sample (Windows only) |
In-memory (private) | jdbc:h2:mem: |
In-memory (named) | jdbc:h2:mem: jdbc:h2:mem:test_mem |
Server mode (remote connections) using TCP/IP | jdbc:h2:tcp://[:]/[
|
Server mode (remote connections) using TLS | jdbc:h2:ssl://[:]/[
|
Using encrypted files | jdbc:h2:;CIPHER=AES jdbc:h2:ssl://localhost/~/test;CIPHER=AES jdbc:h2:file:~/secure;CIPHER=AES |
File locking methods | jdbc:h2:;FILE_LOCK={FILE|SOCKET|NO} jdbc:h2:file:~/private;CIPHER=AES;FILE_LOCK=SOCKET |
Only open if it already exists | jdbc:h2:;IFEXISTS=TRUE jdbc:h2:file:~/sample;IFEXISTS=TRUE |
Don’t close the database when the VM exits | jdbc:h2:;DB_CLOSE_ON_EXIT=FALSE |
Execute SQL on connection | jdbc:h2:;INIT=RUNSCRIPT FROM ‘~/create.sql’ jdbc:h2:file:~/sample;INIT=RUNSCRIPT FROM ‘~/create.sql’;RUNSCRIPT FROM ‘~/populate. |