Early Access: The content on this website is provided for informational purposes only in connection with pre-General Availability Qlik Products.
All content is subject to change and is provided without warranty.
๊ธฐ๋ณธ ์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ ๋ณด์™„์ ์ธ ์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

์ „์ œ ์กฐ๊ฑด

๋ฐ์ดํ„ฐ๋ฅผ ๋žœ๋”ฉํ•˜๊ฑฐ๋‚˜ ๋ณต์ œํ•˜๋ ค๋ฉด ๋จผ์ € ๋‹ค์Œ ์ „์ œ ์กฐ๊ฑด์„ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Data Movement gateway ์„œ๋ฒ„์— ํ•„์š”ํ•œ driver๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

    ์ •๋ณด ๋ฉ”๋ชจ

    ์ด๋Š” Data Movement gateway๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ๊ฒฝ์šฐ์—๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Data Movement gateway์˜ ์ด์ ๊ณผ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Qlik Data Gateway - Data Movement๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

    Qlik Talend Cloud ์‹œ์ž‘ ๊ตฌ๋…์—์„œ๋Š” Data Movement gateway๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ํ•„์š”ํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ

  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ์ปค๋„ฅํ„ฐ ๊ตฌ์„ฑ

๋“œ๋ผ์ด๋ฒ„ ์„ค์ •

๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ(๊ถŒ์žฅ)๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ˆ˜๋™์œผ๋กœ driver๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋™ ์„ค์น˜๋Š” ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋“œ๋ฌธ ๊ฒฝ์šฐ์—๋งŒ ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜

์ด ์„น์…˜์—์„œ๋Š” ํ•„์ˆ˜ driver๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค์—๋Š” ํ•„์ˆ˜ driver๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ, ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ driver๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์ œ๊ฑฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜ ์ค€๋น„

  • Python 3.6 ์ด์ƒ์ด Data Movement ๊ฒŒ์ดํŠธ์›จ์ด ์„œ๋ฒ„์— ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    Python์€ ๋Œ€๋ถ€๋ถ„์˜ Linux ๋ฐฐํฌ์— ์‚ฌ์ „ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์‹œ์Šคํ…œ์— ์„ค์น˜๋œ Python ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    python3 --version

driver ์„ค์น˜

driver๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ค์น˜ํ•˜๋ ค๋ฉด:

  1. Data Movement ๊ฒŒ์ดํŠธ์›จ์ด ์ปดํ“จํ„ฐ์—์„œ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

    opt/qlik/gateway/movement/drivers/bin

  2. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ๊ตฌ๋ฌธ:

    ./install postgres

    driver๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(์•ก์„ธ์Šค ์ œํ•œ ๋˜๋Š” ๊ธฐ์ˆ  ๋ฌธ์ œ๋กœ ์ธํ•ด) driver๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์œ„์น˜์™€ Data Movement ๊ฒŒ์ดํŠธ์›จ์ด ์ปดํ“จํ„ฐ์—์„œ ๋ณต์‚ฌํ•  ์œ„์น˜๋ฅผ ์•Œ๋ ค ์ฃผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์™„๋ฃŒํ–ˆ์œผ๋ฉด install postgres ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด driver์— ๋Œ€ํ•œ EULA๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  3. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • [Enter] ํ‚ค๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ๋ˆŒ๋Ÿฌ EULA๋ฅผ ์ฒœ์ฒœํžˆ ์Šคํฌ๋กคํ•ฉ๋‹ˆ๋‹ค.
    • ์ŠคํŽ˜์ด์Šค๋ฐ”๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ๋ˆŒ๋Ÿฌ EULA๋ฅผ ๋น ๋ฅด๊ฒŒ ์Šคํฌ๋กคํ•ฉ๋‹ˆ๋‹ค.
    • q๋ฅผ ๋ˆŒ๋Ÿฌ ๋ผ์ด์„ผ์Šค ํ…์ŠคํŠธ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  EULA ๋™์˜ ์˜ต์…˜์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  4. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • "y"๋ฅผ ์ž…๋ ฅํ•˜๊ณ  [Enter]๋ฅผ ๋ˆŒ๋Ÿฌ EULA์— ๋™์˜ํ•˜๊ณ  ์„ค์น˜๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    • "n"์„ ์ž…๋ ฅํ•˜๊ณ  [Enter] ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ EULA๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ณ  ์„ค์น˜๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
    • "v"๋ฅผ ์ž…๋ ฅํ•˜๊ณ  [Enter] ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ EULA๋ฅผ ๋‹ค์‹œ ๋ด…๋‹ˆ๋‹ค.

  5. driver๊ฐ€ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

