ある案件で、MySQLのInnoDBを使って外部キーとか設定しているデータベースをAサーバで使用していて、他のBサーバに移動したり、もしくはバックアップしていたものをレストアするにはどうしたらいいのだろうということで、レストアする時間が問題になっています。レストアする時間を軸に以下の方法を模索。
・mysqldumpでダンプのバックアップをして、それをレストア
一番安全そうではあるが、レストアするときに外部キーがあったり、キーを設定していたりすると、データ量が多かったらレストアに異様に時間がかかる…。前述のとある案件では当初これを予定していたが、レストアに半日かかりそう…。それはいけてない!
・mysqlhotcopyでバックアップをして、それをレストア
mysqldumpよりも微妙に安全じゃなさそう…。でもレストアにあまり時間を必要としないのでよい。
・DATADIRをcpして、それをレストア(?)
一番安全じゃなさそう…。でもバックアップとレストアにかかる時間は一番早い。cpしたりレストアするときには完全にMySQLを停止して更新等がかからない状態にしなければならないのでサービスを完全停止する必要ありそう。あと、DATADIR/DBNAME ってディレクトリだけをcpすればいいのか、それともDATADIRごとcpした方がいいのかわからじ…。MyISAMのだったら経験あるし、事例もいっぱいあるんだけどInnoDBだとどうしたらいいかわからない。
ということなんですが、さてどれがいいんだろう。でもレストアに半日かかるmysqldumpだと、サービス半日停止はいたい…。
どうもDATADIRをcpしても普通に動いてるっぽいのですが、これデータの整合性とか大丈夫なんでしょうか…できればこれでいきたい…。
だれか、InnoDBつかってるDBで外部キーとかはっているものをcpで移動した経験のある人いませんんかね、とさりげなく他力本願(笑)
mysql-mlを探索していたらこんなページをみつけた!って小林さんではないですか!(笑)
でも2001年のだからおそらくMyISAMのなんだろうな。。。