CORESERVERにMacのTerminalでSSH接続してデータベースを複製する

ネット上の情報をつなぎ合わせれば簡単にできるのですが、自分用にまとめておきたかったのでメモ。

事前準備

ローカルのIPアドレスを認証してもらうためにCORESERVERのサイト設定 ▶︎ ツール/セキュリティーから「SSH接続IP許可」ボタンを探してクリックしておきます。

公開鍵認証にする

公開鍵/秘密鍵のペアがなければ ssh-keygen で作成します。
コントロールパネルからサイト設定 ▶︎ FTP設定でFTP/SFTP接続情報を見ることができます。

以下のPORTのところにはSFTPポート、USER_ACCOUNTのところにはアカウント、HOSTのところにはホストを入力してください。

sftp -P PORT USER_ACCOUNT@HOST

USER_ACCOUNT@HOST's password: と聞かれるので先ほどの画面で確認したパスワードを入力します。

sftp> put <path-to-your-home>/.ssh/id_rsa.pub .ssh/

ローカルの方は絶対パスではないとダメなので手で入力するか、Terminal上にid_rsa.pubファイルをドラッグ&ドロップします。

id_rsa.pubの名称を変更したいので一度パスワードでログインします。

ssh USER_ACCOUNT@HOST

先ほど同様パスワードを聞かれるので入力して、以下のコマンドで名前を変更します。

mv .ssh/id_rsa.pub .ssh/authorized_keys

これで公開鍵認証できたはずです。

SSH Configを設定する

毎回ユーザー名とホストを入力するのは面倒なので、ローカルの~/.ssh/configに設定を書き加えて簡単にSSHできるようにします。

Vimでもテキストエディタでも良いので~/.ssh/configを開いて、以下のような設定を書き加えます。

Host coreserver
  HostName HOST
  User USER_ACCOUNT
  IdentityFile ~/.ssh/id_rsa.pub # 名前がid_rsa.pubのままの場合はデフォルトで指定されるのでこの行は不要
  Port 22
  TCPKeepAlive yes
  IdentitiesOnly yes

SSHサーバーを再起動すると、

launchctl stop com.openssh.sshd

以下のコマンドだけでコアサーバーに接続できるようになっているはずです。

ssh coreserver

データベースを複製する

サイトの速度が気になっているのでリニューアルを検討しています。
色々試すのはDockerを使うのが便利そうなのですが、実際に速度を測定するのはサーバーでしたいなと思ったので、いじれるようにデータベースを複製しようと考えました。
単純にexportしてimportします。
以下のコマンドはコアサーバーにSSHしている前提です。

データベースの情報は、コントロールパネルのデータベースタブから、該当(最初は複製元)のデータベースの情報を見てください。

DB_USERにはDBユーザー名、DB_NAMEにはDB名を入れて下記のコマンドを走らせてください。
なお、CORESERVERではDBユーザー名もDB名もどちらも同じになると思います。

mysqldump -uDB_USER -r export.sql --single-transaction DB_NAME -p

パスワードを聞かれると思うので先ほど確認した情報のパスワードを入力します。

次に、このデータをインポートします。
コントロールパネルのデータベースタブから「データベースの新規作成」ボタンをクリックして、そこで決めたDBユーザー名、DB名をそれぞれNEW_DB_USER、NEW_DB_NAMEとして以下のコマンドを実行してください。

mysql -uNEW_DB_USER NEW_DB_NAME < export.sql -p

同様にパスワードを入力することで、データベースの複製ができました。

Leave a Reply