🧪
04 / 05
테스트
DML/DDL 복제 검증, 장애 시나리오 테스트, 대량 Write 부하 테스트
TestingFailoverStress Test
Testing
이중화 테스트
운영 적용 전에 테스트 환경에서 다양한 시나리오를 검증했다. 기본 복제 동작부터 장애 상황, 대량 Write 부하까지 테스트해서 안정성을 확인했다.
기본 복제 테스트
Master에서 DML(INSERT, UPDATE, DELETE)과 DDL(ALTER TABLE, CREATE INDEX)을 실행하고 Replica에 정상 반영되는지 확인했다.
-- Master에서
INSERT INTO test_table (name, value) VALUES ('test1', 100);
UPDATE test_table SET value = 200 WHERE name = 'test1';
DELETE FROM test_table WHERE name = 'test1';
-- DDL
ALTER TABLE test_table ADD COLUMN created_at DATETIME DEFAULT CURRENT_TIMESTAMP;
CREATE INDEX idx_name ON test_table(name);
-- Replica에서 확인
SELECT * FROM test_table;
SHOW CREATE TABLE test_table\G
DML, DDL 모두 정상적으로 복제 확인 완료.
장애 시나리오 테스트
시나리오 1: Replica 재시작
sudo systemctl restart mariadb
재시작 후 GTID 기반으로 자동 복제 재개 확인. 위치를 자동으로 찾아감.
시나리오 2: 네트워크 단절
# Master IP 차단 sudo iptables -A INPUT -s [master-test-ip] -j DROP sudo iptables -A OUTPUT -d [master-test-ip] -j DROP # 30초 후 복구 sudo iptables -D INPUT -s [master-test-ip] -j DROP sudo iptables -D OUTPUT -d [master-test-ip] -j DROP
네트워크 복구 후 IO Thread 자동 재연결, 밀린 binlog 수신 후 복제 정상화.

대량 Write 부하 테스트
Master에 10만건 INSERT를 발생시켜서 Replica가 따라가는지 확인했다.
DELIMITER //
CREATE PROCEDURE bulk_insert(IN cnt INT)
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i < cnt DO
INSERT INTO test_table (name, value)
VALUES (CONCAT('bulk_', i), RAND() * 1000);
SET i = i + 1;
END WHILE;
END //
DELIMITER ;
CALL bulk_insert(100000);10만건 INSERT 후 Seconds_Behind_Master가 일시적으로 증가했다가 점차 따라잡는 것을 확인했다. 이 테스트에서 병렬 복제 튜닝의 필요성을 발견했다.

테스트 결과 요약
| 테스트 항목 | 결과 |
|---|---|
| 기본 DML 복제 | 정상 |
| DDL 복제 | 정상 |
| Replica 재시작 | 자동 복구 |
| 네트워크 단절 복구 | 자동 재연결 |
| 대량 Write 부하 | 튜닝 후 안정 |
| GTID 동기화 | 정상 |