Skip to content

切换数据库

certd支持如下几种数据库:

  1. sqlite3 (默认)
  2. mysql
  3. postgresql

您可以按如下两种方式切换数据库

一、全新安装

TIP

以下按照docker-compose安装方式介绍如何使用mysql或postgresql数据库
如果您使用其他方式部署,请自行修改对应的环境变量即可。

1.1、使用mysql数据库

  1. 安装mysql,创建数据库 (注意:charset=utf8mb4, collation=utf8mb4_bin)
  2. 下载最新的docker-compose.yaml
  3. 修改环境变量配置
yaml
services:
  certd:
    environment:
      # 使用mysql数据库,需要提前创建数据库 charset=utf8mb4, collation=utf8mb4_bin
      - certd_flyway_scriptDir=./db/migration-mysql                     # 升级脚本目录 【照抄】
      - certd_typeorm_dataSource_default_type=mysql                     # 数据库类型, 或者 mariadb 
      - certd_typeorm_dataSource_default_host=localhost                 # 数据库地址
      - certd_typeorm_dataSource_default_port=3306                      # 数据库端口
      - certd_typeorm_dataSource_default_username=root                  # 用户名
      - certd_typeorm_dataSource_default_password=yourpasswd            # 密码
      - certd_typeorm_dataSource_default_database=certd                 # 数据库名
  1. 启动certd
shell
docker-compose up -d

1.2、使用Postgresql数据库

  1. 安装postgresql,创建数据库
  2. 下载最新的docker-compose.yaml
  3. 修改环境变量配置
yaml
services:
  certd:
    environment:
      # 使用postgresql数据库,需要提前创建数据库
      - certd_flyway_scriptDir=./db/migration-pg                        # 升级脚本目录 【照抄】
      - certd_typeorm_dataSource_default_type=postgres                  # 数据库类型 【照抄】
      - certd_typeorm_dataSource_default_host=localhost                 # 数据库地址
      - certd_typeorm_dataSource_default_port=5433                      # 数据库端口
      - certd_typeorm_dataSource_default_username=postgres              # 用户名
      - certd_typeorm_dataSource_default_password=yourpasswd            # 密码
      - certd_typeorm_dataSource_default_database=certd                 # 数据库名
  1. 启动certd
shell
docker-compose up -d

二、从旧版的sqlite切换数据库

从旧版sqlite迁移到mysqlpostgresql数据库

下面以 SQLiteMySQL 为例进行演示

db-0.png

0.前提条件:

  1. SQLite版Certd站点已经升级到最新版建议:备份sqlite数据库
  2. 全新安装MySQL版本Certd(确保是全新的,因为里面的数据会被清空覆盖
  3. 两套Certd站点版本一致

1. 安装DBeaver工具

https://dbeaver.io/download/

db-1.png

2. 连接到sqlite数据库

db-2.png

db-3.png

3. 连接到mysql或postgresql数据库

db-4.png

db-5.png

4. 开始同步数据

选择mysql数据库,选择所有的表(flyway_history除外),右键导入数据

切记flyway_history数据表不要导入

db-6.pngdb-7.pngdb-8.png 下一步、下一步,直到数据加载设置,勾选在加载前截断目标表(此选项很重要,并且会清空mysql certd数据库中的数据) db-7.png

5. 导入完成

db-9.png

6. 重启MySQL版本Certd

访问MySQL版本测试,数据已成功迁移

确认没有问题之后,删除旧版certd