最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何將mysql遷移到翰高數(shù)據(jù)庫

 更新時間:2026年03月08日 11:42:41   作者:shan~~  
瀚高基礎軟件股份有限公司成立于2005年,是國內數(shù)據(jù)庫行業(yè)龍頭企業(yè),專業(yè)從事數(shù)據(jù)庫管理系統(tǒng)研發(fā)、銷售與服務,下面這篇文章主要介紹了如何將mysql遷移到翰高數(shù)據(jù)庫的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

一,設置翰高數(shù)據(jù)庫可以遠程訪問

檢查數(shù)據(jù)庫服務狀態(tài)

# 檢查數(shù)據(jù)庫服務是否運行
sudo systemctl status highgo
# 如果沒有運行,啟動服務
sudo systemctl start highgo
# 檢查進程
ps aux | grep postgres

檢查本地連接

# 先在數(shù)據(jù)庫服務器本地測試連接
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

重啟數(shù)據(jù)庫服務器

# 重啟服務
sudo systemctl restart highgo

檢查端口監(jiān)聽

# 檢查5866端口是否在監(jiān)聽
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

# 檢查防火墻狀態(tài)
sudo ufw status

備注,如果檢查端口監(jiān)聽時,出現(xiàn)

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

這會只能本地連接,不能遠程連接。

需要再排查下原因,這是我遇到的問題,解決方案

用root權限檢查端口監(jiān)聽

# 用sudo檢查端口監(jiān)聽(顯示完整信息)
sudo netstat -tulpn | grep 5866

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

檢查數(shù)據(jù)庫日志

# 查看數(shù)據(jù)庫啟動日志
sudo journalctl -u highgo -n 20

