Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS DMSを使った異種DB移行のすすめ/chugokudb-24-dms-replication

AWS DMSを使った異種DB移行のすすめ/chugokudb-24-dms-replication

第24回 中国地方DB勉強会にてお話した
「AWS DMS を使った異種DB移行のすすめ」についてのスライドです。

現在、自社にて AWS DMSを用いて
MySQL(Aurora) から PostgreSQL への移行を行っています。

そのリファクタリング手法についてお話させて頂きました。

Takahashi Ikki

September 27, 2018
Tweet

More Decks by Takahashi Ikki

Other Decks in Programming

Transcript

  1. AWS DMS Λ࢖ͬͨҟछDBؒҠߦͷ
    ͢͢Ί
    2018-09-29 ୈ24ճ தࠃ஍ํDBษڧձ
    JPUGதࠃࢧ෦௕ ߴڮ Ұٍ
    1

    View full-size slide

  2. ஫ҙࣄ߲
    • εϥΠυ͸ޙͰެ։͠·͢ɻ
    • ࣭໰ͱ͔͝ࢦఠͱ͔͋Ε͹ #ChugokuDB ΁
    ͓ئ͍க͠·͢ɻ
    2

    View full-size slide

  3. ͓͠ͳ͕͖
    1. ࣗݾ঺հ
    2. AWS DMSͱ͸
    3. PostgreSQLΛҠߦઌʹબΜͩཧ༝
    3

    View full-size slide

  4. ࣗݾ঺հ
    • ߴڮ Ұٍ
    • ԬࢁͰWebΤϯδχΞ
    • ೔ຊPostgreSQLϢʔβʔձ
    தࠃࢧ෦௕
    • PostgreSQLྺ 3ϲ݄
    !
    • ϋϦωζϛͱωζϛͷҧ͍ʹ͍ͭͯ
    ஌ݟ͋Γ·͢ɻ
    4

    View full-size slide

  5. גࣜձࣾΦϛΧϨ
    ࠗ׆ͱݴ͑͹ΦϛΧϨʂ
    \\݁ࠗ͸͍͍ͧʂʂ//
    ϩʔϯν͔Β໿7೥
    ىۀ͔Β͸໿3೥ऑ
    5

    View full-size slide

  6. ֓ཁ
    • ϩʔϯν͔Β̓೥ɺ৭Μͳେਓͷࣄ৘͔Β
    ͦΕͳΓʹ͍ΘΏΔٕज़తෛ࠴ͱݺ͹ΕΔ΋ͷ͕͋Δɻ
    ʮσʔλϕʔεߏ଄ΛோΊΔձ΍Ζ͏ʂʯ
    ʮ͜ͷςʔϒϧԿʹ࢖ΘΕͯΔ͔஌ͬͯΔਓʔʔʁʯ
    ʮʮʮɻɻɻʯʯʯ
    ୭΋஌Βͳ͍ςʔϒϧͷڪා...
    6

    View full-size slide

  7. ֓ཁ
    • ࠓޙͷࣄۀͷ੒௕΋ݟӽͯ͠WebϖʔδͷϦϑΝΫλϦϯά
    ΋ඞཁͩ͠ɺRDBͷϦϑΝΫλϦϯά΋ඞཁ.
    • ͳΔ΂͘ແఀࢭͰ͔ͭԁ׈ʹ։ൃΛਐΊΔͨΊʹ
    ߟ͑ͨRDBϦϑΝΫλϦϯάͷํ๏Λ͝঺հͤͯ͞௖͖·
    ͢ʂʂ
    7

    View full-size slide

  8. ֓ཁ
    • ࠓޙͷࣄۀͷ੒௕΋ݟӽͯ͠WebϖʔδͷϦϑΝΫλϦϯά
    ΋ඞཁͩ͠ɺRDBͷϦϑΝΫλϦϯά΋ඞཁ.
    • ͳΔ΂͘ແఀࢭͰ͔ͭԁ׈ʹ։ൃΛਐΊΔͨΊʹ
    ͦʔ͍ͩ͞Μ͕
    ߟ͑ͨRDBϦϑΝΫλϦϯάͷํ๏Λ͝঺հͤͯ͞
    ௖͖·͢ʂʂ
    8

    View full-size slide

  9. ϦϑΝΫλϦϯάख๏
    • MySQLΛ AWS DMS Ͱ
    PostgreSQLͷOLDεΩʔϚʹҠ͢ɻ
    • OLD εΩʔϚͷ֤ςʔϒϧʹ
    τϦΨʔΛఆٛ.
    τϦΨʔ಺ͰϦϑΝΫλϦϯάͯ͠
    NEWεΩʔϚʹҠ͢ɻ
    • NEWεΩʔϚΛࢀর͢ΔΑ͏ʹ
    ੾Γସ͍͑ͯ͘.
    9

    View full-size slide

  10. AWS DMS ͱ͸
    10

    View full-size slide

  11. AWS DMS ͱ͸
    Database Migration Service
    ωοτϫʔΫӽ͠ʹ
    σʔλҠߦΛߦ͏ࣄ͕ग़དྷΔαʔϏε
    ※ ίϐʔݩɺίϐʔઌͷͲͪΒ͔͕AWS
    ͷΤϯυϙΠϯτͰ͋Ε͹ϨϓϦέʔγ
    ϣϯΛ͢Δࣄ͕ग़དྷΔɻ
    11

    View full-size slide

  12. AWS DMSͷΩʔϫʔυ
    • ιʔεΤϯυϙΠϯτ
    • σʔλͷίϐʔݩɻ
    EC2 on DB, RDS, ΦϯϓϨDB, S3 ͳͲɻ
    • λʔήοτΤϯυϙΠϯτ
    • σʔλͷίϐʔઌ
    EC2 on DB, RDS, ΦϯϓϨDB, S3, DynamoDB ͳͲɻ
    • ϨϓϦέʔγϣϯΠϯελϯε
    • ϨϓϦέʔγϣϯΛߦ͏Πϯελϯε
    12

    View full-size slide

  13. PostgreSQLΛҠߦઌʹબ
    Μͩཧ༝
    13

    View full-size slide

  14. ͦΓΌ(JPUGཧࣄ͕ೋਓ΋ډΔΜ΍͔Β) ͦ͏΍Ζɻ
    14

    View full-size slide

  15. ͱ͍͏ͷ͸ຊԻɺͰ͸ͳ͍Ͱ͕͢ɻ
    15

    View full-size slide

  16. PostgreSQLτϦΨʔʹ͍ͭͯ
    CREATE TRIGGER 'τϦΨʔ໊'
    trigger_time trigger_event
    ON 'ςʔϒϧ໊' FOR EACH ROW '࣮ߦؔ਺'
    MySQL PostgreSQL
    trigger_time BEFORE, AFTER BEFORE, AFTER
    trigger_event INSERT,UPDATE,DELETE ͔ΒҰ
    ͭ
    INSERT,UPDATE,DELETE ͔Β1
    ݸҎ্
    ※ ΋ͬͱ͋Δ͚Ͳɺলུ
    16

    View full-size slide

  17. PostgreSQLͷڧΈ(खଓ͖ܕݴޠ)
    ໊শ ݴޠ ഑෍ํ๏
    PL/pgSQL SQL جຊ഑෍
    PL/Perl Perl جຊ഑෍
    PL/Python Python جຊ഑෍
    PL/Java Java ֦ு
    PL/v8 JavaScript ֦ு
    ※ ͦͷଞ
    17

    View full-size slide

  18. ͕࣌ؒ͋Ε͹σϞಈը(ଟ
    ෼ແ͍)
    18

    View full-size slide

  19. ·ͱΊ
    • AWS DMS͸҆ͯ͘खܰʹࢼͤΔͱ͍͏఺ͰҠߦπʔϧͱ͠
    ͯ࢖͍΍͍͢ɻ
    • ·ͩ·ͩ૸Γ࢝Ίͨ͹͔ΓͰɺࠓͷॴக໋ই͸ͳ͍ɻ
    (ই͕ແ͍ͱ͸ݴͬͯͳ͍)
    • ࠓޙଟ෼৭ʑͳ஍ࠈΛݟ͍ͯ͘ͱࢥ͏ͷͰͦ͏͍͏ͷ͸ࠓޙ
    ͷΠϕϯτͰΞ΢τϓοτ͍ͯ͘͠ͷͰ͝ظ଴͍ͩ͘͞
    19

    View full-size slide

  20. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·
    ͨ͠ʂʂ
    20

    View full-size slide