* 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 |