실제 구동중인 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 3431497end_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;
출처
'linux > DB' 카테고리의 다른 글
mysql 최적화 하기 (0) | 2021.06.04 |
---|---|
Oracle 계정 생성 & 권한부여 & 패스워드 변경 (0) | 2021.05.25 |
mysql DB & table 별 용량 체크 (0) | 2021.05.18 |
mysql 외부 접근 및 된 권한 확인 (0) | 2021.05.11 |
mysql 락 테이블 확인 (0) | 2021.05.10 |