mysql replication 설정, master-slave 설정하기/장애대응
알아둘일
2011. 4. 7. 00:10
mysql 리플리케이션 설정은 어렵지 않군.
장애대응이 어려운것 같다.
# 기본 mysql replication 설정.(마스터-슬레이브)
1. mysql config 설정
master , slave 각각 config 파일에 replication 설정을 해준다.
우분투의 경우 /etc/mysql/conf.d 에 replication_slave.cnf (파일명은 임의로 )
/etc/mysql/my.cnf 의 마지막줄에 이렇게 되어 있어서 불러오게 된다
내용은 이런식이다. (슬레이브쪽)
binlog_do_db 등을 각자의 서버설정에 맞게 바꾸어 주면 된다.
2. replication 접근 권한설정
replication 은 slave 쪽에서 master 의 자료(bin_log)를 참조해서 데이터를 가져가는 것이다.
그래서 슬레이브쪽에서 마스터에 접근할 수 있어야 한다.
그 명령은 다음과 같다.(마스터쪽에서 mysql 명령을 내려준다)
IP 주소대신 /etc/hosts 에 설정한 호스트명을 적어줘도 된다. ( master-host = master 같은..)
3. 사용 및 장애대응
작동 중지/실행
slave 의 position 값이 일치하지 않는경우.
다음처럼 해준다.
다음에는 master-master 설정 과 mysql proxy
장애대응이 어려운것 같다.
# 기본 mysql replication 설정.(마스터-슬레이브)
1. mysql config 설정
master , slave 각각 config 파일에 replication 설정을 해준다.
우분투의 경우 /etc/mysql/conf.d 에 replication_slave.cnf (파일명은 임의로 )
/etc/mysql/my.cnf 의 마지막줄에 이렇게 되어 있어서 불러오게 된다
!includedir /etc/mysql/conf.d/my.cnf 의 [mysqld] 탭에 직접추가해줘도 된다.
내용은 이런식이다. (슬레이브쪽)
[mysqld]마스터쪽은 다음과 같다.
server-id = 2
master-host = master
master-user = replication
master-password = slave
replicate-do-db = master_db
replicate-do-db = other_db
[mysqld]설정만 보면 이해할 수 있을 것이다.
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = master_db
binlog_do_db = other_db
binlog_ignore_db = mysql
binlog_ignore_db = information_schema
binlog_do_db 등을 각자의 서버설정에 맞게 바꾸어 주면 된다.
2. replication 접근 권한설정
replication 은 slave 쪽에서 master 의 자료(bin_log)를 참조해서 데이터를 가져가는 것이다.
그래서 슬레이브쪽에서 마스터에 접근할 수 있어야 한다.
그 명령은 다음과 같다.(마스터쪽에서 mysql 명령을 내려준다)
mysql> grant replication slave on *.* to 'replication'@192.168.0.1 identified by 'slave';진한부분이 conf 에서 설정한 master-user / master-host / master-password 에 해당한다.
IP 주소대신 /etc/hosts 에 설정한 호스트명을 적어줘도 된다. ( master-host = master 같은..)
3. 사용 및 장애대응
작동 중지/실행
start slave ;슬레이브 상태 보기
stop slave ;
mysql> show slave status\G마스터의 상태를 보려면
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: master
Master_User: replication
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000018
Read_Master_Log_Pos: 958292
Relay_Log_File: slave-relay-bin.000271
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000018
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: master_db
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 958292
Relay_Log_Space: 556
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
mysql> show master status\G진하게 표시한 position 이 일치하는지 확인하면 된다.
*************************** 1. row ***************************
File: mysql-bin.000018
Position: 958292
Binlog_Do_DB: master_db
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
slave 의 position 값이 일치하지 않는경우.
다음처럼 해준다.
mysql > stop slave;cron 등으로 주기적으로 확인해주도록 한다.
mysql > reset slave;
mysql > start slave;
다음에는 master-master 설정 과 mysql proxy
반응형
'알아둘일' 카테고리의 다른 글
nginx , php-fpm 사용시 주의점. (0) | 2011.04.10 |
---|---|
bind 에서 nsupdate 로 동적으로 zone 변경하기 (0) | 2011.04.10 |
Centos 에서 nginx , php-fpm 설치 (0) | 2011.04.05 |
sysmon 을 python 2.6 에서 사용하기 (0) | 2011.03.29 |
네이버 sysmon 을 써보려니 python 이 문제 (0) | 2011.03.26 |
WRITTEN BY
- 1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.
,