四万十川(四万十大橋) 高知県


Date/Time: 2007:04:29 12:35:45
Camera: Panasonic
Model: DMC-LX2
Exporsure Time: 1/400
FNumber: 6.3
Aperture Value: 5.3
Focal Length: 6.3

Close

y2blog » MySQL DB のバックアップ・リストア

10

22

2009

MySQL DB のバックアップ・リストア

さくらのレンタルサーバでのMySQL DB のバックアップ・リストアについて


このブログはさくらインターネットのレンタルサーバ(スタンダードプラン)を用いて、WordPressをベースに運用しているのですが、WordPressのコンテンツは全てMySQLデータベースにより管理されています.


日頃からデータのバックアップを取るというのはコンピュータを使う上で基本中の基本なのですが、面倒なのでついついバックアップを取るのをサボってしまいがちです.WordPressの記事はMySQLのデータベースの中に記録されているので、普通のコンピュータのファイルのように扱うわけにはいきません.SQLコマンドなどのデータベース特有のオペレーションが必要になります.


WordPressは頻繁にバージョンアップやアップデートを繰りかえしているので、DBコンテンツのバックアップ・リストア作業は嫌が上でも覚えなくてはなりません.


幸いなことに、さくらインターネットのレンタルサーバではphpMyAdminというDBオペレーションツールが提供されており、ユーザがWEBブラウザを通じて比較的簡単にデータベースのオペレーションを行えるようになっています.DBのバックアップ・リストアもこのphpMyAdminを通じて簡単に行えるのですが、困ったことにphpMyAdminでは大きなサイズの SQLデータを取り扱えません.リストアする際のアップロードサイズが、16,384KB という制限があります.DBのテーブル毎に個別にバックアップ・リストアをすれば殆どの場合このアップロードファイルのサイズ制限を気にする必要はないのですが、データベース全体をバックアップすると、生成されるSQLファイルはこの制限に引っ掛かってしまいます.


phpMyAdmin を使わずに、mysql, mysqldump コマンドを用いればファイルサイズの制限を回避できるのですが、さくらインターネットのレンタルサーバでは、WEBホスティングサーバ(外部に公開しているWEBサーバ)とMySQLデータベースを運用しているサーバは別に設けられています.このため、さくらインターネットのレンタルサーバ上では少し特殊なオペレーションが必要になります.


私が試した限りでは、ファイルサイズの制限をクリアしていても大きなSQLデータファイルをリストアした場合に、エラーで上手くリストアできない事が頻繁にありました.phpMyAdminのバックアップは細かなオプションの指定が楽なので、私はバックアップをphpMyAdminで行い、リストアはコマンドラインでmysql コマンドを使うようにしています.リストアをしなければならない場合は、他のサーバにブログを移行する場合や、何らかの原因でDBを吹っ飛ばしてしまいブログを再構築する場合などでしょうから、リストア作業自体は滅多に行うことはありませんが、MAMP, XAMP などを使って手元のPC上でDBのバックアップ・リストア作業を練習しておくと、いざというときに役立つと思います.


mysql, mysqldump コマンドについては、下記の MySQLのマニュアルページを参照下さい.


mysql

mysqldump

さくらのレンタルサーバ(スタンダードプラン)では、ユーザー名が xxxxx の場合、WEBサーバのDNS名は xxxxx.sakura.ne.jp で、DBサーバのDNS名は mysql**.db.sakura.ne.jp (**の部分は任意の数字が割り当てられる)のようになっています.当然ながらWEBサーバは外部から自由に接続できますが、DBサーバは指定されたさくらのインターネットサーバからしかアクセスできないようになっています.DBサーバに直接ログインする方法は提供されていません.


従って、DBサーバに対して mysql, mysqldump コマンドで操作をするには、WEBサーバにログインした上で、-h オプションでDBサーバにリモート接続する必要があります.


さくらのレンタルサーバ上を利用している人達は皆さんそれなりのコンピュータスキルを持っている人達だと思いますので、後は各自でトライしてみて下さい.


初心者でこの記事の内容が良く理解出来ない方は決して実行しないで下さいね.失敗するとブログのデータが吹き飛びます!!!

手順としては、

1.WEBサーバにSSHなどでログインする

  


MB13Snow:~ yasuaki$ ssh xxxxx.sakura.ne.jp -l xxxxx
xxxxx@xxxxx.sakura.ne.jp's password: 
Last login: ----- 17:52:49 2009 from 123.456.789.10
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
	The Regents of the University of California.  All rights reserved.

FreeBSD x.x-RELEASE-px   #6: Mon Oct  5 17:36:52 JST 2009

Welcome to FreeBSD!

%


2.mysql, mysqldump コマンドをコンソール(シェル)上で実行する


%mysql -h mysql**.db.sakura.ne.jp -u xxxxx -p 
Enter password: ********  (←DBのパスワードを入力する)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17****711
Server version: 4.0.27

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

上記の例は、mysqlコマンドを対話モードで起動した場合の様子です.-h オプションで DBサーバのDNS名を指定し、 -u オプションで ユーザ名を、-p オプションでDBパスワードを入力するように指定しています.尚、ここでのパスワードは DBのパスワードで、WEBサーバのログインパスワードではありません.


【リストアの例】
db_backup_oct22.sql というファイル名でバックアップされたDBのデータファイル(SQLデータ)をリストアする.


%mysql -h mysql**.db.sakura.ne.jp -u xxxxx -p -B xxxxx < ./db_backup_oct22.sql
Enter password: 
% 

上記の例で、 -B xxxx というオプションは、リストア対象の DB 名の指定です.さくらのレンタルサーバ(スタンダードプラン)では、ユーザに割り当てられるDBは1つで、その名前は ユーザ名と同じ名前になっています.



格言


以前に何かの本で見た納得させられた格言です.


『この世の中には二種類の人間しか居ない.既に貴重なデータを失った人とこれから失う人だ.』