ster工具创建一个数据库福分到另外的地方,并且初始化集群,这样就得到了同样数据的两个数据库
· 启动两个数据库服务(每个数据库的副本)
· 现在可以通过应用客户端连接到数据库
使用创建集群工具
要了解集群如何工作,请尝试下面的例子,在这个例子里,两个数据库驻留在同一台计算机上,但通常,两个数据库在不同的计算机上。
· 创建两个目录:server1,server2。每个目录将模拟一台计算机
· 在第一个目录启动TCP服务,你可以运行下面的命令:
· java org.h2.tools.Server
· -tcp-tcpPort 9101
· -baseDirserver1
· 在第二个目录启动TCP服务,模拟第二个服务器(冗余运行),你能使用下面的命令:
· java org.h2.tools.Server
· -tcp-tcpPort 9102
· -baseDirserver2
· 使用 CreateCluster 工具初始化集群,如果数据库不存在,将创建一个新的空数据库,运行下面命令行:
· 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连接数据库:jdbc:h2:tcp://localhost:9101,localhost:9102/~/test
· 如果你停止一个服务(通过杀进程),你注意到另一个机器继续工作,数据库仍能提供访问。
· 恢复集群,你需要先删掉宕机的数据库,然后重启宕机的数据库的服务,再重新运行CreateCluster集群工具。
检测运行状态下的集群
查找哪些节点当前正在运行,通过执行下面的SQL语句:
SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERENAME='CLUSTER'
结果返回为 '' (两个单引号),说明集群模式被屏蔽,否则,集群服务器列表将被单引号包括着返回,如'server1:9191,server2:9191'。
2、上面的 URL 改为 jdbc:h2:~/mem:test 也是可以的。如果是localhost必须启动服务。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
数据库连接 URL说明
数据库支持多种连接模式和连接设置,不同的连接模式和连接设置是通过不同的URL来区分的,URL中的设置是不区分大小写。
| Topic |
URL Format and Examples |
| 嵌入式(本地)连接 |
jdbc:h2:[file:][] jdbc:h2:~/test jdbc:h2:file:/data/sample jdbc:h2:file:C:/data/sample (Windows only) |
| 内存数据库(私有) |
jdbc:h2:mem: |
| 内存数据库(被命名) |
jdbc:h2:mem: jdbc:h2:mem:test_mem |
| 使用TCP/IP的服务器模式(远程连接) |
jdbc:h2:tcp://[:]/[] jdbc:h2:tcp://localhost/~/test jdbc:h2:tcp://dbserv:8084/~/sample |
| 使用SSL/TLS的服务器模式(远程连接) |
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 |
| 仅打开存在的数据库 |
jdbc:h2:;IFEXISTS=TRUE jdbc:h2:file:~/sample;IFEXISTS=TRUE |
| 当虚拟机退出时并不关闭数据库 |
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 |
| 调试跟踪项设置 |
jdbc:h2:;TRACE_LEVEL_FILE= jdbc:h2:file:~/sample;TRACE_LEVEL_FILE=3 |
| 忽略位置参数设置 |
jdbc:h2:;IGNORE_UNKNOWN_SETTINGS=TRUE |
| 指定文件读写模式 |
jdbc:h2:;ACCESS_MODE_LOG=rws;ACCESS_MODE_DATA=rws |
| 在Zip文件中的数据库 |
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 |
| 更改其他设置 |
jdbc:h2:;=[;=...] jdbc:h2:file:~/sample;TRACE_LEVEL_SYSTEM_OUT=3 |