MySQL の論理バックアップとリストア [インフラ]
論理バックアップとリストアについて学習結果をまとめます。
論理バックアップは mysqldump コマンドを利用します。このコマンドは、対象のデータベースの内容を SQL 文 (create 文と insert 文) でダンプ (内容をまとめてテキストに記録) します。そのため、大規模なデータベースの場合、バックアップやリストアに時間がかかってしまうという欠点を持ちます。しかしながら、オンライン (サーバ無停止状態) によるバックアップが可能なため、データベースを止めることができないミッションクリティカルな環境では必要な方法になるかと思われます。
論理バックアップとリストアの特徴は以下の通りです。
(利点)
・オンライン時に取得
・バックアップの取得範囲を選択できる (全部、データベースレベル、テーブルレベル)
・他 PC や他バージョンの MySQL への移植が容易
(欠点)
・バックアップサイズが物理バックアップと比べると大きい
・バックアップとリストアが物理バックアップと比べると遅い
(SQL 文への変換処理などが大きな要因)
手順は以下の通りです。
データベース mydb のバックアップを取得する場合
[バックアップ (例) ]
[リストア (例) ]
すべてのデータベースのバックアップを取得する場合
[バックアップ (例) ]
[リストア (例) ]
オススメの書籍
論理バックアップは mysqldump コマンドを利用します。このコマンドは、対象のデータベースの内容を SQL 文 (create 文と insert 文) でダンプ (内容をまとめてテキストに記録) します。そのため、大規模なデータベースの場合、バックアップやリストアに時間がかかってしまうという欠点を持ちます。しかしながら、オンライン (サーバ無停止状態) によるバックアップが可能なため、データベースを止めることができないミッションクリティカルな環境では必要な方法になるかと思われます。
論理バックアップとリストアの特徴は以下の通りです。
(利点)
・オンライン時に取得
・バックアップの取得範囲を選択できる (全部、データベースレベル、テーブルレベル)
・他 PC や他バージョンの MySQL への移植が容易
(欠点)
・バックアップサイズが物理バックアップと比べると大きい
・バックアップとリストアが物理バックアップと比べると遅い
(SQL 文への変換処理などが大きな要因)
手順は以下の通りです。
データベース mydb のバックアップを取得する場合
[バックアップ (例) ]
1. バックアップを取得
# mysqldump -u root -proot・--hex-blob
--hex-blob
--default-character-set=utf8
--lock-tables
mydb > /bk/mydb-dump-`date +%Y%m%d%H%M%S`.sql
バイナリ型 (BINARY、VARBINARY、BLOG) と BIT のデータを 16進数表記で出力
・--default-character-set
mysqldump コマンド実行時に利用するデフォルト文字コード
・--lock-tables
テーブル毎にロックをかける
[リストア (例) ]
1. バックアップしたデータを展開
# mysql -u root -proot mydb < /bk/mydb-dump-20160211120000.sql
すべてのデータベースのバックアップを取得する場合
[バックアップ (例) ]
1. バックアップを取得
# mysqldump -u root -proot・--hex-blob
--hex-blob
--default-character-set=utf8
--lock-all-tables
--all-databases > /bk/all-dump-`date +%Y%m%d%H%M%S`.sql
上記参照
・--default-character-set
上記参照
・--lock-all-tables
すべてのデータベースのテーブルにロックをかける (※)
・--all-databases
すべてのデータベース
※ バックアップ中に MyISAM 型のテーブルを更新せず、InnoDB 型のテーブルに対して ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE を利用しない場合、--lock-all-tables の代わりに --single-transaction を指定することもできる。
[リストア (例) ]
1. バックアップしたデータを展開
# mysql -u root -proot < /bk/all-dump-20160211120000.sql
オススメの書籍
タグ:DB
MySQL の物理バックアップとリストア [インフラ]
MySQL の物理バックアップとリストアについて学習結果をまとめます。
ハードウェア障害 (HDDの故障など)、システム障害 (OSの不具合など)、ユーザの誤操作によるデータの削除など、これら障害は、長く使っていると必ず発生します。もしこれら障害が発生したとしても、すぐにデータをリストアできるようにバックアップを常にとることが肝心です。バックアップには、物理バックアップ、論理バックアップや第三者ツールによる取得方法がありますが、今回はその中で物理バックアップ (MySQL 停止状態) について学習します。
物理バックアップとリストアの特徴は以下の通りです。
(利点)
・バックアップサイズが論理バックアップと比べると小さい
・バックアップとリストアが論理バックアップと比べると速い
(欠点)
・他 PC の MySQL への移行は互換性の問題からできない可能性あり
・MySQL の他バージョンへの移行は互換性の問題からできない可能性あり
手順は以下の通りです。
[バックアップ (例) ]
[リストア (例) ]
オススメの書籍
ハードウェア障害 (HDDの故障など)、システム障害 (OSの不具合など)、ユーザの誤操作によるデータの削除など、これら障害は、長く使っていると必ず発生します。もしこれら障害が発生したとしても、すぐにデータをリストアできるようにバックアップを常にとることが肝心です。バックアップには、物理バックアップ、論理バックアップや第三者ツールによる取得方法がありますが、今回はその中で物理バックアップ (MySQL 停止状態) について学習します。
物理バックアップとリストアの特徴は以下の通りです。
(利点)
・バックアップサイズが論理バックアップと比べると小さい
・バックアップとリストアが論理バックアップと比べると速い
(欠点)
・他 PC の MySQL への移行は互換性の問題からできない可能性あり
・MySQL の他バージョンへの移行は互換性の問題からできない可能性あり
手順は以下の通りです。
[バックアップ (例) ]
1. MySQL サーバを停止
# service mysqld stop2. データディレクトリを圧縮保存
# cd /var/lib3. MySQL サーバを起動
# tar cvfz /bk/mysql-`date +%Y%m%d%H%M%S`.tar.gz mysql
# service mysqld start
[リストア (例) ]
1. 障害が発生した環境を復旧
2. MySQL サーバを停止
# service mysqld stop3. 現在のデータディレクトリを削除
# cd /var/lib4. バックアップしたデータを展開
# rm -r mysql
# tar xvfz /bk/mysql-20160211120000.tar.gz5. MySQL サーバを起動
# service mysqld start
オススメの書籍
タグ:DB