UbuntuVPSでMySQLデータベースをバックアップする方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
理由: Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このガイドはもう維持されていません。
代わりに参照してください:
このガイドは参考として役立つかもしれませんが、他のUbuntuリリースでは機能しない可能性があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。
MySQLとは何ですか?
MySQLは、SQLクエリ言語を使用してデータにアクセスして操作する一般的なデータベース管理ソリューションです。 Webサイトやアプリケーションからのデータを管理するために簡単に使用できます。
バックアップはあらゆる種類のデータで重要であり、これはデータベースについて話すときに特に関係があります。 MySQLは、この記事で説明するいくつかの異なる方法でバックアップできます。
このチュートリアルでは、MySQL5.5がインストールされたUbuntu12.04VPSを使用します。 最新のディストリビューションとMySQLの最近のバージョンは、同様の方法で動作するはずです。
mysqldumpを使用してMySQLデータベースをバックアップする方法
MySQLでバックアップする最も一般的な方法の1つは、「mysqldump」というコマンドを使用することです。
バックアップ
mysqldumpを使用してデータベースをエクスポートする方法に関する記事がここにあります。 コマンドの基本的な構文は次のとおりです。
mysqldump -u username -p database_to_backup > backup_name.sql
復元
mysqldumpで作成されたデータベースダンプを復元するには、ファイルをMySQLに再度リダイレクトする必要があります。
インポートされたデータを格納するために、空のデータベースを作成する必要があります。 まず、次のように入力してMySQLにログインします。
mysql -u username -p
データダンプからのすべてのデータを保持する新しいデータベースを作成し、MySQLプロンプトを終了します。
CREATE DATABASE database_name;
exit
次に、次のコマンドを発行して、ダンプファイルを新しく作成したデータベースにリダイレクトできます。
mysql -u username -p database_name < backup_name.sql
これで、作成したデータベースに情報が復元されます。
MySQLテーブルをテキストファイルにバックアップする方法
MySQL内のselectステートメントを使用して、テーブルのデータをテキストファイルに直接保存できます。
この操作の一般的な構文は次のとおりです。
SELECT * INTO OUTFILE 'table_backup_file' FROM name_of_table;
この操作により、テーブルデータがMySQLサーバー上のファイルに保存されます。 選択した名前のファイルがすでに存在する場合は失敗します。
注:このオプションは、テーブルデータのみを保存します。 テーブル構造が複雑で保存する必要がある場合は、別の方法を使用することをお勧めします。
automysqlbackupを使用してMySQL情報をバックアップする方法
Ubuntuリポジトリで利用できる「automysqlbackup」と呼ばれるユーティリティプログラムがあります。
このユーティリティは、定期的にバックアップを自動的に実行するようにスケジュールできます。
このプログラムをインストールするには、ターミナルに次のように入力します。
sudo apt-get install automysqlbackup
次のように入力してコマンドを実行します。
sudo automysqlbackup
automysqlbackupのメイン構成ファイルは、「/ etc / default/automysqlbackup」にあります。 管理者権限で開きます。
sudo nano /etc/default/automysqlbackup
このファイルは、デフォルトで、「/ etc / mysql/debian.cnf」にあるMySQLファイルによって多くの変数を割り当てていることがわかります。 これには、メンテナンスログイン情報が含まれています
このファイルから、バックアップが必要なユーザー、パスワード、およびデータベースを読み取ります。
バックアップのデフォルトの場所は「/var/ lib/automysqlbackup」です。 このディレクトリを検索して、バックアップの構造を確認してください。
ls /var/lib/automysqlbackup
daily monthly weekly
日次ディレクトリを調べると、各データベースのサブディレクトリが表示されます。その中には、コマンドが実行されたときのgzip圧縮されたSQLダンプがあります。
ls -R /var/lib/automysqlbackup/daily
.: database_name information_schema performance_schema ./database_name: database_name_2013-08-27_23h30m.Tuesday.sql.gz ./information_schema: information_schema_2013-08-27_23h30m.Tuesday.sql.gz ./performance_schema: performance_schema_2013-08-27_23h30m.Tuesday.sql.gz
Ubuntuは、このプログラムを使用してcronスクリプトをインストールし、毎日実行します。 ファイルを適切なディレクトリに整理します。
レプリケーションを使用する場合のバックアップ方法
MySQLレプリケーションを使用して、上記の手法でデータをバックアップすることができます。
レプリケーションは、あるサーバーから別のサーバーにデータをミラーリングする(マスタースレーブ)またはいずれかのサーバーに加えられた変更を別のサーバーにミラーリングする(マスターマスター)プロセスです。
レプリケーションではデータミラーリングが可能ですが、特定の時点を保存しようとすると問題が発生します。 これは、動的システムの変更を常に複製しているためです。
この問題を回避するには、次のいずれかを実行できます。
- レプリケーションを一時的に無効にする
- バックアップマシンを一時的に読み取り専用にする
レプリケーションを一時的に無効にする
次のコマンドを発行して、スレーブのレプリケーションを一時的に無効にできます。
mysqladmin -u user_name -p stop-slave
レプリケーションを完全に停止するわけではありませんが、いわば一時停止する別のオプションは、次のように入力することで実行できます。
mysql -u user_name -p -e 'STOP SLAVE SQL_THREAD;'
レプリケーションが停止した後、上記のいずれかの方法を使用してバックアップできます。 これにより、スレーブがバックアップされている間、マスターMySQLデータベースをオンラインに保つことができます。
これが完了したら、次のように入力してレプリケーションを再開します。
mysqladmin -u user_name -p start-slave
バックアップマシンを一時的に読み取り専用にする
データを一時的に読み取り専用にすることで、サーバー内の一貫したデータセットを確保することもできます。
これらの手順は、マスターシステムまたはスレーブシステムのいずれかで実行できます。
まず、データを操作するのに十分な権限でMySQLにログインします。
mysql -u root -p
次に、キャッシュされたすべての変更をディスクに書き込み、次のように入力してシステムを読み取り専用に設定できます。
FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;
次に、mysqldumpを使用してバックアップを実行します。
バックアップが完了したら、次のように入力して、システムを元の正常な状態に戻します。
SET GLOBAL read_only = OFF; UNLOCK TABLES;
推奨されなくなったテクニックに関するメモ
mysqlhotcopy
MySQLには、「mysqlhotcopy」と呼ばれるデータベースをすばやくバックアップするためのperlスクリプトが含まれています。 このツールを使用すると、ローカルマシン上のデータベースをすばやくバックアップできますが、推奨されないようにする制限があります。
ここでmysqlhotcopyの使用法について説明しない最も重要な理由は、「MyISAM」および「Archive」ストレージエンジンを使用して保存されたデータに対してのみ機能するためです。
ほとんどのユーザーはデータベースのストレージエンジンを変更しません。MySQL5.5以降、デフォルトのストレージエンジンは「InnoDB」です。 このタイプのデータベースは、mysqlhotcopyを使用してバックアップすることはできません。
このスクリプトのもう1つの制限は、データベースストレージが保持されているのと同じマシンでのみ実行できることです。 これにより、リモートマシンからのバックアップの実行が防止されます。これは、状況によっては大きな制限になる可能性があります。
テーブルファイルのコピー
時々提案される別の方法は、MySQLがデータを保存するテーブルファイルを単にコピーすることです。
このアプローチは、「mysqlhotcopy」と同じ理由の1つで問題が発生します。
データをファイルに保存するストレージエンジンでこの手法を使用することは合理的ですが、新しいデフォルトのストレージエンジンであるInnoDBをこの方法でバックアップすることはできません。
結論
MySQLでバックアップを実行する方法はたくさんあります。 すべてに長所と短所がありますが、実装がはるかに簡単で、他の製品よりも広く役立つものもあります。
展開するバックアップスキームは、個々のニーズとリソース、および本番環境に大きく依存します。 どの方法を選択する場合でも、プロセスが正しく機能していることを確認できるように、必ずバックアップを検証し、データの復元を練習してください。