2

専用のホスティング プロバイダーでバックアップを行うための NAS ストレージがいくつかあります。データベースとアカウントをバックアップするために、WHM を使用して毎日の自動バックアップをセットアップします。サーバーは 1 つのサイトをホストしています。バックアップを実行すると、mysql ダンプが実行されます。ダンプが発生している間は誰もデータベースに接続できないため、基本的に、バックアップを実行している間ずっとサイトをダウンさせます。通常、サイトは約 30 秒から 1 分間ダウンします (これは大したことではないように思えるかもしれませんが、この種のサイトでは実際の問題です)。

これが起こらないようにバックアップを行うためのより良い方法はありますか (mysqlhotcopy または Maatkit の方が良いでしょうか?)、NAS にバックアップする別の方法であるか、NAS をまったく使用せずに他の方法を使用するかです。 .

4

4 に答える 4

9

mysqlhotcopy は mysqldump より高速ですが、InnoDB は実行しません。

バックアップを行うには、レプリケーションを使用し、スレーブでダンプを行います。バックアップ プロセス中のダウンタイムはゼロで、負荷の急増もありません。

于 2009-06-03T04:24:56.387 に答える
2

InnoDB の場合、レプリケーションを使用しない最適なソリューションは次のようになります。

mysqldump mydbname --result-file=mydbname.sql --verbose --single-transaction

これは InnoDB のトランザクション スナップショット機能を使用し、通常の (書き込み!) データベース操作をまったく中断することなく許可します。スナップショットのバイナリ ログの位置を自動的に記録すること--master-data=1もできます。ただし、同じサーバー上の複数のデータベースで個別にこれを行う場合、バイナリ ログの位置はほとんど価値がないようです。

欠点は、いくつかの MyISAM テーブルがある場合、これが適切に機能しないことです。私自身、パーティション化されていない MyISAM テーブルを必要とする MySQL のフルテキスト インデックスを利用しています。ただし、必要に応じて MyISAM テーブルを最初から再構築できるように、MyISAM テーブルが、InnoDB テーブルに既に存在するテキストをダンプするセカンダリ データ セットにすぎないように調整することもできます。データベースのテーブルの種類をチェックし、1 つの DB 内に InnoDB テーブルしかない場合--single-transactionの代わりに使用するスクリプトがあります。--lock-tables

別の解決策は、LVM などのディスクまたはファイルシステムのスナップショット機能を使用することです。しかし、スナップショットが存在する間に書き込みを行うと、LVM の非常に馬鹿げた書き込み時のバックアップ メカニズム (これは COW であると誤って主張されていますが、これは常識ではありません) のため、パフォーマンスが大幅に低下します。したがって、かなり良い解決策は、Solaris ZFS または FreeBSD UFS 上の MySQL のようです。効率的なスナップショットをサポートし、古いため比較的安定しています。Btrfs にも効率的なスナップショットがありますが、まだベータ版です。

于 2010-11-15T12:44:55.890 に答える
0

mdraid1 -- Linux のソフトレイド レベル 1 です。mdraid1 で MySQL を実行している場合は、別のディスクを接続して同期させ、mysql を停止し、同期を行い、3 番目の同期された RAID コンポーネントを削除します。 、mysqlを再起動します。RAID1 でビットマップを使用する場合、別のスナップショットを作成するための再同期は通常非常に高速です....

于 2010-11-16T04:55:51.083 に答える
0

別のサーバーは必要ありません。同じマシンのサンドボックスに別の MySQL をインストールするだけです。負荷が少し急増する可能性がありますが、ロックの問題は発生しません。

于 2009-06-04T21:20:33.257 に答える