# 或者查看數(shù)據(jù)庫日志文件
sudo tail -f /home/jing/hgdb-v9.0/data/log/*.log

檢查是否有其他配置覆蓋

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

# 檢查是否有環(huán)境變量覆蓋
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 = '*'

重啟數(shù)據(jù)庫服務

# 重啟服務
sudo systemctl restart highgo

# 檢查狀態(tài)
sudo systemctl status highgo

# 檢查端口監(jiān)聽
sudo netstat -tulpn | grep 5866

應該能看到

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

二,進行遷移,這里選擇從mysql遷移到翰高數(shù)據(jù)庫

方法1,使用 Navicat Premium

Navicat Premium 支持多種數(shù)據(jù)庫,包括 MySQL 和 PostgreSQL(與翰高數(shù)據(jù)庫兼容),可以方便地進行數(shù)據(jù)傳輸。

步驟

1,準備環(huán)境:確保你安裝了 Navicat Premium,并且可以同時連接到源 MySQL 數(shù)據(jù)庫和目標翰高數(shù)據(jù)庫。

2,創(chuàng)建目標空數(shù)據(jù)庫:在翰高數(shù)據(jù)庫中創(chuàng)建一個空的數(shù)據(jù)庫,用于接收數(shù)據(jù)。

3,使用“數(shù)據(jù)傳輸”功能:

  • 在 Navicat 中,選擇 工具 -> 數(shù)據(jù)傳輸。
  • 源:選擇你的 MySQL 連接和數(shù)據(jù)庫。
  • 目標:選擇你的翰高數(shù)據(jù)庫連接和剛創(chuàng)建的空數(shù)據(jù)庫。

4,配置傳輸選項:

  • “高級”選項卡:這是關鍵。

勾選 “遇到錯誤時繼續(xù)”,避免因單條記錄失敗而中斷整個進程。

在 “記錄轉換” 或類似選項中,可以選擇在傳輸時執(zhí)行一些簡單的數(shù)據(jù)轉換。

  • “選項”選項卡:可以選擇傳輸表結構、數(shù)據(jù)、索引、約束等。建議第一次先只傳輸 “結構”,檢查和修復問題后,再單獨傳輸 “數(shù)據(jù)”。

5,運行并檢查:

  • 開始傳輸。Navicat 會自動嘗試創(chuàng)建兼容的表結構并插入數(shù)據(jù)。
  • 傳輸完成后,務必仔細檢查日志文件,查看是否有表創(chuàng)建失敗、數(shù)據(jù)類型轉換錯誤或數(shù)據(jù)插入失敗等情況。

6,手動修復:根據(jù)日志中的錯誤,手動在翰高數(shù)據(jù)庫中修復不兼容的 SQL 語句或數(shù)據(jù)類型。

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

這是一種比較原始但可控的方法,適用于數(shù)據(jù)量不大或需要深度定制的情況。

步驟:

1,從 MySQL 導出結構和數(shù)據(jù)

  • 使用 mysqldump 工具,但最好將表結構和數(shù)據(jù)分開導出,以便于修改。

  • 導出僅結構:

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

導出僅數(shù)據(jù):

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

2,轉換 SQL 文件

這是最繁瑣但最關鍵的一步。你需要手動或使用腳本修改 mysql_schema.sql 文件,使其符合翰高數(shù)據(jù)庫(PostgreSQL)的語法。

常見轉換項:

  • 反引號:MySQL 使用 `,PostgreSQL 使用 " 或不使用(如果表名/字段名不是關鍵字)。

  • 自增主鍵:

    MySQL: id int AUTO_INCREMENT PRIMARY KEY

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 (建議,帶時區(qū))

  • 布爾類型:

TINYINT(1) -> BOOLEAN

  • 注釋語法:

MySQL: COMMENT 這是一個注釋

PostgreSQL: COMMENT ON COLUMN table_name.column_name IS ‘這是一個注釋’;

  • 索引:檢查是否有特定于 MySQL 的索引類型(如 FULLTEXT),需要在翰高中找到替代方案(如 GIN 索引)。

  • 引擎聲明:刪除 ENGINE=InnoDB 等。

3,在翰高數(shù)據(jù)庫中導入

  • 使用 psql 命令行工具連接到翰高數(shù)據(jù)庫。

  • 先導入修改后的結構文件:

psql -h [highgo_host] -U [highgo_user] -d [highgo_database] -f converted_schema.sql
  • 然后導入數(shù)據(jù)文件:
psql -h [highgo_host] -U [highgo_user] -d [highgo_database] -f mysql_data.sql

4,修復序列(自增)

數(shù)據(jù)導入后,表的自增序列可能沒有更新到最大值,需要手動重置。

sql
-- 為每個有自增主鍵的表執(zhí)行以下操作(以表 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.數(shù)據(jù)一致性檢查:隨機抽取幾張表,對比 MySQL 和翰高數(shù)據(jù)庫中的記錄數(shù)量以及關鍵字段的值是否一致。

2.應用程序測試:將應用程序的連接字符串指向新的翰高數(shù)據(jù)庫,進行全面的功能測試、性能測試和壓力測試。

3.檢查存儲過程和函數(shù):如果 MySQL 中有存儲過程、函數(shù)或觸發(fā)器,它們幾乎 100% 需要重寫,因為兩者的語法完全不同。這部分通常是手動工作量最大的。

4.檢查外鍵和約束:確保所有外鍵約束、唯一約束等都正確遷移。

5.權限配置:重新配置應用程序用戶的權限。

總結

到此這篇關于如何將mysql遷移到翰高數(shù)據(jù)庫的文章就介紹到這了,更多相關mysql遷移到翰高數(shù)據(jù)庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL 選擇合適的存儲引擎

    MySQL 選擇合適的存儲引擎

    這篇文章主要介紹了MySQL如何選擇合適的存儲引擎,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09
  • 一文帶你徹底了解MySQL事務機制

    一文帶你徹底了解MySQL事務機制

    一個事情由n個單元組成,這n個單元在執(zhí)行過程中,要么同時成功,要么同時失敗,這就把n個單元放在了一個事務之中,這篇文章主要給大家詳細介紹MySQL的事務機制,感興趣的同學歡迎閱讀本文
    2023-06-06
  • Ubuntu18.04安裝mysql5.7.23的教程

    Ubuntu18.04安裝mysql5.7.23的教程

    這篇文章主要為大家詳細介紹了Ubuntu18.04安裝mysql5.7.23的教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • DROP TABLE在不同數(shù)據(jù)庫中的寫法整理

    DROP TABLE在不同數(shù)據(jù)庫中的寫法整理

    這篇文章主要介紹了DROP TABLE在不同數(shù)據(jù)庫中的寫法整理的相關資料,需要的朋友可以參考下
    2017-04-04
  • MyBatis 如何寫配置文件和簡單使用

    MyBatis 如何寫配置文件和簡單使用

    這篇文章主要介紹了MyBatis 如何寫配置文件和簡單使用的相關資料,需要的朋友可以參考下
    2017-01-01
  • 淺談MySQL函數(shù)

    淺談MySQL函數(shù)

    這篇文章主要介紹MySQL函數(shù),主要解說數(shù)學函數(shù)、字符串函數(shù)、 時間函數(shù)、加密函數(shù),需要的朋友可以參考下面文章具體內容
    2021-09-09
  • MySQL修改配置 區(qū)分大小寫

    MySQL修改配置 區(qū)分大小寫

    修改MySql Server安裝目錄下的 my.ini 文件,在mysqld節(jié)下加入下面一行 set-variable=lower_case_table_names=0 (0:大小寫敏感;1:大小寫不敏感)最后重啟一下MySql服務即可。
    2010-12-12
  • Mysql根據(jù)一個表的數(shù)據(jù)更新另一個表數(shù)據(jù)的SQL寫法(三種寫法)

    Mysql根據(jù)一個表的數(shù)據(jù)更新另一個表數(shù)據(jù)的SQL寫法(三種寫法)

    這篇文章主要介紹了Mysql根據(jù)一個表的數(shù)據(jù)更新另一個表數(shù)據(jù)的SQL寫法,本文給大家分享三種解決方法,需要的朋友可以參考下
    2023-06-06
  • 基于sqlalchemy對mysql實現(xiàn)增刪改查操作

    基于sqlalchemy對mysql實現(xiàn)增刪改查操作

    這篇文章主要介紹了基于sqlalchemy對mysql實現(xiàn)增刪改查操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • mysql 8.0.22 安裝配置方法圖文教程

    mysql 8.0.22 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 8.0.22 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10

最新評論

普兰店市| 泾阳县| 无棣县| 长乐市| 陵川县| 南和县| 镇康县| 星子县| 碌曲县| 犍为县| 巴彦淖尔市| 禄丰县| 普洱| 三门县| 尚志市| 皋兰县| 松溪县| 两当县| 安徽省| 枝江市| 怀宁县| 泽库县| 达州市| 新野县| 崇左市| 洞头县| 兰西县| 赤峰市| 三河市| 威信县| 太谷县| 塔城市| 冀州市| 逊克县| 新密市| 海宁市| 花垣县| 含山县| 西乌珠穆沁旗| 吉木乃县| 奉节县|