인프런 - 따라하며 배우는 MySQL on Docker 학습 정리 - ProxySQL 실습 : Insert (3)
2022.01.11 - [Database/Maria,Mysql] - 인프런 - 따라하며 배우는 MySQL on Docker 학습 정리 - ProxySQL 실습 (2)
1. Insert Default Test
1) 시나리오
- 테스트 테이블에 ProxySQL을 통해 데이터를 입력시 어떤 호스트를 통해 쓰기를 시도하는지 확인한다.
2) 테스트
- db001에 테스트용 insert_test 테이블을 생성
sudo docker exec -it -uroot db001 bash
mysql -uroot -p
mysql> use testdb;
mysql> create table insert_test(hostname varchar(5) not null, insert_time datetime not null);
- 테스트 스크립트 작성(insert 테스트)
vi app_test_insert.sh
#!/bin/bash
while true;
do
mysql -uappuser -papppass -h127.0.0.1 -P16033 -N -e "insert into testdb.insert_test select @@hostname,now()" 2>&1| grep -v "Warning"
sleep 1
done
- 테스트 수행
chmod 777 app_test_insert.sh
./app_test_insert.sh
sudo docker exec -it -uroot db001 bash
mysql -uroot -p
mysql> select * from testdb.insert_test;
2. Insert 장애 테스트 Test
1) 시나리오
- insert 스크립트가 동작 중 db001 컨테이너를 중지하고 db002 컨테이너에서 testdb의 insert_test 테이블 확인
2) 테스트
- insert_test 테이블 초기화
sudo docker exec -it db001 bash
mysql -uroot -p
mysql> truncate table testdb.insert_test;
- 테스트 스크립트 실행
./app_test_insert.sh
- db001 컨테이너 중지
sudo docker stop db001
- db002 컨테이너에서 testdb.insert_test 내용 확인
sudo docker exec -it -uroot db002 bash
mysql -uroot -p
mysql> select * from testdb.insert_test;
* db001을 중지하면 app_test_insert.sh 스크립트가 실행되는 세션에서 다음과 같은 에러가 발생함
하지만 에러 출력 이후에도 insert는 문제없이 계속 수행됨
- Orchestrator Web Site의 Dashboard의 내용 확인
3. 원래 상태로 복구(Failback)
1) db001을 slave로 복구
- db001 복구 방법
sudo docker start db001
sudo docker exec -it -uroot db001 bash
mysql -uroot -p
mysql> set global read_only=1;
mysql> CHANGE MASTER TO MASTER_HOST='db002', MASTER_USER='repl', MASTER_PASSWORD='repl', MASTER_AUTO_POSITION=1;
mysql> start slave;
2) db001을 master로 복구
- 사전 작업으로 Audit의 Recovery에서 모든 Acknowledge의 처리를 수행함
- db002를 종료시키면 db001이 자동으로 master가 됨
- 이후 db002에 접속해 slave 설정을 함
sudo docker stop db002
sudo docker start db002
sudo docker exec -it -uroot db002 bash
mysql -uroot -p
mysql> set global read_only=1;
mysql> CHANGE MASTER TO MASTER_HOST='db001', MASTER_USER='repl', MASTER_PASSWORD='repl', MASTER_AUTO_POSITION=1;
mysql> start slave;
'Database > Maria,Mysql' 카테고리의 다른 글
생활코딩 - SQL JOIN 학습 정리 (0) | 2022.01.16 |
---|---|
생활코딩 - 관계형 데이터 모델링 학습 정리 (0) | 2022.01.15 |
인프런 - 따라하며 배우는 MySQL on Docker 학습 정리 - ProxySQL 실습 (2) (0) | 2022.01.11 |
인프런 - 따라하며 배우는 MySQL on Docker 학습 정리 - ProxySQL을 이용한 Proxy Layer 구축 (1) (0) | 2022.01.09 |
인프런 - 따라하며 배우는 MySQL on Docker 학습 정리 - Orchestrator를 이용한 HA(High Availability) HA 매뉴얼 테스트[자동 복구] (3) (0) | 2022.01.09 |
댓글