๐ก MySQL ๋๋ MariaDB๋ Replication์ ์ ๊ณตํ๋ค.
DB๋ฅผ ๋ณต์ ํ๋ ๊ฒ์ผ๋ก 2๋ ์ด์์ DBMS๋ฅผmaster
์slave
(๋๋ ๋ค์ค slave) ๊ตฌ์กฐ๋ก ๋๋์ด ๋น๋๊ธฐ ๋ณต์ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด๋ค.
master
๋ server-id๋ฅผ 1๋ฒ์ผ๋ก ๊ฐ์ง๊ณslave
๋ server-id๋ฅผ 2๋ฒ ์ด์๋ถํฐ ๊ฐ์ง๊ฒ ๋๋ฉฐ ์๋ก ๊ณ ์ ํ๊ฒ ๋ถ์ฌํ์ฌ ์๋ ์์ผ์ผ ๋๋ค.
1. DB ์๋ฒ์ ๋ถํ๋ฅผ ๋ถ์ฐ์ํฌ ์ ์๋ค.
2. ๋ฐ์ดํฐ ๋ฐฑ์ ์ด ์ค์๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
master ์๋ฒ
: ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ฉฐ ๋ณ๊ฒฝ ๋ฐ์์ binary log์ ๊ธฐ๋กํ๊ณ slave ์๋ฒ๋ก ์ ๋ฌํ๋ค.
slave ์๋ฒ
: master ์๋ฒ๋ก๋ถํฐ ์ ๋ฌ ๋ฐ์ binary log๋ฅผ ํตํด DB์ ๋ฐ์ํ๊ณ ์กฐํ์ ๋ถ๋ด์ ๋ด๋นํ๋ค.
binary log
: DB์์ ๋ฐ์ํ๋ ๋ชจ๋ ๋ด์ญ์ด ๊ธฐ๋ก๋๋ ํ์ผ๋ก default๋ ๋นํ์ฑ์ด์ง๋ง ํ์ฑํ ์์ผ ํ์ฉํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ๋ ๋ฐฉ์์ ํฌ๊ฒ ๋๊ธฐ ๋ฐฉ์
๊ณผ ๋น๋๊ธฐ ๋ฐฉ์
์ด ์๋ค.
๋๊ธฐ ๋ฐฉ์
: Master ๋
ธ๋์์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด Slave ๋
ธ๋์ ๋์์ ์ ์ฉ๋๋ ๊ฒ์ ๋ณด์ฅํฉ๋๋ค. ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ๋ณด์ฅํ์ง๋ง ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋น๋๊ธฐ ๋ฐฉ์
: Master ๋
ธ๋์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ฐจ๋ฅผ ๋๊ณ Slave ๋
ธ๋์ ์ ์ฉ๋ฉ๋๋ค. ์ฑ๋ฅ์ ์ข์ง๋ง ๋ฐ์ดํฐ ์ ํฉ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
Semi-Sync ๋ฐฉ์
: ๋๊ธฐ์ ๋น๋๊ธฐ ๋ฐฉ์์ ์ฅ์ ์ ์ ์ ํ ์ทจํ์ฌ Semi-Sync ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์๋ค. MySQL์์๋ Semi-Sync Replication์ Plug-in ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
MySQL์ Replication์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น๋๊ธฐ ๋ณต์ ๋ฐฉ์
์ ์ฌ์ฉํ๋ค. Master ๋
ธ๋์์ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ Binary Log
์ ๊ธฐ๋กํ๊ณ , Replication Master Thread
๊ฐ ์ด๋ฅผ ๋น๋๊ธฐ์
์ผ๋ก ์ฝ์ด Slave๋ก ์ ์ก
ํ๋ค.
โ
ํ์ ์์
Binary Log
: Master์์์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋ก
Master Thread
: Binary Log๋ฅผ ์ฝ์ด Slave๋ก ์ ์ก
I/O Thread
: Slave์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ์ฌ Relay Log์ ๊ธฐ๋ก
SQL Thread
: Relay Log๋ฅผ ์ฝ์ด ๋ฐ์ดํฐ๋ฅผ Slave์ ์ ์ฉ
โ ๋์ ๊ณผ์
01_ ํด๋ผ์ด์ธํธ์์ Commit ์ํ
02_ Connection Thread๊ฐ ์คํ ๋ฆฌ์ง ์์ง์ Prepare ์ํ
03_ Binary Log์ ๋ณ๊ฒฝ ์ฌํญ ๊ธฐ๋ก
04_ ์คํ ๋ฆฌ์ง ์์ง์ Commit ์ํ
05_ Master Thread๊ฐ Binary Log๋ฅผ ์ฝ์ด Slave๋ก ์ ์ก
06_ Slave์ I/O Thread๊ฐ Relay Log์ ๊ธฐ๋ก
07_ SQL Thread๊ฐ Relay Log๋ฅผ ์ฝ์ด ์คํ ๋ฆฌ์ง ์์ง์ ์ ์ฉ
MySQL Replication์์ Slave Thread๋ Client์ด๊ณ Master Thread๋ Server์ด๋ค. Slave Thread๊ฐ Master Thread์ ์ ์์ ์์ฒญํ๋ฉฐ, Master์๋ Slave Thread๊ฐ ๋ก๊ทธ์ธํ ์ ์๋ ๊ณ์ ๊ณผ ๊ถํ(REPLICATION_SLAVE)์ด ํ์ํ๋ค.
์ญํ
Master Thread๋ Binary Log๋ฅผ ์ฝ์ด์ Slave๋ก ์ ์กํ๋ ์ญํ ์ ์ํํ๋ค. Slave๋ Master์ ์ ์ ํ Binary Log ์ก์ ์ ์์ฒญํ๋ ๋ช ๋ น์ด(COM_BINLOG_DUMP ๋๋ COM_BINLOG_DUMP_GTID)๋ฅผ ์ ์กํ๋ค.
Slave I/O Thread๋ Master๋ก๋ถํฐ ์์ ํ ๋ฐ์ดํฐ๋ฅผ Relay Log์ ์์ฐจ์ ์ผ๋ก ๊ธฐ๋กํ๋ค. Relay Log ํ์ผ์ ํ์์ Master์ Binary Log ํ์๊ณผ ์ผ์นํ๋ค. Relay Log ํ์ผ์ ์ด๋ฆ์ ๊ธฐ๋ณธ์ ์ผ๋ก 'ํธ์คํธ๋ช -relay-bin'์ด๋ฉฐ, relay_log ์ต์ ์ ํตํด ์ด๋ฆ์ ์ค์ ํ ์ ์๋ค.
๋ช ๋ น์ด
Relay Log ๋ด์ฉ์ ํ์ธํ๋ ค๋ฉด SHOW RELAYLOG EVENTS ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ค.
Slave SQL Thread๋ Relay Log์ ๊ธฐ๋ก๋ ๋ณ๊ฒฝ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์คํ ๋ฆฌ์ง ์์ง์ ํตํด Slave ์ธก์ ์ ์ฉํ๋ค. SQL Thread๋ Replication ์ฒ๋ฆฌ์ ๋ณ๋ชฉ ์ง์ ์ด ๋ ์ ์๋ค.
MySQL Replication์ ์ฌ๋ฌ ๋ฐฉ์์ผ๋ก ์์คํ
์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์๋ ๊ทธ๋ฆผ๋ค์ ์ค์ ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ค์ํ ๊ตฌ์ฑ ์๋ค์ ๋ชจ์๋ณธ ๊ฒ์ด๋ค.
MySQL Replication ์ ๋ค์์ ๋ช ๊ฐ์ง ํน์ง์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์ข ๋ ๋ค์ํ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
ํน์ง
Slave๋ ๋ค๋ฅธ MySQL ์๋ฒ์ Master๊ฐ ๋ ์ ์๋ค.
ํ๋์ Master๋ ๋ค์์ Slave๋ฅผ ๊ฐ์ง ์ ์๋ค.
๋ ๊ฐ์ MySQL ์๋ฒ๊ฐ ์๋ก์ Master ๋๋ Slave๊ฐ ๋ ์ ์๋ค.
ํ๋์ Slave๊ฐ ์ฌ๋ฌ Master๋ฅผ ๊ฐ์ง ์ ์๋ค. (N:1 - MySQL 5.7 ์ด์)
_
๐จ ์ฃผ์์ฌํญ
Dual Master์ ๊ฒฝ์ฐ ์์ชฝ ์๋ฒ์์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ์ง๋ง, ๋น๋๊ธฐ ๋ฐฉ์์ด๋ฏ๋ก ๋ฐ์ดํฐ์ ๋ถ์ ํฉ์ด ๋ฐ์ํ ์ ์๋ค. ์ด๋ฅผ ๊ณ ๋ คํ Application ์์ฑ์ด ํ์ํ๋ค.