Open mfkim opened 19 hours ago
docker exec -it mariadb1 mysql -uroot -prootpassword
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 10.5.26-MariaDB-ubu2004 mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE USER 'maxscale'@'%' IDENTIFIED BY 'maxscale_password';
Query OK, 0 rows affected (0.008 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'maxscale'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.007 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.010 sec)
docker-compose.yml
version: '3'
services:
mariadb1:
image: mariadb:10.5
container_name: mariadb1
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
volumes:
- ./mariadb/galera.cnf:/etc/mysql/conf.d/galera.cnf
- mariadb1_data:/var/lib/mysql
command: --wsrep-new-cluster
networks:
- galera-network
mariadb2:
image: mariadb:10.5
container_name: mariadb2
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
volumes:
- ./mariadb/galera.cnf:/etc/mysql/conf.d/galera.cnf
- mariadb2_data:/var/lib/mysql
command: --wsrep-new-cluster
networks:
- galera-network
depends_on:
- mariadb1
mariadb3:
image: mariadb:10.5
container_name: mariadb3
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
volumes:
- ./mariadb/galera.cnf:/etc/mysql/conf.d/galera.cnf
- mariadb3_data:/var/lib/mysql
command: --wsrep-new-cluster
networks:
- galera-network
depends_on:
- mariadb1
- mariadb2
maxscale:
image: mariadb/maxscale:latest
container_name: maxscale
volumes:
- ./maxscale/maxscale.cnf:/etc/maxscale.cnf
ports:
- "4006:4006" # MaxScale 서비스
- "8989:8989" # MaxScale 관리
networks:
- galera-network
depends_on:
- mariadb1
- mariadb2
- mariadb3
adminer:
image: adminer
container_name: adminer
ports:
- "8080:8080"
networks:
- galera-network
networks:
galera-network:
driver: bridge
volumes:
mariadb1_data:
mariadb2_data:
mariadb3_data:
maxscale.cnf
[maxscale]
threads=auto # MaxScale이 사용할 스레드 수를 자동으로 설정
[Galera-Monitor]
type=monitor # 모니터 타입 설정
module=galeramon # Galera 클러스터 모니터링 모듈 사용
servers=mariadb1,mariadb2,mariadb3 # 모니터링할 서버 목록
user=maxscale # 모니터링용 사용자 계정
password=maxscale_password # 모니터링용 계정 비밀번호
monitor_interval=2000 # 모니터링 주기(밀리초)
[Galera-Service]
type=service # 서비스 타입 정의
router=readwritesplit # 읽기/쓰기 분리 라우터 사용
servers=mariadb1,mariadb2,mariadb3 # 서비스에 포함될 서버
user=maxscale # 서비스용 사용자 계정
password=maxscale_password # 서비스용 계정 비밀번호
[Galera-Listener]
type=listener # 리스너 타입 정의
service=Galera-Service # 연결할 서비스 지정
protocol=MariaDBClient # MariaDB 클라이언트 프로토콜 사용
port=4006 # 리스너가 사용할 포트
[MaxAdmin-Service]
type=service # 서비스 타입 정의
router=cli # 명령줄 인터페이스 라우터 사용
[MaxAdmin-Listener]
type=listener # 리스너 타입 정의
service=MaxAdmin-Service # 연결할 서비스 지정
protocol=maxscaled # MaxScale 관리 프로토콜 사용
socket=default # 기본 소켓 사용
galera.cnf
[mysqld]
binlog_format=ROW # 바이너리 로그 형식을 ROW 형식으로 지정 (Galera)
default-storage-engine=innodb # 기본 스토리지 엔진을 InnoDB로 설정
innodb_autoinc_lock_mode=2 # 자동 증가 락 모드 설정 (2=인터리브드)
bind-address=0.0.0.0 # 모든 네트워크 인터페이스에서 접속 허용
# Galera Provider Configuration
wsrep_on=ON # Galera 클러스터링 활성화
wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera 라이브러리 경로 지정
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster" # 클러스터의 논리적 이름
wsrep_cluster_address="gcomm://mariadb1,mariadb2,mariadb3" # 클러스터 멤버 노드 목록
# Galera Synchronization Configuration
wsrep_sst_method=rsync # State Snapshot Transfer 방식을 rsync로 지정
# Galera Node Configuration
wsrep_node_address="mariadb1" # 현재 노드의 IP 주소 또는 호스트명
wsrep_node_name="mariadb1" # 현재 노드의 논리적 이름