Rdsでうまくmysqldumpを取る

4,226 views

Published on

AWS RDSに移行したけど
* mysqldumpを寄せ集めたデータウェアハウスを運用している
* どうしてもmysqldumpをとりたい
となったとき

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,226
On SlideShare
0
From Embeds
0
Number of Embeds
56
Actions
Shares
0
Downloads
2
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Rdsでうまくmysqldumpを取る

  1. 1. RDSでMYSQLDUMPをうまく取ってリストアする方法
  2. 2. あるある
  3. 3. 集計しやすい 別DBのデータもjoinできる 運用しやすい 本番DBに重いSQL投げたくない運用者    〃    投げててほしくない管理者 超最新データは無くてもいい 小~中規模なら常套手段…ですよね?
  4. 4. よくあるMYSQLDUMP
  5. 5. サービスで使っているslaveからmysqldump MyISAM mysqldump取得中のlock サービスに影響を与えない取得方法はお金がかかる LVMでsnap shotとってとかさ… dump用のslave用意してとかさ…
  6. 6. 一方、RDSは…
  7. 7. 最初のうちはMASTERDB1つで運用して インスタンスサイズ大きくしていって 参照がボトルネックになってきたら Read Replicaを用意するのがいい…らしい
  8. 8. SLAVEが無い 構成が多いのか…
  9. 9. どうしよう
  10. 10. …その前に。
  11. 11. RDS基礎知識 BACKUP WINDOW
  12. 12. Backup Window 毎日のバックアップの希望時間(UTC)を設定できる 指定時間の30分間の間にバックアップスナップショット が取得される
  13. 13. そうか!
  14. 14. スナップショットから 一時的にRDS作れば MYSQLDUMP取得できる!
  15. 15. 流れ
  16. 16. スナップショットから RDSを作る BASHスクリプト図の(2),(3)
  17. 17. https://github.com/imura81gt/aws- tools/blob/master/rds/restore-db-instance-from-db- snapshot.sh
  18. 18. RDSを削除する BASHスクリプト図の(5)
  19. 19. https://github.com/imura81gt/aws- tools/blob/master/rds/delete-db-instance.sh
  20. 20. 気をつけたこと
  21. 21. RDSにEnvタグを付ける スナップショットから作るRDSは「Env:backup」 IAM Policy Env:backup のRDSしか削除できないPolicy
  22. 22. 参照権限 { "Version": "2012-10-17", "Statement": [ { "Action": [ "rds:Describe*", "rds:ListTagsForResource", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcs", "ec2:DescribeAccountAttributes", "ec2:DescribeSecurityGroups" ], "Effect": "Allow", "Resource": "*" },
  23. 23. スナップショット権限 { "Action": [ "rds:RestoreDBInstanceFromDBSnapshot", "rds:CreateDBInstance" ], "Effect": "Allow", "Resource": "*" },
  24. 24. 更新、削除権限-Env:backupのRDSだけ { "Effect": "Allow", "Action": [ "rds:DeleteDBInstance", "rds:ModifyDBInstance", "rds:ModifyDBParameterGroup", "rds:ModifyDBSubnetGroup", "rds:CopyDBSnapshot", "rds:DownloadDBLogFilePortion", "rds:PromoteReadReplica", "rds:RebootDBInstance", "rds:RestoreDBInstanceFromDBSnapshot", "rds:RestoreDBInstanceToPointInTime" ], "Resource": "*", "Condition": { "streq": { "rds:db-tag/Env": [ "backup" ] } } } ] }
  25. 25. 良かったところ/悪かったところ
  26. 26. 良かったところ 本番環境RDSとは切り離された環境になるので… Master -Slave関係がないので、無理にMasterとインス タンスサイズを合わせる必要が無い Master : db.m3.large / backupRDS : db.t1.micro でも いい read replicaと違って、作成時に本番環境に負荷をかけ ないで済む
  27. 27. 悪かったところ 小額だがお金はやっぱりかかる スナップショットから作成するRDSのbackup windowを offにしたいけど、status:available のあとにmodifyしない とoffにできない status:creatingの後、status:backing-upがすぐ実行されて しまう IAMのテストをしっかりしないと、意図しないRDSを削 除しかねない バックアップ元RDSでinnodb_file_per_tableを有効にしち ゃうと、スナップショットからの作成が遅い
  28. 28. おわり

×