リモートホストにMySQLデータベースを複製

投稿者: | 3月 28, 2021

サーバーの移設などでは、データベースのコピーが発生します。
移設の時だけ必要な機能ですので、管理の面倒なレプリケーションではなく「ダンプしてリストア」という方法をとることが多くあります。

しかし、毎回ダンプしてコピーしてリストアでは手間もかかりますし、事故になる可能性もあります。

今回は、リモートサーバーの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

サーバーの移設時には、何回もコピーが必要になる場合がありますのでスクリプト化しておくことで、簡単に間違いなくデータベースのコピーができるようになります。