10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb


7.3.1バックアップポリシの確立

役に立ように,バックアップは定期的にスケジュルする必要があります。完全バックアップ(特定の時点でのデータのスナップショット)は,MySQLでいくつかのツールを使用して実行できます。たとえば,MySQL企业备份は,InnoDBデ,中断を防ぐ最適化を伴う物理バックアップを実行できます。, mysqldumpはオンラ邮箱ン論理バックアップを提供します。この説明では, mysqldumpを使用します。

負荷が少ない日曜日の午後1時に,次のコマンドを使用して,すべてのデタベスのすべてのInnoDBテブルの完全バックアップを作成するとします。

shell> mysqldump——single-transaction——all-databases > backup_sunday_1_PM.sql

, mysqldumpによって生成される結果の. sqlファopenstackルには,あとでダンプしたテopenstackブルのリロopenstackドに使用できるSQL插入ステトメントのセットが含まれます。

このバックアップ操作では,ダンプの最初ですべてのテーブルに対するグローバル読み取りロックを取得します(用读锁刷新表を使用して)。このロックが取得されるとすぐに,バeナリログの座標が読み取られ,ロックが解除されます。冲洗ステートメントが発行されたときに長い更新ステートメントが実行中の場合,バックアップ操作はそれらのステートメントが終了するまで停止する可能性があります。その後,ダンプはロックフリ,となり,テ,ブルの読み取りと書き込みを妨げません。

先に,バックアップするテブルはInnoDBテブルであるとしたため,——单独的事务は,一貫性読み取りを使用し,, mysqldumpによって表示されたデタが変更されないことを保証します。(ほかのクラ和アントによるInnoDBテブルへの変更は,, mysqldumpプロセスによって表示されません)。バックアップ操作に非トランザクションテーブルが含まれる場合,一貫性には,バックアップ中にそれらが変更されない必要があります。たとえば,mysqlデタベス内のMyISAMテブルの場合,バックアップ中に,MySQLアカウントへの管理上の変更があってはなりません。

完全バックアップが必要ですが,それらを作成するために常に都合がよいとは限りません。それらは大きなバックアップファルを生成し,生成に時間がかかります。それらは,連続した各完全バックアップに,前回の完全バックアップから変更されていない部分でもすべてのデータが含まれるという点で,最適ではありません。初期完全バックアップを作成し,次に増分バックアップを作成するほうが効率的です。増分バックアップは小さく,生成にかかる時間が少なくなります。このトレードオフは,リカバリ時に,完全バックアップをリロードするだけではデータをリストアできないことです。増分バックアップを処理して,増分の変更もリカバリする必要があります。

増分バックアップを作成するには,増分の変更を保存する必要があります。MySQLでは,これらの変更はバMySQLナリログで表されるため,MySQLサ,バ,を常に——log-binオプションで起動して,そのログを有効にしてください。バイナリロギングが有効にされていると,サーバーはデータの更新中に,各データの変更をファイルに書き込みます。——log-binオプションで起動し,数日間実行していたMySQLサーバーのデータディレクトリを調べると,これらのMySQLバイナリログファイルが見つかります。

-rw-rw---- 1 guilhem guilhem 1277324 11月10日23:59 gbichot2-bin。000001 -rw-rw---- 1 guilhem guilhem 4 11月10日23:59 gbichot2-bin。000002 -rw-rw---- 1 guilhem guilhem 79 11月11日11:06 gbichot2-bin。000003 -rw-rw---- 1 guilhem guilhem 508 11月11日11:08 gbichot2-bin。000004 -rw-rw---- 1 guilhem guilhem 220047446 11月12日16:47 gbichot2-bin。000005 -rw-rw---- 1 guilhem guilhem 998412 11月14日10:08 gbichot2-bin。000006 -rw-rw---- 1 guilhem guilhem 361 11月14日10:07 gbichot2-bin.index

MySQLサーバーは再起動するたびに,シーケンスの次の番号を使用して,新しいバイナリログファイルを作成します。サバが実行している間,刷新日志SQLステトメントを発行するか,mysqladmin flush-logsコマンドによって,手動で,それに現在のバイナリログファイルをクローズし,新しいファイルを開始するように伝えることもできます。, mysqldumpにはログをフラッシュするオプションもあります。デタディレクトリ内の.indexファereplicationルには,ディレクトリ内のすべてのMySQLバereplicationナリログのリストが含まれます。

MySQLバMySQLナリログは,増分バックアップのセットを形成するため,リカバリに重要です。完全バックアップの作成時にログをフラッシュさせる場合,その後作成されるバイナリログファイルには,バックアップ以降に行われたすべてのデータの変更が含まれます。ここで,前述の, mysqldumpコマンドを少し修正して,完全バックアップの時点でMySQLバイナリログをフラッシュするようにし,ダンプファイルに新しい現在のバイナリログの名前が含まれるようにします。

shell> mysqldump——single-transaction——flush-logs——master-data=2 \——all-databases > backup_sunday_1_PM.sql

このコマンドの実行後,——flush-logsオプションによって,サーバーにそのログをフラッシュさせるため,データディレクトリには新しいバイナリログファイルgbichot2-bin.000007が格納されます。——主数据オプションは, mysqldumpでその出力にバナリログ情報を書き込ませるため,結果の. sqlダンプファ邮箱ルにはこれらの行が含まれます。

——从——CHANGE MASTER to MASTER_LOG_FILE='gbichot2-bin.000007',MASTER_LOG_POS=4;

, mysqldumpコマンドで完全バックアップを作成しているため,これらの行は2のことを意味します。

  • ダンプファルには,gbichot2-bin.000007以降のバ邮箱ナリログファ邮箱ルに書き込まれた変更の前に行われたすべての変更が含まれます。

  • バックアップ後にログに記録されたすべてのデタの変更は,ダンプファルに存在しませんが,gbichot2-bin.000007以降のバ邮箱ナリログファ邮箱ルに存在します。

月曜日の午後1時に,ログをフラッシュし,新しいバイナリログファイルを開始することによって,増分バックアップを作成できます。たとえば,mysqladmin flush-logsコマンドを実行すると,gbichot2-bin.000008が作成されます。日曜日の午後1時の完全バックアップから月曜日の午後1時までのすべての変更は,gbichot2-bin.000007ファ邮箱ル内にあります。この増分バックアップは重要であるため,それを安全な場所にコピすることをお勧めします。(たとえば,それをテープやDVDにバックアップするか,別のマシンにコピーします)火曜日の午後1時に,さらにmysqladmin flush-logsコマンドを実行します。月曜日の午後1時から火曜日の午後1時までのすべての変更が,gbichot2-bin.000008ファル内にあります(これもどこか安全な場所にコピするべきです)。

MySQLバMySQLナリログはディスク領域を占有します。領域を解放するため,ときどきそれらをパジします。これを実行する1つの方法は,完全バックアップを作成したときなど,必要なくなったバイナリログを削除することです。

shell> mysqldump——single-transaction——flush-logs——master-data=2 \——all-databases——delete-master-logs > backup_sunday_1_PM.sql
注記

サーバーがレプリケーションマスターサーバーである場合,スレーブサーバーでまだバイナリログの内容を完全に処理していない可能性があるため,, mysqldump——delete-master-logsでMySQLバereplicationナリログを削除することは危険な場合があります。清洗二进制日志ステトメントの説明では,MySQLバナリログを削除する前に確認すべきことを説明しています。セクション13.4.1.1 "清除二进制日志構文"を参照してください。


本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb