-
[MySQL] Ubuntu(์ฐ๋ถํฌ), MySQL 8.0↑ Replication ์ค์ Database/MY-SQL 2023. 1. 17. 20:44
๐ ๊ตฌ์ฑ ํ๊ฒฝ Master / Slave
Ubuntu 22.04 LTS, MySQL 8.0.31 Community
1. Master ์ค์
1-1. Replication์ฉ ๊ณ์ ์์ฑ ๋ฐ replication ๊ถํ ๋ถ์ฌ
[mysql]
ํน์ ์์ดํผ๋ฅผ ์ค์ ํ ๊ฒฝ์ฐ % ๋์ ip๋ฅผ ์ ๋ ฅํ๋ค.
create user ์ ์ ๋ช @'%' identified by '๋น๋ฐ๋ฒํธ'; grant replication slave on *.* to ์ ์ ๋ช @'%';
1-2. Mysql Replication ์ค์ - mysqld.cnf
[ํฐ๋ฏธ๋]
vi ๋ช ๋ น์ด๋ก mysqld.cnf ์์ ํ๋ค.
vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld] ๋ฐ๋ก ์๋ ๋ถ๋ถ์ 2์ค์ ์ถ๊ฐํ๋ค.server-id: ์๋ฒ ์์ด๋๋ก ๊ณ ์ ๊ฐ ์ค์
log-bin: ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ ํ์ผ์ด ์์ฑ๋ path/์ด๋ฆ ์ค์ , path๋ฅผ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ /var/lib/mysql์ ์์ฑ๋๋ค.
[mysqld] server-id = 1 log-bin = mysql-bin
1-3. MySQL ์ฌ์์[ํฐ๋ฏธ๋]
sudo systemctl restart mysql
1-4. Master ์ํ ํ์ธ
[mysql]
show master status;
*Slave ์ค์ ์์ ์ฌ์ฉ๋ File๋ช ๊ณผ Position ๋ฒํธ
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 157 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
2. Slave ์ค์
2-1. Master์์ ๋ณต์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค Dumpํ์ฌ Slave์ ๋ณต์ํ๋ค.
[MySQL] ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ ์ด๋ธ Dump ํ๊ธฐ
[Linux] SCP ๋ช ๋ น์ด๋ก ์๋ฒ ๊ฐ ํ์ผ ๋ณต์ฌ, ๊ฐ์ ธ์ค๊ธฐ
2-2. Mysql Replication ์ค์ - mysqld.cnf
[ํฐ๋ฏธ๋]
vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld] ์๋ ๋ถ๋ถ์ 2์ค์ ์ถ๊ฐํ๋ค.server-id: ์๋ฒ ์์ด๋๋ก ๊ณ ์ ๊ฐ ์ค์
log-bin: ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ ํ์ผ์ด ์์ฑ ๋ path/์ด๋ฆ ์ค์ , path๋ฅผ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ default path(/var/lib/mysql)์ ํด๋น ์ด๋ฆ์ผ๋ก ๋ก๊ทธ ํ์ผ์ด ์์ฑ๋๋ค.
[mysqld] server-id = 2 log-bin = mysql-bin read-only = 1
2-3. MySQL ์ฌ์์[ํฐ๋ฏธ๋]
sudo systemctl restart mysql
2-4. Slave - Master ์ฐ๊ฒฐ
[mysql]
reset slave;
Master ์๋ฒ๋ก ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ค์ ์ ํ๋ค.
change master to master_host='Master DB IP', master_user='1-1์์ ์์ฑํ replication์ฉ ๊ณ์ ', master_password='๊ณ์ ๋น๋ฐ๋ฒํธ', master_log_file='1-4์ File๋ช ', master_log_pos=1-4์ Position ๋ฒํธ;
2-5. Replication ๋ช ๋ น์ด
์์
[mysql]
start replica;
์ค์ง
[mysql]
stop replica;
2-6. Slave ์ํ ํ์ธ
[mysql]
show slave status\G;
โ ์ํ์์ ํ์๋ก ํ์ธ1. Master ๊ด๋ จ ์ค์ ๋ค
2. Slave_IO_Running: Connection or YES
3. Slave_SQL_Running: YES[mysql] ํ๋ก์ธ์ค ์ํ ํ์ธ
show processlist\G;
no query specified
Slave ์๋ฒ์ Error ๊ฐ ๋ฐ์ํ๋ฉด ๋ฐ์ํ์๋ ์์ ์ผ๋ก๋ถํฐ Master ์๋ฒ๋ก๋ถํฐ ๊ฐฑ์ ๋ ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ง ์๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ Error๋ฅผ ๋๊ฒจ์ผ ๋ค์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ๋๋ฌธ์ Slave ์๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฃ๊ณ restart ํด์ค๋ค.
vi /etc/mysql/mysql.conf.d/mysqld.cnf
→ slave-skip-errors=all ์ถ๊ฐ
[mysqld] ... slave-skip-errors=all
Replication ํ ์คํธ
๋ฌธ์ ์์ด Replication ์ค์ ์ด ์๋ฃ๋์๋ค๋ฉด, ์ค์ ์ ๋์ํ๋์ง ํ์ธํด๋ณธ๋ค.
master DB์์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ , slave DB์ ๋ณต์ ๋์ด ๋ฐ์ดํฐ๊ฐ ์กฐํ๋๋์ง ํ์ธํ๋ค.'Database > MY-SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL] ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ ์ด๋ธ Dump ํ๊ธฐ (0) 2023.01.17 [MySQL] Replication(๋ฆฌํ๋ฆฌ์ผ์ด์ )์ด๋ (0) 2023.01.17 [MySQL] ์ฐ๋ถํฌ์์ MySQL8 ์ค์น ํ ํฌํธ ๊ฐ๋ฐฉ ๋ฐ ์ฌ์ฉ์ ์์ฑ (0) 2023.01.17 [MySQL] ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง InnoDB, MyISAM (0) 2023.01.15