-
[MariaDB] Replication 구성 (on Docker)Database 2023. 1. 11. 17:09
* Architecture
* 사전 셋업
: 호스트 명 및 호스트 파일 설정
# 호스트명 설정 hostnamectl set-hostname maria-node1 hostnamectl set-hostname maria-node2 # 예시 cat << EOF >> /etc/hosts 172.30.1.80 maria-node1 172.30.1.81 maria-node2 EOF
: 방화벽 포트 오픈
# 현재 방화벽 상태 확인 firewall-cmd --state # 서비스 기동 or 정지 systemctl start firewalld.service systemctl stop firewalld.service # 자동 기동 상태 확인 및 자동 기동 셋팅 systemctl is-enabled firewalld.service systemctl enable firewalld.service # 1번 노드 firewall-cmd --permanent --zone=public --add-port=3306/tcp # 2번 노드 firewall-cmd --permanent --zone=public --add-port=3307/tcp # apply rules firewall-cmd --reload
: 호스트 계정 생성
groupadd -g 1001 mysql useradd -u 1001 -r -g 1001 mysql
* Docker 설치
yum install -y docker systemctl enable --now docker systemctl start docker
* 마리아 DB 셋업
: Bridge Network 생성
docker network create --driver bridge replbridge
: MASTER Server 셋업
# shared volume 생성 mkdir -p /db/db001/conf /db/db001/data /db/db001/log # my.cnf 설정 cd /db/db001/conf vi my.cnf [mysqld] server_id=1 log_bin=mysql-bin expire_logs_days=7 # 권한 설정 chown -R mysql:mysql /db chmod -R 755 /db # 컨테이너 기동 docker run -it --name db001 -h db001 -p 3306:3306 \ -v /db/db001/conf:/etc/mysql/conf.d \ -v /db/db001/data:/var/lib/mysql \ -v /db/db001/log:/var/log/mysql \ -e MARIADB_ROOT_PASSWORD=P@ssw0rd -d mariadb:10.4 # 레플리케이션 용도의 계정 생성 CREATE USER 'rep'@'%' IDENTIFIED BY 'P@ssw0rd'; GRANT REPLICATION SLAVE ON *.* TO 'rep'@'%'; // 특정 아이피만 허용 할때는 %에 IP기재 FLUSH PRIVILEGES; # MASTER NODE 동작 확인 show master status;
: SLAVE NODE 셋업
# shared volume 생성 mkdir -p /db/db002/conf /db/db002/data /db/db002/log # my.cnf 설정 cd /db/db002/conf vi my.cnf [mysqld] log_bin=mysql-bin server-id=2 relay_log=mysql-relay-bin log_slave_updates=1 read_only=1 # 권한 설정 chown -R mysql:mysql /db chmod -R 755 /db # 컨테이너 기동 docker run -it --name db002 -h db002 -p 3307:3306 \ -v /db/db002/conf:/etc/mysql/conf.d \ -v /db/db002/data:/var/lib/mysql \ -v /db/db002/log:/var/log/mysql \ -e MARIADB_ROOT_PASSWORD=P@ssw0rd -d mariadb:10.4 # 레플리케이션 셋팅 CHANGE MASTER TO MASTER_HOST='master IP', MASTER_USER='rep', MASTER_PASSWORD='P@ssw0rd', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000002', # master에서 확인한 file MASTER_LOG_POS=342, # master에서 확인한 position MASTER_CONNECT_RETRY=10; # Slave Start start slave; # SLAVE 동작 확인 (SLAVE IO/SQL Running 항목 'yes' 확인) show slave status\G;
* 참고자료
my.cnf 파일 권한
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=iamfreeman&logNo=50005893928
'Database' 카테고리의 다른 글
[MSSQL] 백업 및 로그 파일 축소 (0) 2023.02.28 [MariaDB] Slow query 수집 (0) 2023.01.27 [MariaDB] MariaDB sqldump로 배치(Cron) 만들기 (0) 2023.01.26 [MariaDB] Proxy SQL 셋팅 (on Docker) (0) 2023.01.12 [MariaDB] Mariabackup 백업 & 복구 with Docker Container (0) 2022.11.25