読者です 読者をやめる 読者になる 読者になる

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

前準備(サーバーは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からは削除されない安心設計