数据迁移至 PgSQL
需要注意几点:
1、在数据迁移前,需要使用与自编译版本相同的 Umami Docker 镜像,当数据迁移完成后,运行访问服务测试没有问题,再进行升级操作。此处使用的是 v2.9.0。
2、需要开放 服务器的 3306 以及 5432 端口。
3、数据迁移后可能会出现一些 BUG,不过我暂时没有碰到(免责声明)。
部署与自编译版本相同的 Umami
将下列配置保存为 docker-compose.yaml 文件,数据库信息的修改请看上一节文件中的注释。
请注意删除注释以及修改相关配置。
version: '3'
services:
umami:
image: ghcr.io/umami-software/umami:postgresql-v2.9.0
//如果你在使用国内服务器部署 Umami,可以使用南京大的ghcr镜像:ghcr.nju.edu.cn
//修改为对应的 Umami 版本
//image: ghcr.nju.edu.cn/umami-software/umami:postgresql-latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://umami:umami@db:5432/umami
DATABASE_TYPE: postgresql
APP_SECRET: replace-me-with-a-random-string
depends_on:
db:
condition: service_healthy
restart: always
healthcheck:
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
interval: 5s
timeout: 5s
retries: 5
db:
image: postgres:15-alpine
ports:
- "5432:5432"
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: umami
volumes:
- /www/wwwroot/umami/PgSQL:/var/lib/postgresql/data
//PgSQL数据库镜像数据存储的路径,请酌情修改
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
用 cd 命令打开 docker-compose.yaml 的目录,运行下列命令:
docker-compose up -d
构建容器启动后,可以进行下一步。
使用 Navicat Premium 迁移数据
再此再次感谢 Shell !!!!!
容器启动后,打开 Navicat Premium ,新建 MySQL 与 PgSQL 数据库的链接。
点击导航栏中:工具 ---> 数据传输,左侧 MySQL,右侧 PgSQL,具体配置如图:
点击下方导航栏的选项,具体配置如图:
点击下一步,此处需要传输的表仅四个:session、user、website、website_event。
如果需要别的表,可以尝试传输,但并不保证可以正常使用。
点击下一步,然后开始,此步骤根据服务器配置以及带宽和数据量的不同,所需时间不同。
最后一行显示 Finished with error 则为数据迁移完成。
重启 Umami 以及 PgSQL 容器:
docker restart umami-db-1
docker restart umami-umami-1
//具体容器名称可以使用 docker ps 命令查看
访问 http://ip:3000 使用原用户名、密码登录,测试数据是否正确,以及是否有什么 BUG。
在此需要注意:请删除原有的 admin 账户。
如无问题,可进行下一步。
升级 Umami
编辑 docker-compose.yaml 替换为以下内容:
version: '3'
services:
umami:
image: ghcr.io/umami-software/umami:postgresql-latest
//如果你在使用国内服务器部署 Umami,可以使用南京大的ghcr镜像:ghcr.nju.edu.cn
//image: ghcr.nju.edu.cn/umami-software/umami:postgresql-latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://umami:umami@db:5432/umami
//Umami数据库设置,可修改,但也请修改 PgSQL 镜像中的配置信息
DATABASE_TYPE: postgresql
APP_SECRET: replace-me-with-a-random-string
depends_on:
db:
condition: service_healthy
restart: always
healthcheck:
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
interval: 5s
timeout: 5s
retries: 5
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: umami
// PgSQL 数据信息
volumes:
- /www/wwwroot/umami:/var/lib/postgresql/data
//PgSQL数据库镜像数据存储的路径,请酌情修改
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
运行下列命令:
docker-compose up -d
此时,因为需要升级程序数据库,所以根据服务器性能不同所需时间不同。
升级数据库完成后,打开 http://ip:3000 即可进行使用。
使用 nginx 进行反代操作此处不再赘述。
再次强调:请删除原有的 admin 账户。
至此 Umami 数据迁移基本完成~
原文:https://roy.wang/docker-umami-to-pgsql/