レプリケーションを使用したバックアップ戦略

レプリケーションを使用したバックアップ戦略

私の本番データベースには、スレーブ サーバーに複製されたすべての MyISAM テーブルがあります。バックアップを実行する必要があるときは、スレーブの MySQL サーバーを停止し、テーブル ファイルをコピーしてから、サーバーを再起動するだけです。この方法は、ここ数年間はうまく機能しています。ただし、ロックの問題があるため、マスターのいくつかのテーブルを InnoDB に変換する必要があります。スレーブにテーブル ファイルをコピーするだけではもうできないと思います。いくつか質問があります。

  1. 同じデータベースに MyISAM テーブルと InnoDB テーブルを混在させることは良い考えでしょうか? 結合やその他の操作では、異なるタイプのテーブルが使用されます。

  2. スレーブに 2 つのバックアップ プロセス (1 つは MyISAM 用、もう 1 つは InnoDB テーブル用) が必要ですか? 面倒なようです。

  3. スレーブ上の InnoDB テーブルを MyISAM テーブルに変換し、既存のバックアップ プロセスを維持することはできますか? マスター上の InnoDB テーブルを、スレーブ上の MyISAM 形式の同じテーブルに複製することはできますか?

答え1

  1. 混合テーブル タイプは問題ありませんが、特定のアプリケーションでは混合テーブルとすべての InnoDB テーブル間のパフォーマンスの違いを確認することをお勧めします。

  2. テーブルを混在させない場合でも、ダンプを実行してバックアップすることをお勧めします。これは、ファイル/フォルダーをコピーするよりもはるかに優れており、別のサーバーまたは MySQL バージョンへの移行が簡単になります。

  3. これを 2 つの別々のバックアップに分割する理由はありません。

特にトランザクションを使用している場合は、スレーブのテーブル形式を変更することは絶対にお勧めしません。InnoDB テーブルを保持することで、スレーブはトランザクションを正しく処理します。テーブルを MyISAM に変更すると、バックアップ内に部分的なトランザクションが含まれることで問題が発生する可能性があります。これは、復元を行う必要がある場合に悪い知らせになる可能性があります。

関連情報