サーバーの移設などでは、データベースのコピーが発生します。
移設の時だけ必要な機能ですので、管理の面倒なレプリケーションではなく「ダンプしてリストア」という方法をとることが多くあります。
しかし、毎回ダンプしてコピーしてリストアでは手間もかかりますし、事故になる可能性もあります。
今回は、リモートサーバーのMySQL(mariadb)のデータベースを新しい環境にコマンド1つでコピーする方法です。
今回は、target-host から source-host のデータベースをコピーする手順になります。
方向を逆にすることもできますが、target-hostに 移設元のsource-hostの設定を残すのは、作業完了後にゴミが残る可能性もあるため、操作は target-hostから行います。
データベースコピーの準備
リモートのMySQLデータベースをコピーするには、以下の環境を準備します。
- target-hostにコピーするデータベースを空で作成(mysqladmin)
- target-hostからsource-hostへssh接続できる設定
- source-hostで mysqldump を実行できるアカウント
- target-hostでmysqlコマンドを実行できるアカウント
データベースをコピーするには、あらかじめtarget-hostで空のデータベースを作成しておきます。
データベースのコピー
データベースのコピーは、target-hostで次のようなコマンドを実行することで実現できます。
ssh source-host 'mysqldump -uroot -p[password] DBname' | mysql -uroot -p[password] DBname
サーバーの移設時には、何回もコピーが必要になる場合がありますのでスクリプト化しておくことで、簡単に間違いなくデータベースのコピーができるようになります。