MySQL
mysqldump

mysqldumpでDBのデータを取得し、そのファイルを実行するまで

やりたいこと/背景

PRDのデータを、STGに反映させたい。

解決策

terminal
#欲しいデータがあるDB(今回はPRD)にssh接続
$ ssh PRD_IP_address

#dumpファイルを取得(ファイル名は、dump時の日付で、home/に作成)
$ mysqldump -u {usr_name} -p{password} --single-transaction --default-character-set=utf8 --routines DB_name > ./`date +%Y%m%d_%H%M`- dump.sql

#dumpファイルを、scpでデータを挿入したいDB(今回はSTG)のhome/にコピーして送信
#idを求められる場合、以下のようにiオプションを使用して、秘密鍵を指定してあげます
$ scp -i ~/.ssh/id_rsa.pub user@PRD_IP:~/20180613_0101-dump.sql user@STG_IP:~/

#ここで一旦exitしてPRDから出ます
$ exit

#dumpデータを流し込みたいDB(今回はSTG)に移動
$ ssh STG_IP

#STGにて、データの反映実行
$ mysql -u{user_name} -p{password} DB_name < ./20180613_0101-dump.sql

最後に

dumpファイル生成時には、1レコードずつ取得し、取得するタイミングでDBにきたリクエストなどを遮断するらしい。DBがアクティブ状態の時にユーザーに迷惑をかける場合があるので、注意をした方がいいです。