본문 바로가기
Mysql

mysql replication 설정

by ohrohi 2019. 5. 27.
반응형

1.     Mysql replication 설정

-       Master / Slaver 공통

# vi /etc/my.cnf

ü  Master

[mysqld]

Server-id = 1

Log_bin = mysql-bin

ü  Slaver

[mysqld]

    Server-id = 2

    Log_bin = mysql-bin

 

Master서버와 slave서버의 server-id는 다르게 설정해줘야 하며, slave가 추가되면 3, 4, 5, 6 이런식으로 동일한 server-id가 없도록 설정해야한다.

 

*추가옵션 설명 (slave 설정시)

binlog_do_db=db-> 특정 db만 리플리케이션 하고자 하는경우, 생략시 전체db리플리케이션

slave-skip-errors=all -> 모든에러를 무시하고 싱크를 맞춘다(코드번호로도 지정 가능)

 

read_only -> 해당옵션이 있어야 슬레이브서버에서읽기만 가능, 필수 옵션중 하나

è  slave에서 데이터 입력 및 삽입시 리플리케이션이 꼬이기 때문에 꼭 넣어주는게 좋다.

 

 

-       Master mysql 접속

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘추가할 유저명’@’%’ IDENTIFIED BY ‘설정할 패스워드’’

mysql> FLUSH PRIVILEGES;

mysql> FLUSH TABLES WITH READ LOCK;  -> DB Write 금지

 

이후 리플리케이션 대상 DB를 백업

# mysqldump –u root –p –all-databases –master-data=2 > 백업명.sql

이후 마스터DB에 접속후 slave에서 연결설정시 필요한 pos번호 및 binlog 파일명 확인

mysql> show master status\G

*************************** 1. row ***************************

            File: mysql-bin.000003

        Position: 287

    Binlog_Do_DB:

Binlog_Ignore_DB:

1 row in set (0.00 sec)

mysql> UNLOCK TABLES; -> DB Write 금지 해제

*bin파일과 pos mysql 재시작시 변동될 수 있다.

 

-slave 설정

master에서 백업한 파일을 slave에 넣어준다.

# mysql –u root –p < 백업명.sql

 

-       Master & slave 접속설정

Slave mysql 접속 후

mysql> CHANGE MASTER TO

        MASTER_HOST='마스터서버ip',

  MASTER_USER='추가한 유저명' ,

  MASTER_PASSWORD='설정한 패스워드',

MASTER_PORT=3306,

MASTER_LOG_FILE='mysql-bin.0000009', -> 마스터에서 확인 후 기입

MASTER_LOG_POS='204' -> 마스터에서 POS번호 확인 후 기입

 

 

 

 

2.     리플리케이션 확인

slave에서 master와 정상적으로 연결되었는지 확인한다.

mysql> show slave status\G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 49.247.212.11

                  Master_User: ohrohi_master

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000003

          Read_Master_Log_Pos: 287

               Relay_Log_File: mysqld-relay-bin.000002

                Relay_Log_Pos: 433

        Relay_Master_Log_File: mysql-bin.000003

---      중략     ---

  Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

       Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error:

               Last_SQL_Errno: 0

               Last_SQL_Error:

  Replicate_Ignore_Server_Ids:

             Master_Server_Id: 1

1 row in set (0.00 sec)

 

Slave_IO_Running, Slave_SQL_Running, Seconds_Behind_Master 부분이 위와같이 설정되어 있으면 정상적으로 연걸된것이다.

반응형