中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL數據全量導入PG的方法

發布時間:2020-06-18 11:10:49 來源:網絡 閱讀:942 作者:我的二狗呢 欄目:系統運維

下面會用到一個perl腳本來做數據格式的轉換: https://github.com/ahammond/mysql2pgsql


1 導出mysql的數據

#?導出結構
mysqldump?bx_cmdb_37?--master-data=2??--skip-opt?--default-character-set=utf8?--no-data?--compact?--skip-dump-date?--set-gtid-purged=OFF?>?/tmp/struct.sql

#?導出數據
mysqldump?bx_cmdb_37?--master-data=2??--skip-opt?--default-character-set=utf8?--no-create-info??--compact?--skip-dump-date?--set-gtid-purged=OFF?>?/tmp/data.sql


2 使用perl腳本,將上一步驟中的2個sql轉為pg格式的,命令類似如下

下載?到?/root/目錄下
chmod?+x?/root/mysql2pgsql.perl

cd?/tmp/

/root/mysql2pgsql.perl?struct.sql?struct_pg.sql
/root/mysql2pgsql.perl?data.sql?data_pg.sql

sed?-i.bak?'s#?int?#?bigint?#g'?struct_pg.sql
sed?-i.bak?'s#?smallint?#?int?#g'?struct_pg.sql
sed?-i.bak?'s#?datetime(6)?#?timestamp?#g'?struct_pg.sql

做上面的幾個sed替換操作的原因是:?這里我遇到幾個問題(我下面的操作處理的不夠優雅):
1?部分int?unsigned的數據,perl腳本給轉成了int?signed,導致范圍縮小了,后續插入數據可能溢出,因此我這里將全部建表語句中的int?替換為bigint
2?注意?datetime的列,在PG里面我們需要人工改成?timestamp?類型的,不然會報錯
3?smallint?都改成?int類型,防止到PG中插入溢出




3 將文件導入到PG庫中(注意可能有些不兼容的報錯)

chown?postgres.postgres?/tmp/bbb.sql
psql?--port?5434?-d?testdb?-f?/tmp/bbb.sql???即可導入到PG的testdb庫中




4 后續的增量數據同步,可以使用 go-mysql-postgresql來進行(下一篇blog介紹用法)

我們?導出data.sql?的時候,?已經帶上?master-data了,很容易就知道最后復制的binlog位置。



## 參考? http://zhansq.cn/article/18-08-09/43.html

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新邵县| 城口县| 霍州市| 南充市| 怀宁县| 萍乡市| 东至县| 印江| 绍兴县| 石楼县| 景洪市| 崇左市| 仪征市| 泽普县| 岐山县| 安仁县| 泰安市| 德保县| 和顺县| 兴业县| 昌江| 辽源市| 武胜县| 安康市| 噶尔县| 阿拉善盟| 蒙城县| 淮南市| 晋宁县| 巴东县| 富锦市| 丹阳市| 铜陵市| 海原县| 桂东县| 莱西市| 抚宁县| 志丹县| 永安市| 长阳| 五大连池市|