MySQL 遷移后無法快速導(dǎo)數(shù)據(jù)問題解決
背景
關(guān)于 5.6 升級到 5.7 之后,GTID 的相關(guān)功能的注意事項。
某金融公司有套系統(tǒng)最近剛遷移完,從 5.6 遷移到 5.7.30,并且在遷移前未開啟 GTID,遷移后開啟了 GTID 相關(guān)功能。業(yè)務(wù)按照以往的方式使用 CREATE TABLE ... SELECT ...
導(dǎo)數(shù)據(jù)的時候出現(xiàn)報錯:Error Code:1786 (HY000): Mysql Statement violates GTID consistency: CREATE TABLE ... SELECT
。
問題原理
這個問題比較簡單,原因就是遷移后的 MySQL5.7 使用了 GTID,開啟了 enforce_gtid_consistency
參數(shù)(GTID 強一致性)。
為保證分布式事務(wù)的一致性,MySQL 使用 GTID 來唯一標識一個事務(wù)。在 GTID 模式下,DDL 和 DML 語句會自動產(chǎn)生不同的 GTID 來標識不同的事務(wù)操作。但是 CREATE TABLE ... SELECT ...
只生成了一個 GTID,將 DDL 和 DML 操作合并為一個事務(wù)執(zhí)行,這在語句執(zhí)行失敗時,會造成主從數(shù)據(jù)不一致。開啟 enforce_gtid_consistency
參數(shù)就是為了 GTID 事務(wù)的原子性。
官方文檔也有對 CREATE TABLE ... SELECT ...
這一操作的說明:
解決方案
為了安全,不建議關(guān)閉這個參數(shù)。
在 MySQL5.7 上可以用拆分成兩句 SQL 的方式,解決這個問題,比如:
#先創(chuàng)建表 CREATE TABLE ... LIKE... #再插入數(shù)據(jù) INSERT INTO ... SELECT ...
雖然之前的單條 SQL 能簡單快速的導(dǎo)數(shù)到另一張表,但為了安全可以適當麻煩一點。
MySQL 8.0
好消息是從 MySQL8.0.21 開始,支持原子 DDL 的存儲引擎允許使用 CREATE TABLE ... SELECT ...
語句了。
以上就是MySQL 遷移后無法快速導(dǎo)數(shù)據(jù)問題解決的詳細內(nèi)容,更多關(guān)于MySQL遷移導(dǎo)數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
一次docker登錄mysql報錯問題的實戰(zhàn)記錄
這篇文章主要給大家介紹了一次docker登錄mysql報錯問題的實戰(zhàn)記錄,文中通過實例代碼介紹的非常詳細,對大家學習或者使用docker具有一定的參考學習價值,需要的朋友可以參考下2022-01-01Mysql數(shù)據(jù)庫事務(wù)的臟讀幻讀及不可重復(fù)讀詳解
這篇文章主要為大家介紹了Mysql數(shù)據(jù)庫事務(wù)的臟讀幻讀及不可重復(fù)讀詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05master and slave have equal MySQL server ids
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids2013-07-07mysql按天/小時/半小時/N分鐘/分鐘進行數(shù)據(jù)分組統(tǒng)計功能
我們在做項目或者數(shù)據(jù)分析時,經(jīng)常遇到這樣的需求:統(tǒng)計不同時間粒度下的數(shù)據(jù)分布情況,例如,每一天中每個小時網(wǎng)站的訪問量,某路口每半個小時通過的車輛數(shù)量等,下面給大家分享mysql按天/小時/半小時/N分鐘/分鐘進行數(shù)據(jù)分組統(tǒng)計功能,感興趣的朋友跟隨小編一起看看吧2024-04-04MySQL的的數(shù)據(jù)一致性保障與延遲問題處理
在分布式數(shù)據(jù)庫和高并發(fā)應(yīng)用場景下,數(shù)據(jù)一致性 和 數(shù)據(jù)延遲 是兩個不可忽視的問題,MySQL 作為廣泛使用的關(guān)系型數(shù)據(jù)庫,提供了多種機制來保障數(shù)據(jù)一致性,本文將深入探討 MySQL 如何保障數(shù)據(jù)一致性 以及 應(yīng)對數(shù)據(jù)延遲的策略,需要的朋友可以參考下2025-03-03mysql關(guān)聯(lián)查詢速度慢的問題及解決
這篇文章主要介紹了mysql關(guān)聯(lián)查詢速度慢的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03