ServersMan@VPSのCentOS5をデータベースサーバーへ_その3

さくらサーバーで使用していたデータベースをServersManへ移行してみた。

mysqldump(さくら)

リカバリ(ServersMan)

(1)さくらのDBサーバーからmysqldump

さくらのMYSQLサーバーだとシェルログイン不可。
PHPMYADMINからexportしようと試みるも、データ量多杉でtimeoutしてしまうので、
shellを作成。

(参考)
http://www.bitscope.co.jp/tep/MySQL/quickMySQL.html#doc1_id1048

オプションの指定をしないと全テーブルをダンプしてくれるが、
指定なしだとサーバー側にkilledされるようなので、条件を指定して細かく区切っていく。

mysqldump.sh(オプションなし、すべてのテーブルをバックアップ)
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
mysqldump-4.0 データベース名 -uユーザーID -pパスワード -hサーバーURL > /home/***/mysqldump/sqlbackup.txt

mysqldump_limit.sh(where句に条件を指定)
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
mysqldump-4.0 データベース名 -uユーザーID -pパスワード -hサーバーURL 対象テーブル --where "data_acquire_date > 20100810" > /home/***/mysqldump/sqlbackup.txt

ちなみにmysqlのバージョンが4.0なので、-4.0を付けないと下記のようなエラー発生。
Error: 'You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right
syntax to use near 'SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILE' when trying to dump tablespaces

他のバックアップの取り方と特徴

mysqldump ホットバックアップ。実行に時間がかかる。
coldbackup コールドバックアップ。高速。
mysqlhostcopy innodb不可。MYISAMのみ。
InnoDB Hot Backup InnoDB可。

データを複数のtxtに分けた際に、都度create tableがあると困るので、
insert構文のみの出力、create table のみの出力などのオプションがある。

insert文のみ
mysqldump -t データベース名 > 出力先ファイル
create tableのみ
mysqldump -d データベース名 > 出力先ファイル

(2)ServersManのMYSQLサーバーに接続してデータインポート

mysqldumpしたサーバーから、データを入れたいサーバーに接続する
(参考)
http://ext.omo3.com/linux/mysql_host.html

<ログイン>

mysql -h ホスト名 -u ユーザー名 -p
(あらかじめアクセスできるユーザーを接続先のMYSQLに設定していることが条件。
create や drop 権限がないと実行時に ERROR 1142 (42000) at line 11: CREATE command denied to user・・
とか怒られる。
select user,host,Create_priv from mysql.user;などで権限を確認するように。
)
<データの復旧>
mysql -h ホストIP -u ユーザー名 -p データベース名 < /home/***/mysqldump/sqlbackup.txt