데이터베이스 · 2 min read · Dec 22, 2025
MySQL에서 데이터베이스 복제를 설정하는 방법
이것은 “복사 및 붙여넣기” 방법입니다!
이 튜토리얼을 따르는 가장 쉬운 방법은 명령줄 클라이언트/SSH 클라이언트(예: Windows의 PuTTY)를 사용하고 명령을 복사하여 붙여넣는 것입니다(자신의 정보(IP 주소, 호스트 이름, 비밀번호 등)를 제공해야 하는 경우를 제외하고). 이렇게 하면 오타를 피할 수 있습니다.
MySQL에서 데이터베이스 복제를 설정하는 방법
버전 1.1
저자: Falko Timme
마지막 수정: 2006/01/14
이 튜토리얼에서는 MySQL에서 데이터베이스 복제를 설정하는 방법을 설명합니다. MySQL 복제를 사용하면 마스터 서버의 데이터베이스를 다른 서버(슬레이브)에 정확히 복사할 수 있으며, 마스터 서버의 데이터베이스에 대한 모든 업데이트는 즉시 슬레이브 서버의 데이터베이스에 복제되어 두 데이터베이스가 동기화됩니다. 이는 백업 정책이 아니며, 실수로 발행된 DELETE 명령도 슬레이브에서 수행됩니다. 그러나 복제는 하드웨어 고장에 대한 보호를 도울 수 있습니다.
이 튜토리얼에서는 IP 주소가 192.168.0.100인 마스터에서 데이터베이스 exampledb를 슬레이브로 복제하는 방법을 보여줍니다. 두 시스템(마스터와 슬레이브)은 Debian Sarge에서 실행되고 있으며, 구성은 거의 모든 배포판에 약간의 수정으로 적용될 수 있습니다.
두 시스템 모두 MySQL이 설치되어 있으며, 데이터베이스 exampledb와 테이블 및 데이터가 마스터에 이미 존재하지만 슬레이브에는 존재하지 않습니다.
먼저 말씀드리고 싶은 것은, 이러한 시스템을 설정하는 방법은 이것이 유일한 방법이 아니라는 것입니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 제가 선택한 방법입니다. 이것이 여러분에게 작동할 것이라는 보장은 하지 않습니다!
1 마스터 구성
먼저 /etc/mysql/my.cnf를 편집해야 합니다. MySQL의 네트워킹을 활성화해야 하며, MySQL은 모든 IP 주소에서 수신 대기해야 하므로 다음 줄을 주석 처리합니다(존재하는 경우):
| #skip-networking #bind-address = 127.0.0.1 |
또한 MySQL에 어떤 데이터베이스에 대해 로그를 작성해야 하는지(이 로그는 슬레이브가 마스터에서 변경된 내용을 확인하는 데 사용됨), 어떤 로그 파일을 사용해야 하는지, 그리고 이 MySQL 서버가 마스터임을 지정해야 합니다. 데이터베이스 exampledb를 복제하려고 하므로 다음 줄을 /etc/mysql/my.cnf에 추가합니다:
| log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb server-id=1 |
그런 다음 MySQL을 재시작합니다:
/etc/init.d/mysql restart
그런 다음 root로 MySQL 데이터베이스에 로그인하고 복제 권한이 있는 사용자를 생성합니다:
mysql -u root -p
비밀번호 입력:
이제 MySQL 셸에 있습니다.
GRANT REPLICATION SLAVE ON . TO ‘slave_user’@’%’ IDENTIFIED BY ‘
FLUSH PRIVILEGES;
다음(여전히 MySQL 셸에서) 다음을 수행합니다:
USE exampledb;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
마지막 명령은 다음과 같은 결과를 보여줍니다:
| +---------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | mysql-bin.006 | 183 | exampledb | | +---------------+----------+--------------+------------------+ 1 row in set (0.00 sec) |
이 정보를 기록해 두세요. 나중에 슬레이브에서 필요합니다!
그런 다음 MySQL 셸을 종료합니다:
quit;
exampledb의 기존 테이블과 데이터를 마스터에서 슬레이브로 가져오는 방법은 두 가지가 있습니다. 첫 번째는 데이터베이스 덤프를 만드는 것이고, 두 번째는 슬레이브에서 LOAD DATA FROM MASTER; 명령을 사용하는 것입니다. 후자는 이 작업 중에 마스터의 데이터베이스가 잠금 상태가 되므로, 트래픽이 많은 프로덕션 시스템에서 큰 데이터베이스가 있는 경우 원하지 않는 방법입니다. 이 경우 첫 번째 방법을 따르는 것을 권장합니다. 그러나 후자의 방법은 매우 빠르므로 두 가지 방법을 모두 설명하겠습니다.
첫 번째 방법을 따르려면 다음을 수행합니다:
mysqldump -u root -p
이렇게 하면 exampledb의 SQL 덤프가 exampledb.sql 파일에 생성됩니다. 이 파일을 슬레이브 서버로 전송하세요!
LOAD DATA FROM MASTER; 방법을 따르려면 지금 당장 해야 할 것은 없습니다.
마지막으로 exampledb의 테이블 잠금을 해제해야 합니다:
mysql -u root -p
비밀번호 입력:
UNLOCK TABLES;
quit;
이제 마스터의 구성이 완료되었습니다. 슬레이브로 넘어갑니다…
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.