share facebook facebook2 twitter menu hatena pocket slack

2013.11.08 FRI

RDS for MySQLからテーブルをCSV出力してS3に格納する手順

吉田 真吾

WRITTEN BY吉田 真吾

■前準備(サーバーはAmazon LinuxのEC2を想定)

  • インストールされている全てのパッケージのアップデートをしておく

$ sudo yum -y update
  • pipをインストールしておく

$ sudo easy_install pip
  • EC2にMySQLクライアント(mysqlコマンド)をインストールしておく(詳細割愛)
  • EC2にAWS CLIをインストール

$ sudo pip install awscli
  • デフォルトのAWS CLI環境設定ファイルを作成

$ mkdir -m 700 .aws
$ vi .aws/config
aws_access_key_id = [Access Key ID]
aws_secret_access_key = [Secret Access Key]
region = [Region Name]
  • EC2上にCSV出力先ディレクトリを作成

mkdir -m 700 [source-dirname]
  • S3上にCSV格納先(EC2->S3)のバケットおよびディレクトリを作成

$ aws s3 mb s3://[bucketname]/[target-dirname]

■実行手順

  • CSV出力(RDS->EC2)処理

$ mysql -h[RDS Public DNS] -u[username] -p[password] [dbname] --batch -e "select * from [tablename]" | sed 's/t/","/g;s/^/"/;s/$/"/;s/n//g' > [tablename].csv
  • CSV格納(EC2->S3)処理

$ aws s3 sync [sourcedir] s3://[bucketname]/[target-dirname]
  • 確認

aws s3 ls s3://[bucketname]/[target-dirname]

■特記事項

  • awscliのs3 syncコマンドは対象のS3バケットとローカルを比較し「新規」/「変更」ファイルをS3バケットに対して書込みを行う
  • ローカルから「削除」されていてもS3からは削除されない安心設計

こちらの記事はなかの人(yoshidashingo)監修のもと掲載しています。
元記事は、こちら

吉田 真吾

吉田 真吾