質問: **環境** ・MySQL5.6 ・ストレージエンジンは「InnoDB」がメインですが、「MyISAM」も結構あります。混在したりしています **やりたいこと** ・全DBを定期的に全自動でバックアップしたい ※cron処理予定 --- **Q1** ・「--single-transaction」「--lock-all-tables」オプションを併用したら、エラーになりました ・バックアップ用途の場合、何れを使用するのでしょうか? --- **Q2.「--single-transaction」オプションについて** ・「InnoDB のトランザクション」を利用する、と書かれていたのですが、対象の中に「MyISAM」テーブルが混ざっていたらダメでしょうか? ・また、このオプションを適用している際、書き込みが発生した場合、どうなるのでしょうか? ・処理は一旦中断される? それとも、エラーが返ってくる? ・最終的に、その書き込みは無効となるのでしょうか? --- **Q3.「--lock-all-tables」オプションについて** ・このオプションを適用している際、書き込みが発生した場合、どうなるのでしょうか? ・処理は一旦中断される? それとも、エラーが返ってくる? ・最終的に、その書き込みは無効となるのでしょうか?
回答: A1. どちらでもバックアップ用途に使えます。 A2. MyISAM テーブルもバックアップされますが、バックアップ開始時の状態とは限りません。 バックアップ中の書き込み処理は問題なく行われます。書き込んだデータは InnoDB のバックアップには影響しません。MyISAM には影響する可能性があります。 A3. 書き込みは待たされます。バックアップ完了後に再開されます。 ただしバックアップ処理が長時間になる場合はクライアントがタイムアウトして、アプリレベルではエラーとして扱われるかもしれません。