실제 구동중인 DB서버에서 리플리케이션을 해야될경우
master db를 다운하지 않고 리플리케이션을 하는법
1.master db에서 데이터를 덤프할때 pos번호를 남게한다
2. 해당 덤프파일에서 마지막 pos지점을 확인한후 master db의 binlog에서 위 덤프파일의 마지막 pos지점
다음의 pos번호를 slave db에서 연동할때 넣어주어야한다.
이렇게 하면 데이터가 계속 쌓이는 상황에서도 리플리케이션이 된다.
리플리케이션 하기전 my.cnf설정은 해당문서 와 같이 하면된다
MASTER DB
#mysqldump -u root -p --master-data=2 --databases --no-autocommit=1 --single-transaction=1 --extended-insert=1 --all-databases > master_db.sql
:: 옵션 설명
--master-data :
이 옵션이 명시되면, dump 파일의 헤더 부분에 CHANGE MASTER TO 구문을 포함시키며,
이 구문에는 덤프 시작 시점의 Binary log 파일명과 위치 정보 및 호스트 정보를 포함하고 있다.
이 값을 1로 설정하면 CHANGE MASTER TO 구문이 실제 실행 가능한 형태로 포함되며,
2로 설정되면 SQL 코멘트 형태로 참조만 할 수 있도록 포함된다.
가끔 Binary log가 활성화되지 않은 서버에서 실행 시 에러를 유발하기도 하므로
반드시 먼저 테스트를 해볼 것을 권장한다.
덤프파일의 마지막 pos 지점확인
# cat master_db.sql | grep 'CHANGE MASTER'
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000021', MASTER_LOG_POS=3431497; <pos지점번호 및 bin파일 확인
mysql-bin.000021로그를 sql파일로 추출
#mysqlbinlog /mysql/data/mysql-bin.000021 > ./mysql21.sql
sql파일을 연 뒤 3431497 다음 번호를 확인한다 (번호는 랜덤입니다)
#at 3431497
end_log_pos 3431850
# at 3431850 << 3431497 바로 다음번호를 slave설정할때 넣어주어야합니다!!!!
SLAVE DB
# mysql -u root -p < master_db.sql
sql > slave stop;
sql > change master to master_host='192.168.45.8', master_user='root', master_password='password', MASTER_LOG_FILE='mysql-bin.000021', MASTER_LOG_POS=3431850;
sql > slave start;
'리눅스 > sql server' 카테고리의 다른 글
[ mysql] MyISAM, Innodb 차이 (0) | 2017.04.05 |
---|---|
[mysql] mysqlbinlog 추출시 unknown variable default-character-set 에러 (0) | 2017.03.15 |
[Mysql] mysql 기본명령어, 설정 (0) | 2017.01.17 |
[mysql] dump옵션 (0) | 2016.12.23 |
[MYSQL]ERROR 1130 (HY000): Host ' ' is not allowed to connect to this MySQL server 에러 (0) | 2016.11.28 |