driver ์—…๋ฐ์ดํŠธ

์ œ๊ณต๋œ driver๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „์— driver์˜ ์ด์ „ ๋ฒ„์ „์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ์—…๋ฐ์ดํŠธ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

driver๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด:

  1. Data Movement ๊ฒŒ์ดํŠธ์›จ์ด ์ปดํ“จํ„ฐ์—์„œ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

    opt/qlik/gateway/movement/drivers/bin

  2. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ๊ตฌ๋ฌธ:

    ./update postgres

    driver๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(์•ก์„ธ์Šค ์ œํ•œ ๋˜๋Š” ๊ธฐ์ˆ  ๋ฌธ์ œ๋กœ ์ธํ•ด) driver๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์œ„์น˜์™€ Data Movement ๊ฒŒ์ดํŠธ์›จ์ด ์ปดํ“จํ„ฐ์—์„œ ๋ณต์‚ฌํ•  ์œ„์น˜๋ฅผ ์•Œ๋ ค ์ฃผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์™„๋ฃŒํ–ˆ์œผ๋ฉด update postgres ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด driver์— ๋Œ€ํ•œ EULA๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  3. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • [Enter] ํ‚ค๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ๋ˆŒ๋Ÿฌ EULA๋ฅผ ์ฒœ์ฒœํžˆ ์Šคํฌ๋กคํ•ฉ๋‹ˆ๋‹ค.
    • ์ŠคํŽ˜์ด์Šค๋ฐ”๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ๋ˆŒ๋Ÿฌ EULA๋ฅผ ๋น ๋ฅด๊ฒŒ ์Šคํฌ๋กคํ•ฉ๋‹ˆ๋‹ค.
    • q๋ฅผ ๋ˆŒ๋Ÿฌ ๋ผ์ด์„ผ์Šค ํ…์ŠคํŠธ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  EULA ๋™์˜ ์˜ต์…˜์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  4. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • "y"๋ฅผ ์ž…๋ ฅํ•˜๊ณ  [Enter]๋ฅผ ๋ˆŒ๋Ÿฌ EULA์— ๋™์˜ํ•˜๊ณ  ์„ค์น˜๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    • "n"์„ ์ž…๋ ฅํ•˜๊ณ  [Enter] ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ EULA๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ณ  ์„ค์น˜๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
    • "v"๋ฅผ ์ž…๋ ฅํ•˜๊ณ  [Enter] ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ EULA๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.
  5. ์ด์ „ driver๊ฐ€ ์ œ๊ฑฐ๋˜๊ณ  ์ƒˆ driver๊ฐ€ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

driver ์ œ๊ฑฐ

driver๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ์ œ๊ฑฐ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

driver๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด:

  1. ์ด ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ ๋ชจ๋“  ์ž‘์—…์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

  2. Data Movement ๊ฒŒ์ดํŠธ์›จ์ด ์ปดํ“จํ„ฐ์—์„œ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

    opt/qlik/gateway/movement/drivers/bin

  3. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ๊ตฌ๋ฌธ:

    ./uninstall postgres

    driver์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

์ˆ˜๋™์œผ๋กœ ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜

์ž๋™ ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ ์ˆ˜๋™์œผ๋กœ driver ์„ค์น˜๋ฅผ ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Data Movement gateway๋ฅผ ์„ค์น˜ํ•œ ํ›„ ๋‹ค์Œ RPM ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. /opt/qlik/gateway/movement/drivers/manifests/postgres.yaml์˜ binary-artifacts์—์„œ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ง์ ‘ ๋‹ค์šด๋กœ๋“œ ๋งํฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ํŒŒ์ผ์„ Data Movement gateway ์ปดํ“จํ„ฐ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Red Hat 9.x์— Data Movement gateway๊ฐ€ ์„ค์น˜๋œ ๊ฒฝ์šฐ:

  • postgresql<๋ฒ„์ „>-libs-<๋ฒ„์ „>PGDG.rhel9.x86_64.rpm
  • postgresql<๋ฒ„์ „>-<๋ฒ„์ „>PGDG.rhel9.x86_64.rpm
  • postgresql<๋ฒ„์ „>-odbc-<๋ฒ„์ „>PGDG.rhel9.x86_64.

