记一次数据库迁移过程🤣阿里云mysql👉本地 H2 DataBase🤣&& H2 DataBase 初次学习记录🙃

记一次数据库迁移过程🤣阿里云mysql👉本地 H2 DataBase🤣&& H2 DataBase 初次学习记录🙃

Scroll Down

背景

项目本身并不是很依赖数据库,只是在数据库中存储一些配置信息,当初设计系统的时候使用的mysql数据库,数据库安装在阿里云VPS上,考虑到服务器到期与速度的问题,决定将mysql换成更加方便的H2数据库。

H2 DataBase 简介

/**
 * Very fast, open source, JDBC API,
 * Embedded and server modes; in-memory databases
 * Browser based Console application
 * Small footprint: around 2 MB jar file size
 **/
1、H2数据库是一个开源的关系型数据库。H2是一个嵌入式数据库引擎,采用java语言编写,不受
平台的限制,同时支持网络版和嵌入式版本,有比较好的兼容性,支持相当标准的sql标准,支持集群
2、提供JDBC、ODBC访问接口,提供了非常友好的基于web的数据库管理界面
3、以嵌入式(本地)连接方式连接H2数据库
  这种连接方式默认情况下只允许有一个客户端连接到H2数据库,有客户端连接到H2数据库之后,
    此时数据库文件就会被锁定,那么其他客户端就无法再连接了。

  连接语法:jdbc:h2:[file:][<path>]<databaseName>

  例如:
    jdbc:h2:~/test //连接位于用户目录下的test数据库
    jdbc:h2:file:/data/sample
    jdbc:h2:file:E:/H2/gacl(Windows only)

4、使用TCP/IP的服务器模式(远程连接)方式连接H2数据库
  这种连接方式就和其他数据库类似了,是基于Service的形式进行连接的,因此允许多个客户端同
    时连接到H2数据库

  连接语法:jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName>
  范例:jdbc:h2:tcp://localhost/~/test

5、H2数据库的内存模式
  
   (1)、H2数据库被称为内存数据库,因为它支持在内存中创建数据库和表

   (2)、注意:如果使用H2数据库的内存模式,那么我们创建的数据库和表都只是保存在内存中,
              一旦服务器重启,那么内存中的数据库和表就不存在了。

安装并运行 H2 DataBase

官网地址:http://www.h2database.com/html/main.html
下载"All Platforms" 版本,其可在linux与win平台运行。这里讲解在linux上安装运行的方法。

运行shell工具创建数据库

解压下载后的软件包并进入到bin下运行:

java -cp h2*.jar org.h2.tools.Shell
Welcome to H2 Shell
Exit with Ctrl+C
[Enter]   jdbc:h2:mem:2
URL       jdbc:h2:你要定义的数据库文件路径
[Enter]   org.h2.Driver
Driver
[Enter]   sa
User      数据库的用户名
Password  数据库密码(hidden)
Type the same password again to confirm database creation.
Password  (hidden)
Connected
sql> quit
Connection closed

运行 H2 DataBase 并开启web管理平台与tcp远程访问

这里使其后台运行并防止会话退出后程序结束

nohup java -cp /home/appl/h2/bin/h2-1.4.200.jar org.h2.tools.Server -web -webAllowOthers -tcp -tcpPort 19200 -tcpAllowOthers >h2.log &
访问web管理平台

浏览器输入Linux系统的IP:8082(默认端口)访问数据库

迁移数据

将mysql中的数据迁移到新建的H2 数据库中

导出mysql数据库中的数据为csv文件

insert into xxx ( select * from csvread('/home/appl/temp/xxx.csv') ) ;

image.png

在H2 web后台管理平台新建表并实现数据导入

注意将csv文件放在linux服务器上而不是浏览器所在的那台计算机上
image.png

项目中修改数据库链接url

因为目的是将数据库文件与项目放在同一台机器上,所以使用H2数据库的内嵌方式链接。

datasource.url=jdbc:h2:~/h2/xxx;AUTO_SERVER=TRUE

附: H2 DataBase 不同模式的URL配置方式

  • 内嵌模式(通过JDBC进行本地连接,应用和数据库在同一个JVM中)
  • 服务器模式(通过JDBC或ODBC或TCP/IP进行远程连接)
  • 混合模式(同时支持本地和远程连接)

15908314644716.png

可选择性关闭 H2 进程

完成上述操作之后,项目就在之前创建的数据库文件中存储数据了,可选择结束H2 程序

#获取PID
jps -l | grep h2
#结束进程
kill -9 PID

image.png

至此完成数据库的迁移,访问速度明显变快了,且不用依赖于mysql数据库,项目迁移也十分方便,直接复制项目与数据库文件就行了。