docker-compose로 MySQL Master/Slave 구성 배우기
7065 단어 docker-composemysql5.7
docker-compose로 MySQL Master/Slave 구성 배우기
Kubernetes상에서 공식 StatefulSet의 사용 예을 보면서 MySQL의 Master/Slave 구성을 만들려고 하면, 여러가지 벽이 너무 많았기 때문에 사전에 예비 지식을 획득해 둔다.
이번 목표로는
xtrabackup
의 움직임 ncat
의 움직임 근처를 밝혀 간다.
구성
이번에 사용하는 docker-compose는 이쪽
docker-compose.yml
version: '3.4'
# mysqlの共通設定
x-template: &mysql-template
image: mysql:5.7
environment:
MYSQL_DATABASE: sample
MYSQL_ROOT_USER: root
MYSQL_ROOT_PASSWORD: pass
# xtrabackupの共通設定
x-template: &xtra-template
image: gcr.io/google-samples/xtrabackup:1.0
tty: true
# volumeの作成
volumes:
master-volume:
driver: local
slave-volume:
driver: local
services:
# master側のMySQLサービス
master:
<<: *mysql-template
volumes:
- master-volume:/var/lib/mysql # データディレクトリ
- ./master/conf:/etc/mysql # 設定ファイル
# master側バックアップを取得、送信するためのxtrabackupサービス
master-xtra:
<<: *xtra-template
volumes:
- master-volume:/var/lib/mysql
- ./master/conf:/etc/mysql # 設定ファイル
# ncat でバックアップリクエストを受け付ける
entrypoint: >
ncat --listen --keep-open --send-only --max-conns=1 3307 -c
"xtrabackup --backup --slave-info --stream=xbstream --host=master --user=root --password=pass"
# slave側のMySQLサービス
slave:
<<: *mysql-template
volumes:
- slave-volume:/var/lib/mysql
- ./slave/conf:/etc/mysql/conf.d
# slave側バックアップを作成するためのxtrabackupサービス
slave-xtra:
<<: *xtra-template
volumes:
- slave-volume:/var/lib/mysql
- ./slave/conf:/etc/mysql/conf.d
conf는 음, 잘 만들 것이다.
Step1. Master 시작
우선은 master측 MySQL을 기동한다.
보통으로 기동해 버려 OK.
docker-compose up -d master
Step2. ncat 시작
xtrabackup 서비스로 master측 MySQL의 데이터 디렉토리를 마운트해 두는 것으로, xtrabackup으로 백업을 취득할 수 있다.
slave 측에 백업을 전송할 수 있도록 ncat로 요청을 접수하고 slave 측의 요청을 트리거로 백업을 취득·송신한다.
master측의 xtrabackup 서비스를 기동하면(자) ncat가 포그라운드에서 요구를 대기한다.
docker-compose up -d master-xtra
ncat의 명령에 대해서는 이런 느낌?
옵션
내용
--listen
청취 모드에서 시작
--send-only
데이터 전송만
--max-conns=1
최대 동시 연결 수 1
3307
포트 번호
-c
지정된 명령 실행
Step3. 백업 얻기
slave의 작성에 있어서는, 작성 시점의 내용으로 master의 데이터의 백업을
취득·복원하고 나서 차분의 로그를 적용해 둔다.
마스터 측의 ncat에 요청을 보내 백업 데이터를 보냅니다.
취득한 결과를 slave측의 데이터 디렉토리에 보존한다.
slave 측 xtrabackup 서비스를 시작하고
docker-compose up -d slave-xtra
slave-xtra에 연결
docker-compose exec slave-xtra bash
백업을 얻고 로그를 적용합니다.
ncat --recv-only master-xtra 3307 | xbstream -x -C /var/lib/mysql/
xtrabackup --prepare --target-dir=/var/lib/mysql
이것으로 백업 검색 및 복원이 완료되었습니다.
Step4. Slave 시작
slave MySQL을 시작하십시오.
docker-compose up -d slave
취득한 백업으로부터 slave의 기동에 필요한 정보를 취득한다.
docker-compose exec slave-xtra bash
cat /var/lib/mysql/xtrabackup_binlog_info
내용은
바이너리 로그 이름 [[:space:]] 로그 위치
LOG_INFO=(`cat /var/lib/mysql/xtrabackup_binlog_info`)
slave 설정하기
mysql -u root -ppass -h slave <<EOF
CHANGE MASTER TO MASTER_LOG_FILE='${LOG_INFO[0]}',
MASTER_LOG_POS=${LOG_INFO[1]},
MASTER_HOST='master',
MASTER_USER='root',
MASTER_PASSWORD='pass',
MASTER_CONNECT_RETRY=10;
START SLAVE;
EOF
이제 슬레이브가 움직일 것이므로 master 측을 적절하게 업데이트하십시오.
mysql -u root -ppass -h master -D sample -e 'create table test(id int(5)); insert into test values(1)';
slave 측에서 확인
mysql -u root -ppass -h slave -D sample -e 'select * from test;'
할 수 있었다!
다음은 Kube에서 제대로 움직일지 확인하지 않으면 ...
Reference
이 문제에 관하여(docker-compose로 MySQL Master/Slave 구성 배우기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Richter-A/items/961a7237205eff0231de텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)