Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MySQL Shell dumpInstance のバグを調べた件

MySQL Shell dumpInstance のバグを調べた件

Satoshi MITANI

December 11, 2020
Tweet

More Decks by Satoshi MITANI

Other Decks in Technology

Transcript

  1. MySQL Shell の util.dumpInstance おさらい • 論理バックアップ • 並列で⾼速にバックアップ •

    1つのテーブルをチャンクに分けてSELECT 3 $ ls -rw-r----- 1 samitani users 296 Oct 28 23:13 t.json -rw-r----- 1 samitani users 531 Oct 28 23:13 t.sql -rw-r----- 1 samitani users 289084 Oct 28 23:13 t@t@@0.tsv -rw-r----- 1 samitani users 8 Oct 28 23:13 t@t@@0.tsv.idx
  2. ⼀貫性がどのように担保されているか 5 FLUSH TABLES WITH READ LOCK START TRANSACTION START

    TRANSACTION START TRANSACTION UNLOCK TABLES SELECT 〜 FROM t WHERE pk BETWEEN 1 AND 100 SELECT 〜 FROM t WHERE pk BETWEEN 101 AND 200 SELECT 〜 FROM t WHERE pk BETWEEN 201 AND 300 この間は 書き込め ない
  3. ⼀貫性がどのように担保されているか 6 FLUSH TABLES WITH READ LOCK START TRANSACTION START

    TRANSACTION START TRANSACTION UNLOCK TABLES SELECT 〜 FROM t WHERE pk BETWEEN 1 AND 100 SELECT 〜 FROM t WHERE pk BETWEEN 101 AND 200 SELECT 〜 FROM t WHERE pk BETWEEN 201 AND 300 この間は 書き込め ない なるほど かしこい
  4. 原因 10 FLUSH TABLES WITH READ LOCK START TRANSACTION START

    TRANSACTION START TRANSACTION UNLOCK TABLES SELECT 〜 FROM t WHERE pk BETWEEN 1 AND 100 SELECT 〜 FROM t WHERE pk BETWEEN 101 AND 200 SELECT 〜 FROM t WHERE pk BETWEEN 201 AND 300 LOCK TABLES mysql.proc
  5. 原因 11 FLUSH TABLES WITH READ LOCK START TRANSACTION START

    TRANSACTION START TRANSACTION UNLOCK TABLES SELECT 〜 FROM t WHERE pk BETWEEN 1 AND 100 SELECT 〜 FROM t WHERE pk BETWEEN 101 AND 200 SELECT 〜 FROM t WHERE pk BETWEEN 201 AND 300 LOCK TABLES mysql.proc 暗黙の コミット
  6. MySQL Shell のビルドが茨の道だった • 本体もビルドが必要 • 本体は cmake3 系 •

    Shell は cmake2 系 • 他にも⾊々・・・ • https://mita2db.hateblo.jp/entry/2020/11/05/223232 • (CentOS 7 以外なら簡単かも) 14
  7. まとめ • dumpInstance はFTWLで⼀貫性を確保 • バグは 8.0.23 で修正されるよ • MySQL

    Shell @CentOS7 でのビルド⽅法 • https://mita2db.hateblo.jp/entry/2020/11/05/223232 • MySQL Shell デバッグにも便利︕ 17