Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

replication

하나의 mysql 데이터베이스 서버로 부터 하나 이상의 다른 mysql 서버로 데이터를 복제하는 것을 말한다. 이때 원본 서버를 master 서버, 복제 서버를 slave 서버라고 한다. 리플리케이션은 비동기적으로 수행된다. 즉 slave는 master로 연결을 계속 유지하면서 업데이트 정보를 받지 않는다. 리플리케이션을 이용하면 아래의 이점을 누릴 수 있다. slave는 단지 읽기만 가능하다.

  • scale-out : 여러개의 slave로 로드를 분산해서 성능을 높일 수 있다. 쓰기는 마스터에서 발생 하므로 쓰기에 대한 로드 분산은 할 수 없지만, 읽기는 분산이 된다. 읽기 성능은 극적으로 높일 수 있으며, 쓰기 성능도 다소간 높일 수 있다.
  • 보안
  • 분석 : 데이터 서비스와 분석을 분리할 수 있다. 분석을 마스터가 아닌 슬레이브에서 작업하므로 실제 데이터 서비스 성능에 영향을 주지 않고 분석작업을 할 수 있다.
  • long -distance data distribution : 데이터베이스 서버와 회사가 멀리 떨어져 있어도 마스터의 성능 저하없이 리플리케이션이 가능하다.
mysql 리플리케이션은 binary log를 기반으로 한다. mysql 마스터는 운영중에 발생한 모든 데이터 쓰기와 기타 변경사항을 binary log 형태로 저장한다. 슬레이브는 이 바이너리 로그를 복사해서 마스터의 변경사항을 업데이트 하면서 데이터를 동기화 한다.

mysql 설치

  • yum install mysql
  • yum install mysql-server
  • mysqladmin -u root password [xxxxxxxxxxx]

replication 설정

master 설정

[mysqld]
log-bin=mysql-bin
server-id=1
  • create user replica identified by 'xxxxxxxx'
  • grant replication slave on *.* to 'replica'@'192.168.56.63' identified by 'xxxxxx'
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      106 |              |                  |
+------------------+----------+--------------+------------------+

slave 설정

[mysqld]
server-id=1

mysql > change master to 
> master_host='192.168.56.62', 
> master_user='replica', 
> master_password='xxxxxxxx', 
> master_log_file='mysql-bin.000001', master_log_pos=106;
Query OK, 0 rows affected (0.05 sec)

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

# cat /var/log/mysqld
120227 11:43:28 [Note] Slave I/O thread: connected to master 'replica@192.168.56.62:3306',replication started in log 'mysql-bin.000001' at position 106