Red Hat 8.x์— Data Movement gateway๊ฐ€ ์„ค์น˜๋œ ๊ฒฝ์šฐ:

  • postgresql<๋ฒ„์ „>-libs-<๋ฒ„์ „>PGDG.rhel8.x86_64.rpm
  • postgresql<๋ฒ„์ „>-<๋ฒ„์ „>PGDG.rhel8.x86_64.rpm
  • postgresql<๋ฒ„์ „>-odbc-<๋ฒ„์ „>PGDG.rhel8.x86_64.rpm

๋ฐ์ดํ„ฐ ์ด๋™ ๊ฒŒ์ดํŠธ์›จ์ด ์„œ๋ฒ„์—์„œ ์…ธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์—ด๊ณ  ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ฐ์ดํ„ฐ ์ด๋™ ๊ฒŒ์ดํŠธ์›จ์ด ์„œ๋น„์Šค ์ค‘์ง€:

    sudo systemctl stop repagent

  2. ์„ ํƒ์ ์œผ๋กœ ์„œ๋น„์Šค๊ฐ€ ์ค‘์ง€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    sudo systemctl status repagent

    ์ƒํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    Active: inactive (dead) since <timestamp> ago

  3. RPM ํŒŒ์ผ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

  4. ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ <๋ฐ์ดํ„ฐ ์ด๋™ ๊ฒŒ์ดํŠธ์›จ์ด ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ>/bin์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

  5. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋“œ๋ผ์ด๋ฒ„ ์œ„์น˜๋ฅผ site_arep_login.sh ํŒŒ์ผ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib:/usr/lib64:/usr/pgsql-<version>/lib" >> site_arep_login.sh

    ๊ทธ๋Ÿฌ๋ฉด "LD_LIBRARY_PATH"์— ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  site_arep_login.sh ํŒŒ์ผ์—์„œ ๋“œ๋ผ์ด๋ฒ„ ์œ„์น˜๊ฐ€ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

  6. ์„ ํƒ์ ์œผ๋กœ ๋“œ๋ผ์ด๋ฒ„ ์œ„์น˜๊ฐ€ ๋ณต์‚ฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    cat site_arep_login.sh
  7. ๋‹ค์Œ ์˜ˆ์™€ ๊ฐ™์ด /etc/odbcinst.ini ํŒŒ์ผ์— PostgreSQL์— ๋Œ€ํ•œ ํ•ญ๋ชฉ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    [PostgreSQL]

    Description = PostgreSQL ODBC driver

    Driver = /usr/pgsql-13/lib/psqlodbc.so

    Setup = /usr/pgsql-13/lib/psqlodbcw.so

    UsageCount = 1

  8. ๋ฐ์ดํ„ฐ ์ด๋™ ๊ฒŒ์ดํŠธ์›จ์ด ์„œ๋น„์Šค ์‹œ์ž‘:

    sudo systemctl start repagent

  9. ์„ ํƒ์ ์œผ๋กœ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    sudo systemctl status repagent

    ์ƒํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    Active: active (running) since <timestamp> ago

