📄 使用PostgreSQL数据库
内部资料,请刷新扫码登录
pigcloud
# 环境说明
依赖 | 版本 |
---|---|
数据库 | PostgreSQL 16.3 |
PIGX | 5.6 |
架构模式 | 微服务 |
数据库同步工具 | dbswitch 1.9.8 |
# ① 同步 MySQL 最新脚本获取对应的 PostgreSQL 脚本
# 安装同步工具
1.下载链接: dbswitch 异构数据库迁移同步(搬家)工具 (opens new window) 提取码: 8888
2.解压
dbswitch-release-1.9.8.tar.gz
,并配置conf/application.yml
文件中的数据库连接信息(只需手动创建数据库,此工具会自动创建表)。3.启动 dbswitch,双击运行
bin/startup.cmd
。4.在浏览器中访问:http://localhost:9088,默认账号密码:admin/123456
# 创建同步任务
- 5.在“链接管理”中添加数据源,分别添加 MySQL(指向 PIGX 的 MySQL 数据库)和 PostgreSQL 的数据源(目标为 PIGX 的 PostgreSQL 数据库)。
- 6.在“任务管理”中创建任务并启动执行。
在配置目标端时,注意在【同步前置执行SQL脚本】中执行以下内容:
CREATE PROCEDURE RemoveNotNullConstraintsExceptPrimaryKey()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE tbl_name VARCHAR(255);
DECLARE cur CURSOR FOR SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE();
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO tbl_name;
IF done THEN
LEAVE read_loop;
END IF;
-- 构建 ALTER 语句,排除主键列
SET @alter_sql = (
SELECT GROUP_CONCAT(CONCAT('MODIFY ', COLUMN_NAME, ' ', COLUMN_TYPE, ' NULL'))
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = tbl_name
AND IS_NULLABLE = 'NO'
AND COLUMN_KEY != 'PRI'
);
-- 执行修改表结构的 SQL
IF @alter_sql IS NOT NULL THEN
SET @full_alter_sql = CONCAT('ALTER TABLE ', tbl_name, ' ', @alter_sql);
PREPARE stmt FROM @full_alter_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END LOOP;
CLOSE cur;
END //
DELIMITER ;
-- 调用存储过程
SET FOREIGN_KEY_CHECKS = 0;
CALL RemoveNotNullConstraintsExceptPrimaryKey();
# ② 修改数据库链接信息
# common-sequence 修改
- 在
pigx-common-sequence/pom.xml
中保留或修改成PostgreSQL驱动:
# 修改各模块数据库链接信息
driver-class-name: org.postgresql.Driver
username: XX
password: XX
url: jdbc:postgresql://127.0.0.1:5432/DBNAME
# 进阶: Nacos 本地模式运行
# ① 导出配置文件
# ② 关闭 pigx-register 链接数据库
- 访问 pigx-register: http://127.0.0.1:8848/nacos
# ③ 导入配置信息
重新访问 pigx-register: http://127.0.0.1:8848/nacos
导入 ① 导出的配置文件
# 特别说明:
XXL 不支持 mysql 以外数据源,请使用 PIGX 内置的 Quartz 任务调度