Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql迁移到翰高数据库

如何将mysql迁移到翰高数据库

作者:shan~~

瀚高基础软件股份有限公司成立于2005年,是国内数据库行业龙头企业,专业从事数据库管理系统研发、销售与服务,下面这篇文章主要介绍了如何将mysql迁移到翰高数据库的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

一,设置翰高数据库可以远程访问

检查数据库服务状态

# 检查数据库服务是否运行
sudo systemctl status highgo
# 如果没有运行,启动服务
sudo systemctl start highgo
# 检查进程
ps aux | grep postgres

检查本地连接

# 先在数据库服务器本地测试连接
psql -h localhost -p 5866 -d highgo -U jing -c "SELECT version();"

配置远程访问

vi /home/jing/hgdb-v9.0/data/postgresql.conf

找到并修改

listen_addresses = '*'    # 允许所有IP连接
port = 5866

修改客户端认证

# 允许从任何IP连接
host    all             all             0.0.0.0/0               scram-sha-256

重启数据库服务器

# 重启服务
sudo systemctl restart highgo

检查端口监听

# 检查5866端口是否在监听
netstat -tulpn | grep 5866

# 应该看到类似:
# tcp  0  0 0.0.0.0:5866  0.0.0.0:*  LISTEN  12345/postgres

配置防火墙

# 开放5866端口
sudo ufw allow 5866

# 或者针对特定IP开放
sudo ufw allow from 192.168.190.154 to any port 5866

# 检查防火墙状态
sudo ufw status

备注,如果检查端口监听时,出现

tcp 0 127.0.0.1:5866 0.0.0.0:* LISTEN 12345/postgres

这会只能本地连接,不能远程连接。

需要再排查下原因,这是我遇到的问题,解决方案

用root权限检查端口监听

# 用sudo检查端口监听(显示完整信息)
sudo netstat -tulpn | grep 5866

# 或者使用ss命令
sudo ss -tulpn | grep 5866

检查数据库日志

# 查看数据库启动日志
sudo journalctl -u highgo -n 20

# 或者查看数据库日志文件
sudo tail -f /home/jing/hgdb-v9.0/data/log/*.log

检查是否有其他配置覆盖

# 检查所有配置文件中关于listen的设置
sudo grep -r "listen" /home/jing/hgdb-v9.0/data/

# 检查是否有环境变量覆盖
sudo grep -r "PGPORT\|PGHOST" /etc/systemd/system/

通过以上找到问题

有两个配置文件在冲突:

/home/jing/hgdb-v9.0/data/postgresql.conf - 设置了 listen_addresses = ‘*’

/home/jing/hgdb-v9.0/data/db.conf - 设置了 listen_addresses = ‘localhost’

db.conf 文件覆盖了 postgresql.conf 的设置!

解决方案

# 编辑 db.conf 文件
sudo vi /home/jing/hgdb-v9.0/data/db.conf

找到并修改:

# 将
listen_addresses = 'localhost'

# 改为
listen_addresses = '*'

重启数据库服务

# 重启服务
sudo systemctl restart highgo

# 检查状态
sudo systemctl status highgo

# 检查端口监听
sudo netstat -tulpn | grep 5866

应该能看到

tcp        0      0 0.0.0.0:5866          0.0.0.0:*               LISTEN      xxxxx/postgres

二,进行迁移,这里选择从mysql迁移到翰高数据库

方法1,使用 Navicat Premium

Navicat Premium 支持多种数据库,包括 MySQL 和 PostgreSQL(与翰高数据库兼容),可以方便地进行数据传输。

步骤

1,准备环境:确保你安装了 Navicat Premium,并且可以同时连接到源 MySQL 数据库和目标翰高数据库。

2,创建目标空数据库:在翰高数据库中创建一个空的数据库,用于接收数据。

3,使用“数据传输”功能:

4,配置传输选项:

勾选 “遇到错误时继续”,避免因单条记录失败而中断整个进程。

在 “记录转换” 或类似选项中,可以选择在传输时执行一些简单的数据转换。

5,运行并检查:

6,手动修复:根据日志中的错误,手动在翰高数据库中修复不兼容的 SQL 语句或数据类型。

方法2:使用 SQL 文件导出和导入 (通用方法)

这是一种比较原始但可控的方法,适用于数据量不大或需要深度定制的情况。

步骤:

1,从 MySQL 导出结构和数据

mysqldump -h [mysql_host] -u [user] -p --no-data [database_name] > mysql_schema.sql

导出仅数据:

mysqldump -h [mysql_host] -u [user] -p --no-create-info [database_name] > mysql_data.sql

2,转换 SQL 文件

这是最繁琐但最关键的一步。你需要手动或使用脚本修改 mysql_schema.sql 文件,使其符合翰高数据库(PostgreSQL)的语法。

常见转换项:

PostgreSQL: id SERIAL PRIMARY KEY 或 id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY

LONGTEXT -> TEXT

TINYTEXT -> TEXT 或 VARCHAR

VARCHAR(255) -> VARCHAR(255) (通常不变)

DATETIME -> TIMESTAMP

TIMESTAMP -> TIMESTAMPTZ (建议,带时区)

TINYINT(1) -> BOOLEAN

MySQL: COMMENT 这是一个注释

PostgreSQL: COMMENT ON COLUMN table_name.column_name IS ‘这是一个注释’;

3,在翰高数据库中导入

psql -h [highgo_host] -U [highgo_user] -d [highgo_database] -f converted_schema.sql
psql -h [highgo_host] -U [highgo_user] -d [highgo_database] -f mysql_data.sql

4,修复序列(自增)

数据导入后,表的自增序列可能没有更新到最大值,需要手动重置。

sql
-- 为每个有自增主键的表执行以下操作(以表 your_table 和主键列 id 为例)
SELECT setval(pg_get_serial_sequence('your_table', 'id'), COALESCE(MAX(id), 1)) FROM your_table;

-- 或者使用一个脚本生成所有表的修复语句
SELECT 'SELECT setval(pg_get_serial_sequence(''' || table_name || ''', ''' || column_name || '''), COALESCE(MAX(' || column_name || '), 1)) FROM ' || table_name || ';'
FROM information_schema.columns
WHERE table_schema = 'public'
AND column_default LIKE 'nextval%';

三,迁移后的关键检查和验证

无论使用哪种方法,迁移完成后都必须进行验证:

1.数据一致性检查:随机抽取几张表,对比 MySQL 和翰高数据库中的记录数量以及关键字段的值是否一致。

2.应用程序测试:将应用程序的连接字符串指向新的翰高数据库,进行全面的功能测试、性能测试和压力测试。

3.检查存储过程和函数:如果 MySQL 中有存储过程、函数或触发器,它们几乎 100% 需要重写,因为两者的语法完全不同。这部分通常是手动工作量最大的。

4.检查外键和约束:确保所有外键约束、唯一约束等都正确迁移。

5.权限配置:重新配置应用程序用户的权限。

总结

到此这篇关于如何将mysql迁移到翰高数据库的文章就介绍到这了,更多相关mysql迁移到翰高数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文