환경 구성 :
노드 이름 | IP 주소 |
---|---|
node01 | 192.168.10.207 |
node02 | 192.168.10.167 |
기본 환경 설정 :
- 삭제 firewalld
yum remove firewalld -y
- 닫기 SELinux를
sudo vim /etc/selinux/config
: 다음 수정
SELINUX = 사용 안 함
- 설치의 iptables-서비스, bash는 완성
yum install -y iptables-services bash-completion
systemctl enable iptables
systemctl start iptables
iptables -F
service iptables save
systemctl restart iptables
- 호스트 호스트 이름 해상도를 추가
cat /etc/hosts
192.168.10.207 node01
192.168.10.167 node02
- 추가 원하는 mariadb의 iptables 룰
iptables -A INPUT -p tcp -m multiport --dport 3306,4567,4444 -j ACCEPT
클러스터 배포 갈레
최신 고정 표시기 미러 mariadb 다운로드 1. 10.3.10
docker pull mariadb:10.3.10
, 디렉토리 데이터베이스 요구 사항을 작성합니다 mariadb 프로필과 mariadb 데이터를 저장하기
mkdir -p /opt/mariadb/conf
mkdir -p /opt/mariadb/data
노드 1 노드 동작 :
1. 첫 번째 실행 mariadb, 실행 노드 node01 목적. 호스트에 복사 MariaDB 구성 파일, / 옵션 / mariadb / 데이터 디렉토리에 데이터베이스 파일 생성
도커 RUN을 -d
-name MariaDB-amdha01
-v / 옵션 / mariadb / 데이터의 경우 : / var / lib 디렉토리 / MySQL을
-e MYSQL_ROOT_PASSWORD = 123456
MariaDB : 10.3.10
2. 복사 MariaDB 컨테이너 구성 파일에 / 옵션 / mariadb / conf의 디렉토리
docker cp mariadb-node01:/etc/mysql /opt/mariadb/conf
이동 컨테이너와 MySQL의 권한 데이터베이스의 MySQL 데이터베이스 명령 행동에 대한 3. 원격 방문을 주어
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '' WITH GRANT OPTION;
4. 종료 용기 (어머니 필수 / 옵션 / mariadb은 / 데이터 디렉토리 데이터 파일에서 데이터베이스를 생성하기 전에 컨테이너 제거) 컨테이너를 제거
docker sotp mariadb-node01 && docker rm mariadb-node01
5. 수정 복사 / 옵션 / mariadb / my.cnf의 구성 파일 디렉토리의 conf [갈레] 구성 섹션
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.10.207:4567,192.168.10.167:4567
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=192.168.10.207
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0
매개 변수 새로운 클러스터 -wsrep 추가 할 첫 번째 클러스터 데이터베이스를 필요로 시작하는 6 번째 부팅 mariadb 컨테이너 node01 노드,
docker run -d \
--name mariadb-node01 \
-p 3306:3306 \
-p 4567:4567 \
-p 4444:4444 \
-v /opt/mariadb/conf:/etc/mysql \
-v /opt/mariadb/data/:/var/lib/mysql \
-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
-e TIMEZONE=Asia/Shanghai \
mariadb:10.3.10 --wsrep-new-cluster
node02 노드 작업
1. 첫 번째 실행 mariadb, 실행 노드 node02 목적. 호스트에 복사 MariaDB 구성 파일, / 옵션 / mariadb / 데이터 디렉토리에 데이터베이스 파일을 생성
docker run -d \
--name mariadb-node02 \
-v /opt/mariadb/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mariadb:10.3.10
에 / 옵션 / mariadb / conf의 디렉토리에 복사합니다 mariadb 컨테이너 구성 파일
docker cp mariadb-node02:/etc/mysql /opt/mariadb/conf
컨테이너에와 MySQL의 권한 데이터베이스의 MySQL 데이터베이스 명령 행동에 대한 3 원격 방문을 주어
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '' WITH GRANT OPTION;
4. 종료 용기 (어머니 필수 / 옵션 / mariadb은 / 데이터 디렉토리 데이터 파일에서 데이터베이스를 생성하기 전에 컨테이너 제거) 컨테이너를 제거
docker sotp mariadb-node02 && docker rm mariadb-node02
5. 수정 복사 / 옵션 / mariadb / my.cnf의 구성 파일 디렉토리의 conf [갈레] 구성 섹션
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.1010.207:4567,192.168.10.167:4567
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=192.168.10.167
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0
매개 변수 새로운 클러스터 -wsrep 추가 할 첫 번째 클러스터 데이터베이스를 필요로 시작하는 6 번째 부팅 mariadb 컨테이너 node01 노드,
docker run -d \
--name mariadb-node02 \
-p 3306:3306 \
-p 4567:4567 \
-p 4444:4444 \
-v /opt/mariadb/conf:/etc/mysql \
-v /opt/mariadb/data/:/var/lib/mysql \
-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
-e TIMEZONE=Asia/Shanghai \
mariadb:10.3.10 --wsrep-new-cluster
확인 갈레 클러스터가 제대로 작동
show status like '%wsrep%';