ํฌํŠธ

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ด๋™ ๊ฒŒ์ดํŠธ์›จ์ด ์„œ๋ฒ„์—์„œ ์•„์›ƒ๋ฐ”์šด๋“œ ํ†ต์‹ ์„ ์œ„ํ•ด ํฌํŠธ 5432๋ฅผ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ ์„ค์ •์—์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๊ฐ์ด ์„ค์น˜ํ•œ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ณ€๊ฒฝ ๋‚ด์šฉ ์บก์ฒ˜

  • Data Movement gateway ์ปดํ“จํ„ฐ์˜ IP ์ฃผ์†Œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ•„๋“œ์— "replication" ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ pg_hba.conf ๊ตฌ์„ฑ ํŒŒ์ผ์— ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ:

    host replication all 176.123.1.212/32 trust

  • test_decoding ์ถœ๋ ฅ ํ”Œ๋Ÿฌ๊ทธ์ธ(postgresql12-contrib ํŒจํ‚ค์ง€์— ์žˆ์Œ)์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ์—ฐ๊ฒฐ ์„ค์ •์— ์ง€์ •๋œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— "์Šฌ๋กฏ"์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์†Œ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ฝ๊ธฐ-์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์ฝ์œผ๋ ค๋ฉด ์Šฌ๋กฏ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • postgresql.conf ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๋‹ค์Œ ๋งค๊ฐœ ๋ณ€์ˆ˜์™€ ๊ฐ’์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    wal_level = logical
    max_replication_slots = number of replication slots

    ์—ฌ๊ธฐ์„œ number of replication slots๋Š” 1๋ณด๋‹ค ์ปค์•ผ ํ•˜๋ฉฐ ์‹คํ–‰ํ•˜๋ ค๋Š” ์ž‘์—… ์ˆ˜์— ๋”ฐ๋ผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 5๊ฐœ์˜ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด max_replication_slots = 5๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์ด ์‹œ์ž‘๋˜๋Š” ์ฆ‰์‹œ ์Šฌ๋กฏ์ด ์ž๋™์œผ๋กœ ์—ด๋ฆฌ๊ณ  ์ž‘์—…์ด ๋” ์ด์ƒ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋„ ์—ด๋ฆฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์—ด๋ ค ์žˆ๋Š” ์Šฌ๋กฏ์€ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    max_wal_senders = number of concurrent tasks

    ์—ฌ๊ธฐ์„œ number of concurrent tasks๋Š” 1๋ณด๋‹ค ์ปค์•ผ ํ•˜๋ฉฐ ๋™์‹œ์— ์‹คํ–‰ ์ค‘์ธ ์ž‘์—… ์ˆ˜์— ๋”ฐ๋ผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์„ธ ๊ฐ€์ง€ ์ž‘์—…์„ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋ ค๋ฉด max_wal_senders = 3์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • wal_sender_timeout ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ์ง€์ •๋œ ์‹œ๊ฐ„(๋ฐ€๋ฆฌ์ดˆ)๋ณด๋‹ค ์˜ค๋ž˜ ๋น„ํ™œ์„ฑ ์ƒํƒœ์ธ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์‹œ๊ฐ„ ์ œํ•œ์€ 60์ดˆ์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด(์„ ํƒ ์‚ฌํ•ญ) ์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์ •๋ณด ๋ฉ”๋ชจ

    ๊ธฐ๋ณธ์ ์œผ๋กœ wal_sender_timeout ๋งค๊ฐœ ๋ณ€์ˆ˜ ๊ฐ’์€ ์„œ๋ฒ„์—์„œ ๋ฐ€๋ฆฌ์ดˆ๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. ์ดˆ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์˜ˆ์™€ ๊ฐ™์ด ๊ฐ’์— "s"๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    wal_sender_timeout=60s

๊ตฌ์„ฑ ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ PostgreSQL ์˜จ๋ผ์ธ ๋„์›€๋ง์—์„œ ์„œ๋ฒ„ ๊ตฌ์„ฑ ์•„๋ž˜์˜ ๋ณต์ œ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

PostgreSQL์šฉ Amazon RDS์—์„œ ๋ณ€๊ฒฝ ๋‚ด์šฉ ์บก์ฒ˜

PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์˜ AWS ๋งˆ์Šคํ„ฐ ์‚ฌ์šฉ์ž ๊ณ„์ •์„ Amazon RDS for PostgreSQL ์†Œ์Šค ์ข…๋ฃŒ ์ง€์ ์˜ ์‚ฌ์šฉ์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ ์‚ฌ์šฉ์ž ๊ณ„์ •์—๋Š” CDC(๋ณ€๊ฒฝ ๋ฐ์ดํ„ฐ ์บก์ฒ˜)๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์—ญํ• ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์Šคํ„ฐ ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ณ„์ •์— rds_superuser ์—ญํ• ๊ณผ rds_replication ์—ญํ• ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. rds_replication ์—ญํ• ์€ ๋…ผ๋ฆฌ์  ์Šฌ๋กฏ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋…ผ๋ฆฌ์  ์Šฌ๋กฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ŠคํŠธ๋ฆฌ๋ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

