MySQL の移行後にデータをすぐにインポートすることはできませんか?

5.6から5.7へバージョンアップ後のGTID関連機能の注意事項。

著者: Qin Fulang 氏。Aikesheng の DBA チームのメンバーで、日々のプロジェクトの問題の処理と会社のプラットフォームの問題のトラブルシューティングを担当しています。インターネットが好きで、写真に詳しく、料理の腕も立つ DBA は、良い運転手ではありません、ディディ〜

Aikeson オープンソース コミュニティによって作成されているため、オリジナルのコンテンツを許可なく使用することはできません。転載する場合は編集者に連絡し、出典を明示してください。

この記事は合計 400 ワードあり、読むのに 2 分かかると予想されます。

背景

金融会社のシステムは 5.6 から 5.7.30 に移行したばかりで、移行前は GTID が有効になっていませんでしたが、移行後は GTID 関連の機能が有効になりました。CREATE TABLE ... SELECT ...インポートされたデータをビジネスで通常の方法で使用すると、次のエラーが発生しますError Code:1786 (HY000): Mysql Statement violates GTID consistency: CREATE TABLE ... SELECT

問題の原理

この問題は比較的単純で、移行した MySQL5.7 では GTID が使用されており、パラメーター (GTID の強整合性) が有効になっていることが原因ですenforce_gtid_consistency

分散トランザクションの一貫性を確保するために、MySQL は GTID を使用してトランザクションを一意に識別します。GTID モードでは、DDL ステートメントと DML ステートメントは、異なるトランザクション操作を識別するために異なる GTID を自動的に生成します。ただし、CREATE TABLE ... SELECT ...生成される GTID は 1 つだけであり、DDL 操作と DML 操作は 1 つのトランザクション実行にマージされるため、ステートメントの実行が失敗したときにマスターとスレーブのデータの不整合が発生します。このパラメーターをオンにすると、enforce_gtid_consistencyGTID トランザクションのアトミック性が向上します。

公式ドキュメントでもCREATE TABLE ... SELECT ...この操作について説明しています。

解決

安全上の理由から、このパラメータをオフにすることはお勧めできません。

MySQL5.7 では、次のように SQL を 2 つの文に分割することでこの問題を解決できます。

#先创建表
CREATE TABLE ... LIKE...

#再插入数据
INSERT INTO ... SELECT ...

以前の 1 つの SQL は簡単かつ迅速に別のテーブルに派生できますが、安全性の観点から少し面倒な場合があります。

MySQL 8.0

良いニュースは、MySQL8.0.21 以降、アトミック DDL をサポートするストレージ エンジンでCREATE TABLE ... SELECT ...ステートメントの使用が許可されることです。

さらに技術的な記事については、https: //opensource.actionsky.com/をご覧ください。

SQLEについて

Axon オープン ソース コミュニティの SQLE は、マルチシナリオ監査、標準化されたオンライン プロセス、MySQL 監査のネイティブ サポート、およびスケーラブルなデータベース タイプをサポートするデータベース ユーザーおよび管理者向けの SQL 監査ツールです。

SQL取得

タイプ 住所
リポジトリ https://github.com/actiontech/sqle
書類 https://actiontech.github.io/sqle-docs/
リリースニュース https://github.com/actiontech/sqle/releases
データ監査プラグイン開発ドキュメント https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse
Lei Jun: Xiaomi の新しいオペレーティング システム ThePaper OS の正式版がパッケージ化されました。Gome App の抽選ページのポップアップ ウィンドウは創設者を侮辱しています。Ubuntu 23.10 が正式にリリースされました。金曜日を利用してアップグレードするのもいいでしょう! Ubuntu 23.10 リリース エピソード: ヘイトスピーチが含まれていたため、ISO イメージが緊急に「リコール」されました 23 歳の博士課程の学生が Firefox で 22 年間続いた「ゴーストバグ」を修正しました RustDesk リモート デスクトップ 1.2.3 がリリースされましたWayland を強化して TiDB 7.4 をサポート リリース: MySQL 8.0 と正式互換. Logitech USB レシーバーを取り外した後、Linux カーネルがクラッシュしました. マスターは Scratch を使用して RISC-V シミュレータをこすり、Linux カーネルを正常に実行しました. JetBrains が Writerside ツールを開始しました技術文書の作成に。
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/actiontechoss/blog/10119871