linux/DB

무중단 리플리케이션

배움엔 끝이없다 2021. 5. 25. 16:00
728x90
반응형

 

실제 구동중인 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;

 

 

 

 

출처

https://we-minarida.tistory.com/entry/%EC%8B%A4%EC%82%AC%EC%9A%A9-db-%EC%97%90%EC%84%9C-mysql-replication?category=908471

728x90
반응형
LIST

'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