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

PostgreSQLをAWS DMSで安心安全バージョンアップ/chugokudb_25_session1

Takahashi Ikki
November 30, 2018

PostgreSQLをAWS DMSで安心安全バージョンアップ/chugokudb_25_session1

2018年12月01日 に開催された
第25回中国地方DB勉強会 in 鳥取でのセッション1の資料です。

DMSを使ってRDS PostgreSQLのバージョンアップに挑戦してみました。

Takahashi Ikki

November 30, 2018
Tweet

More Decks by Takahashi Ikki

Other Decks in Technology

Transcript

  1. 1. ࣗݾ঺հ • ߴڮ Ұٍ • Ԭࢁࡏॅ • גࣜձࣾΦϛΧϨ WebΤϯδχΞ

    • ೔ຊPostgreSQLϢʔβʔձ தࠃࢧ෦௕ • PostgreSQLྺ 5ϲ݄ ! 4
  2. 10

  3. AWS Database Migration Serviceͷ͝঺հ • AWS DMS Ͱ࢖ΘΕΔΩʔϫʔυ • ϨϓϦέʔγϣϯΠϯελϯεʹ͍ͭͯ

    • λεΫͷৼΔ෣͍ʹ͍ͭͯ • λεΫͷઃఆํ๏ʹ͍ͭͯ • ҟछDBؒҠߦͷࡍͷΧϥϜͷܕม׵ʹ͍ͭͯ • αϙʔτDBΤϯδϯɾόʔδϣϯʹ͍ͭͯ 20
  4. AWS DMS Ͱ࢖ΘΕΔΩʔϫʔυ • ιʔεΤϯυϙΠϯτ • σʔλͷίϐʔݩɻEC2onDB, RDS, ΦϯϓϨDB, S3

    ͳͲɻ • λʔήοτΤϯυϙΠϯτ • σʔλͷίϐʔઌɻEC2onDB, RDS, ΦϯϓϨDB, S3, DynamoDB ͳͲɻ • ϨϓϦέʔγϣϯΠϯελϯε • ίϐʔݩ͔Βίϐʔઌ΁σʔλͷϨϓϦέʔγϣϯΛߦ͏Πϯελϯεɻ • λεΫ • ιʔεɺλʔήοτɺϨϓϦέʔγϣϯΛ૊Έ߹Θͤͯ ͲͷςʔϒϧΛͲͷΑ͏ʹҠߦ͢Δ͔ΛఆΊͨϧʔϧɻ 21
  5. ϨϓϦέʔγϣϯΠϯελϯεʹ͍ͭͯ • ΠϯελϯεΫϥε͸ T2, C4, R4ͷ̏छྨΛαϙʔτ. • T2: ։ൃɾݕূ༻ •

    C4: େྔͷԋࢉΛߦ͏৔߹ʹ໾ཱͭɻ (AWSతʹ͸ ҟछDBҠߦ͸͜ΕΛ͢͢Ί͍ͯΔ) • R4: ϝϞϦ૿ՃΠϯελϯεɻ (ҰճͷτϥϯβΫγϣϯ΍σʔλྔ͕େ͖͍࣌͸͜Ε.) • ϚϧνAZʹରԠ͍ͯͯ͠ɺϑΣΠϧΦʔόʔΛαϙʔτ. • ࣮ࡍɺDMSͱ͓͕͔͔ͯۚ͠Δͷ͸Πϯελϯεར༻ྉͱετϨʔδ͚ͩɻ 22
  6. λεΫͷઃఆํ๏ʹ͍ͭͯ • ϨϓϦέʔγϣϯΛߦ͏ςʔϒϧͷࢦఆํ๏͸̎छྨ • userɿ จࣈྻҰகͰ user ςʔϒϧͷΈΛର৅ͱ͢Δɻ • user_%ɿ

    ਖ਼نදݱͰ user_xxx ςʔϒϧʹ߹க͢ΔશͯͷςʔϒϧΛର৅ͱ ͢Δɻ • ਖ਼نදݱͳͲͰෳ਺ࢦఆͨ͠৔߹͸λεΫ಺ͰฒྻͰςʔϒϧ͕ϩʔυ͞ΕΔɻ (σϑΥϧτͰ͸8ςʔϒϧ) • ·ͨɺλεΫʹ͸ΑΓ଎౓Λ্͛ΔҝʹϢχʔΫΠϯσοΫεΛ ࠷ޙʹషΔͳͲͷॲཧΛ΍ͬͯ͘ΕΔΦϓγϣϯͳͲ͕͋Δɻ 24
  7. ࢀߟ ΦϛΧϨͷλεΫӡ༻ํ਑ άϧʔϓ୯ҐͰখ͘͞ϨϓϦέʔγϣϯλεΫΛઃఆͯ͠ ҠߦΛਐΊ͍ͯΔɻ ྫɿ ϢʔβʔҠߦλεΫ, ύʔςΟҠߦλεΫ, ༧໿ҠߦλεΫ, ... •

    ཧ༝ Ҡߦ׬ྃͨ͠ςʔϒϧΑΓDMSͷλεΫΛ࡟আ͍ͯ͘͠ࣄΛ ૝ఆ͍ͯ͠ΔͨΊɻ ӡ༻Λͯ͠ؾ෇͍͕ͨɺখ͘͞λεΫΛ෼ׂ͓ͯ͘͠ࣄͰҰݸͷςʔϒϧҠߦ͕ ࣦഊͨ࣌͠ʹαʔϏεશମͷো֐ʹͳΒͳ͍ɻ ࠓճͷ૝ఆͱͯ͠͸௕ظʹ౉ͬͯϨϓϦέʔγϣϯΛ͢Δ૝ఆͰແ͍ͷͰɺ ҰׅͰઃఆ͢Ε͹ྑͦ͞͏ɻ 26
  8. DBҠߦͷࡍͷΧϥϜͷܕม׵ʹ͍ͭͯ • ιʔεͷܕ → DMSઐ༻ͷܕʹΩϟετ → λʔήοτͷܕʹΩϟετ ͱม׵͢Δɻ DMSͷܕ ಺༰

    STRING จࣈྻ DATE ೔෇஋ DATETIME λΠϜελϯϓ஋ INT1 1όΠτɺූ߸෇͖੔਺ (INT2, INT4, INT8͕͋Δ) BOOLEAN ϒʔϧ஋ BLOB όΠφϦϥʔδΦϒδΣΫτ ※ ͦͷଞ 27
  9. αϙʔτͯ͠ΔDBΤϯδϯ͓Αͼόʔδϣϯ λʔήοτ • PostgreSQL: 9.4Ҡߦ • MySQL: 5.5Ҡߦ • SQLServer:

    2008R2Ҏ߱ (※ Express͸ඇαϙʔτ) • RedShift • DynamoDB • S3 • ͳͲ 29
  10. 3. AWS DMSʹ͍ͭͯ ·ͱΊ • DMS͸ωοτϫʔΫӽ͠ʹϨϓϦέʔγϣϯΛ࣮ݱ͢ΔαʔϏε. • σʔλͷίϐʔݩͱઌΛࢦఆͯ͠ҠߦϧʔϧͱͳΔλεΫΛ࡞੒͢ΔࣄͰ σʔλͷҠߦ͸શͯDMSͷ੹຿Ͱ࣮ݱͯ͘͠ΕΔɻ •

    λεΫͷཻ౓Λଟͨ͘͠Γখͨ͘͞͠Γ͢ΔࣄͰ શମͷϨϓϦέʔγϣϯͷཻ౓Λௐ੔ग़དྷΔɻ • DMS୯ମͱͯ͠͸ϨϓϦέʔγϣϯΠϯελϯεͷӡ༻අ͕͔͔Δఔ౓Ͱ ҆ՁͰਐΊΔࣄ͕ग़དྷΔɻ 30
  11. RDSΛ2୆ཱͯΔ(ׂѪ͢Δ) • PostgreSQL9.6 ͱ PostgreSQL10.5ΛཱͯΔ. • ιʔεͷRDSʹ͸ rds.logical_replication ʹ1ͱઃఆ͢Δඞཁ͕͋Δɻ •

    PostgreSQL9.6 ʹ users ςʔϒϧͳͲΛ࡞੒͢Δ. DMSͷΠϯελϯεΛཱͯΔ • ϨϓϦέʔγϣϯΠϯελϯε • ιʔεɺλʔήοτΛఆٛ. • ྫ) usersͷλεΫΛઃఆͯ͠ΈΔɻ 32
  12. • users ςʔϒϧൺֱʢݩʣ CREATE TABLE public.users ( id integer NOT

    NULL, email character varying(255) NOT NULL, password character varying(255) NOT NULL, created_at timestamp with time zone NOT NULL, updated_at timestamp with time zone NOT NULL ); ALTER TABLE public.users OWNER TO chugokudb; CREATE SEQUENCE public.users_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER TABLE public.users_id_seq OWNER TO chugokudb; ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id; ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_id_seq'::regclass); ALTER TABLE ONLY public.users ADD CONSTRAINT users_email_key UNIQUE (email); ALTER TABLE ONLY public.users ADD CONSTRAINT users_pkey PRIMARY KEY (id); 35
  13. • users ςʔϒϧൺֱʢҠߦઌʣ CREATE TABLE public.users ( id integer NOT

    NULL, email character varying(255) NOT NULL, password character varying(255) NOT NULL, created_at timestamp(6) with time zone NOT NULL, updated_at timestamp(6) with time zone NOT NULL ); ALTER TABLE public.users OWNER TO chugokudb; ALTER TABLE ONLY public.users ADD CONSTRAINT users_pkey PRIMARY KEY (id); 36
  14. 38

  15. SCT ͱ͸ • Schema Conversion Tool • ΫϩεϓϥοτϑΥʔϜ(Linux, macOS, Windows)্Ͱಈ͘ε

    λϯυΞϩϯΞϓϦέʔγϣϯ. • ιʔεσʔλϕʔεͷεΩʔϚΛλʔήοτͷRDSΠϯελ ϯεͱޓ׵ੑͷ͋Δܗࣜʹࣗಈม׵ͯ͘͠ΕΔπʔϧɻ 43
  16. ͬ͘͟Γ࢖͍ํ SCT_4 • ϙνϙνͱςʔϒϧΛҎ͍߱ͯ͘͠ɻ • SchemaΛબ୒ͯ͠ Convert Schemaͱ ͢Δͱྑ͍Α͏ʹςʔϒϧఆٛΛΠϯ ϙʔτͯ͘͠ΕΔɻ

    • ӈଆͷεΩʔϚ΍ςʔϒϧΛબ୒ͯ͠ Apply ͢Δͱ൓ө͞ΕΔɻ • ※ ֎෦Ωʔ੍໿ுͬͯΔ৔߹͸Τϥʔ ʹͳΒͳ͍Α͏ʹࣗ෼ͰؤுΔɻ • (ઈົʹ࢖͍ͮΒ͍..) 47
  17. 49