質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

2回答

2675閲覧

[mysqlpump]メモリよりサイズが大きいテーブルのバックアップ方法

fumiya.u

総合スコア10

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2018/10/05 21:18

前提・実現したいこと

ここに質問の内容を詳しく書いてください。

[環境]
centos 7.5
mysql 8.0.12

[質問]
mysqlpumpにmysqldumpの --quick オプションと類似のオプションはないのか?
現時点ではオプションが存在しない場合、並列処理が可能で、且つ容量の大きなテーブルに対してもバックアップが可能なOSSはないのか?

[背景]
並列処理が可能なmysqlpumpを利用してダンプを取得したいと考えております。
ただ、mysqldumpにて使用可能だった --quick オプションがmysqlpumpには存在しません。
そのため、サイズの大きなテーブルをバックアップする際に out of memory が発生することが懸念されます。

公式のドキュメントを読む限りだとmysqlpumpには --quick オプションを確認することができませんでした。
また、mysqlpumpのオプションを一通り確認しましたが、類似の処理を提供するようなオプションも見当たりませんでした。
そのため、mysqlpumpを利用してサイズの大きなテーブルのダンプを取得することは難しいのではないかと考えております。

「ドキュメントの確認が甘く、本来は上述した要件を満たすようなオプションが存在するのに、見落としていた」ことは避けたく質問致しております。
また、オプションの組み合わせ次第で実現できるのならその方法を知りたいとも思っています。
もしも、現時点のmysqlpumpの機能では実現できない要件なのであれば、何かオススメのOSSをご教示いただけると非常に助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

mysqlpump は使ったことがありませんが、
通常、データベースのバックアップツールはテーブル全体をメモリに読み込んでからバックアップするようなことはしません。最近はレコード数が何十億件もあるテーブルなんてザラですから、全部メモリに読み込んだらメモリをいくら積んでも足りません。

きちんとした動作環境を用意して、実際に大きなテーブルのバックアップを取ってみては?

ハードウエアの性能次第ですが、
--default-parallelism や --parallel-schemas オプション
でmysqlpump の処理時間を短縮できます。

投稿2018/10/05 21:32

Orlofsky

総合スコア16419

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/10/06 02:53 編集

mysqldump では--quick オプションは定番の様です。 以下リファレンスから
sazi

2018/10/06 02:52

--quick, -q このオプションは大規模なテーブルのダンプに便利です。これは mysqldump に対して、テーブルのすべての行のセットを取得して、書き出す前にメモリーにバッファリングするのではなく、サーバーから 1 行ずつ行を取得することを強制します。
fumiya.u

2018/10/06 03:32

ご回答ありがとうございます。 TO: Orlofsky 様 > きちんとした動作環境を用意して、実際に大きなテーブルのバックアップを取ってみては? おっしゃる通り、検証を実施してみるべきでした。 大量のデータを挿入してみてmysqlpumpを利用したバックアップをいくつかのテストパターンで実施してみようと思います。 TO: sazi 様 私も--quickオプションのその仕様が非常に引っ掛かっておりmysqlpumpでは大きなテーブルのバックアップはできないのかもしれないと勝手に解釈していました。 ただ、実際に動作を検証したわけではないので、一度どのような動きをするか確かめたいと思います。
guest

0

mysqlpumpにmysqldumpの --quick オプションと類似のオプションはないのか?

mysqlpumpは仕組み的にはキューを用いて処理するようなので、メモリーに全てを読み込んでという事はないのではないでしょうか(推測ですけど)

キューを使わない設定というのを見かけた気がするんですけど、失念。
「キュー使わないんだったら、--quickオプションが必要じゃないの?」と思ったことだけ記憶しています。

MySQL方面で高名な方も特にそのことには触れていないので、気にする所では無いのかもしれません。
mysqldumpじゃないよ、mysqlpumpだよ in MySQL 5.7.8 (新機能編)
mysqldumpじゃないよ、mysqlpumpだよ in MySQL 5.7.8 (mysqldumpとの違い編)

mysqlpumpユーティリティー
MySQL 5.7.8のmysqlpumpについての注意事項

枯れているmysqldumpを使用するのも選択肢としておいて、色々試されて下さい。

投稿2018/10/06 05:59

sazi

総合スコア25430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問