web-dev-qa-db-ja.com

ダウンタイムなしのMySQLバックアップ

MySQL 5.5/innoDB(ubuntu経由)のM/Sレプリケーションを実行しています。

私のDBはかなり大きいです:〜250GB。

以下を実行するバックアップツール/サービスを探しています。

  1. 完全バックアップ
  2. サーバーのダウンタイムなし/ロックなし
  3. 可能な限り自動化

助言がありますか?

3
Ran

オプションの1つは、本番DBに影響を与えずに停止/ロックできるバックアップ専用のスレーブMySQLサーバーを追加することです。

4
Aleh

Mysqldumpを使用するだけで、興味深いバックアップスキームを実行できます。

2011年4月17日に、並列mysqldumpの自動化スクリプトに関する投稿を書きました:参照してください 大規模データベースのmysqldumpを最適化するにはどうすればよいですか?

その投稿では、XtraBackupを含む代替案についても触れました。

250Gデータベースでは、1つのテーブルが200Gの場合、私のソリューションは不十分な場合があります。

このクエリを実行して、5つの最大のテーブルを見つけてください

SELECT table_schema,table_name,data_length,index_length
FROM information_schema.tables ORDER BY data_length DESC LIMIT 5;

あなたのペーストビンに基づいて、ここに5つの最大のテーブルがあります

mysql> select num,format(num/power(1024,3),2) num_gb
    -> from (
    ->     select 18455986176 num union
    ->     select 15031681024 union
    ->     select 14825160704 union
    ->     select 10196353024 union
    ->     select 9934143488
    -> ) A;
+-------------+--------+
| num         | num_gb |
+-------------+--------+
| 18455986176 | 17.19  |
| 15031681024 | 14.00  |
| 14825160704 | 13.81  |
| 10196353024 | 9.50   |
|  9934143488 | 9.25   |
+-------------+--------+
5 rows in set (0.02 sec)

mysql>

Mysqldumpセットをスレーブでのみ並行して使用することができます:参照してください 大規模データベースのmysqldumpを最適化するにはどうすればよいですか?

基本的なパラダイムは、スレーブでこのシーケンスを実行することです。

  • STOP SLAVE;
  • 10 DBのすべてのグループ
    • グループ内の10個すべてのDBを別々のファイルに並列ダンプする
  • START SLAVE;
1
RolandoMySQLDBA

別のオプションは、ホストされたデータベースサービスであるAmazon RDSにデータベースをアップロードすることです。 RDSインスタンスで大容量のディスクストレージを取得するオプションがあります。

Amazon RDSは、DBインスタンスクラスごとに、5 GBから1までを選択する機能を提供しますTBプライマリデータセットの関連ストレージ容量。

つまり、250GBをハードディスクに入れて、重要なものだけをメモリ内で実行することができます。その後、Amazonがバックアップ、高可用性、フェイルオーバーを処理します。コストがかかる可能性がありますが、mysqldumpの自動化などの作業を節約できます。

0
Lena Weber