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