Amazon RDS PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ๋…ผ๋ฆฌ์  ๋ณต์ œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด:

  1. ๋‹ค์Œ ๊ตฌ์„ฑ์œผ๋กœ ์ƒˆ ๋งค๊ฐœ ๋ณ€์ˆ˜ ๊ทธ๋ฃน์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งค๊ฐœ ๋ณ€์ˆ˜ ๊ทธ๋ฃน์˜ rds.logical_replication ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ 1๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    2. max_wal_senders โ€“ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.
    3. max_replication_slots โ€“ ๋ชจ๋“  ์—ฐ๊ฒฐ(์ฆ‰, ์ž‘์—…)์€ ์ƒˆ ์Šฌ๋กฏ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์‹œ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. Amazon RDS ์ธ์Šคํ„ด์Šค๋ฅผ ๋งค๊ฐœ ๋ณ€์ˆ˜ ๊ทธ๋ฃน์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL์šฉ Microsoft Azure์—์„œ ๋ณ€๊ฒฝ ๋‚ด์šฉ ์บก์ฒ˜

Microsoft Azure for PostgreSQL์—์„œ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์บก์ฒ˜ํ•  ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ์•„๋ž˜ ๋‹จ๊ณ„์— ์„ค๋ช…๋œ ๋Œ€๋กœ "replication" ์†์„ฑ์„ "logical"๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Azure CLI๋ฅผ ์—ด๊ณ  ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ์ •๋ณด ๋ฉ”๋ชจ

    CLI๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ Azure Portal์—์„œ ์…ธ ๋ช…๋ น์„ ํ†ตํ•ด ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    az postgres server configuration set --resource-group resource-group --server-name server-name --name azure.replication_support --value logical

    az postgres server configuration set --resource-group azuredb --server-name qlik-azure-pg --name azure.replication_support --value logical

     

  2. ๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํฌํ„ธ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

Google Cloud SQL for PostgreSQL์—์„œ ๋ณ€๊ฒฝ ๋‚ด์šฉ ์บก์ฒ˜

์ •๋ณด ๋ฉ”๋ชจ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Data Movement gateway 2022.11.42 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์บก์ฒ˜ํ•˜๋ ค๋ฉด ๋…ผ๋ฆฌ์  ๋ณต์ œ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋…ผ๋ฆฌ์  ๋ณต์ œ๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด:

  1. Google ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์˜ PostgreSQL ์„ค์ •์—์„œ ๋‹ค์Œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    • cloudsql.logical_decoding=on
    • max_replication_slots: ๋ชจ๋“  ์—ฐ๊ฒฐ(์ฆ‰, ์ž‘์—…)์€ ์ƒˆ ์Šฌ๋กฏ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์‹œ ์—ฐ๊ฒฐ์˜ ์–‘์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด ๊ฐ’์„ ๋Š˜๋ฆฌ๋ฉด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • max_wal_senders: ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด ๊ฐ’์„ ๋Š˜๋ฆฌ๋ฉด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด๋Ÿฌํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://www.postgresql.org/docs/current/runtime-config-replication.html์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ, ๋ณต์ œ๋ฅผ ์ง€์›ํ•˜๋„๋ก connector ์„ค์ •(username)์— ์ง€์ •๋œ ์‚ฌ์šฉ์ž๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

    ALTER USER username WITH REPLICATION;

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€ ๋˜๋Š” ํ•ด๋‹น ์ฝ˜ํ…์ธ ์—์„œ ์˜คํƒ€, ๋ˆ„๋ฝ๋œ ๋‹จ๊ณ„ ๋˜๋Š” ๊ธฐ์ˆ ์  ์˜ค๋ฅ˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ์•Œ๋ ค ์ฃผ์‹ญ์‹œ์˜ค!