RDSのDBインスタンスからmysqlの特定のテーブルデータをエクスポートしようとしたのですが、
SequelProでssh設定が適切でなかったのか、awsで構築したRDSのDBインスタンス内のmysqlにアクセス出来なかったので、
・ec2インスタンスにssh接続
・mysqlデータをdump
・scp接続でlocalのmysqlに落とす。
という手順を踏みました。
初めて扱うコマンドが大半であったので、メモ。。。
まずRDSのDBインスタンスに接続できる
リーモートサーバー(ec2インスタンス)にsshアクセスします。
そこで下記コマンドを実行
remote-sever $ mysqldump -h host_name -u user_name -p database_name table_name > file_name.sql
オプション | 名所 | 説明 |
---|---|---|
-u | ユーザー名 | サーバに接続するユーザー名 |
-p | パスワード | パスワードを指定してログイン |
-h | ホスト名 | 接続するサーバのホスト名(default: localhost) |
-B | データベース | 複数のデータベースを名前を指定してダンプ |
-A | すべてのデータベース | 複数のデータベースをまとめてダンプ |
-d | 定義のみ | 定義のみダンプを取りたいときに指定 |
-n | データベースは無視 | データベースを作成せずにダンプ |
-t | テーブルは無視 | テーブルの作成を行わずにダンプ |
optionを追加した後、">" で作成ファイル名を指定。
remote-sever $ ls
file_name.sql
一旦リモートサーバーを抜け後、scpアクセスします。
SCP(Secure Copy Protocol)
「SFTP」同様、Secure Shell(ssh)に含まれるsshの機能を使ってセキュリティ性の高いファイル転送を行うプロトコルといえます。
「SFTP」に比べて通信速度は速いといわれているのですが、この「SCP」を利用する場合はサーバにUNIX系のシェルが備えられている必要があります。Webサーバを作ろうとするとほとんどのサーバにはシェルは入っているので意識することは少ないです。
$ scp user_name@host_name:~/file_name.sql ~/Desktop/
$ scp [ユーザー名]@[ホスト名]:[コピー元PATH] [localのコピー先]
オプション | 名所 | 説明 |
---|---|---|
-u | ユーザー名 | サーバに接続するユーザー名 |
-i | 鍵ファイル | ssh接続に使用する鍵ファイルを指定する |
-P | ポート番号 | (sshのポートを変更している場合などに)接続に使用するポートを指定する |
-p | コピー元のタイムスタンプやパーミッションを保持する | |
-r | ディレクトリごと再帰的にコピーする |
うまくDesktopにsqlファイルをエクスポート出来ました。
あとはSequelProでlocalのmysqlにインポートすれば反映されます。