HeeLee_DBA
MySQL - InnoDBCluster 구성하기 본문
MySQL5.7버전은 Master-Slave로 이중화하고 MHA로 fail-over를 구성했다면,
MySQL8.0부터는 InnoDBCluster로 이중화하고 MySQL Router로 로드밸런싱 및 장애 조치 작업을 할 수 있다.
*MHA는 Red Hat Linux7.9버전까지만 사용 권장
*InnoDBCluster는 EE버전에서만 가능하며,Multi Primary가 가능하나 권장사항이 아님
OS : AWS EC2 - Red Hat Linux8.5
DBMS : MySQL8.0.36
1. 아키텍처

https://dev.mysql.com/doc/mysql-shell/8.4/en/mysql-innodb-cluster.html
MySQL :: MySQL Shell 8.4 :: 7 MySQL InnoDB Cluster
MySQL Shell 8.4 / MySQL InnoDB Cluster Chapter 7 MySQL InnoDB Cluster MySQL InnoDB Cluster provides a complete high availability solution for MySQL. By using AdminAPI, which is included with MySQL Shell, you can easily configure and administer a grou
dev.mysql.com
2. 설치 전 요구 사항
1. InnoDBCluster는 그룹 복제를 사용하므로 모든 노드가 동일한 요구 사항을 충족해야함
2. 스토리지엔진을 InnoDBCluster 이외에는 사용 할 수 없기 때문에 모든 테이블을 InnoDBCluster로 변경해야함
3. Performance Schema가 모든 노드에서 사용되어져야함
4. 리눅스에서는 Python 설치 필요
5. 각각의 고유 server_id가 필요
6. 노드의 Server UUID 및 server_id는 서로 달라야함
7. 각 노드에 3306, 6446, 6447 Port가 오픈되어 있어야함
3. MySQL 설치
-- 시스템 패키지 업데이트
yum update
-- Repository 추가
yum install https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
-- MySQL install
yum install mysql-server
-- MySQL 상태 확인, 중지 및 재시작
systemctl status mysqld
systemctl stop mysqld
systemctl restart mysqld
-- Mysql 접속
mysql -u root -p
4. 필요 패키지 설치 및 사전 Setting
-- mysqlsh 설치
yum install mysql-shell
-- Node 정보 입력(모든 노드에 등록)
vi /etc/hosts
##Mysql Setting
1.1.1.1 gr-01
1.1.1.2 gr-02
1.1.1.3 gr-03
-- MySQL Shell을 통해 클러스터를 구성할 때 사용할 계정 생성(각 노드 별 생성)
create user 'cluster_admin'@'%' identified by 'passwd';
grant all on *.* 'cluster_admin'@'%' with grant option;
5. InnoDBCluster 설정
-- MySQL Shell 시작
mysql 계정으로 실행하고 디버깅을 위해 mysqlsh --log-level=DEBUG3 옵션으로 진행
cd /usr/bin
mysqlsh --log-level=DEBUG3
##MySQL Shell 접속 후
dba.vervose=3
-- 클러스터에 노드 등록 및 확인
##1번 노드에서 실행 및 확인
dba.configureInstance('cluster_admin@gr-01:3306')
dba.checkInstanceConfiguration('cluster_admin@gr-01:3306')
##2번 노드에서 실행 및 확인
dba.configureInstance('cluster_admin@gr-02:3306')
dba.checkInstanceConfiguration('cluster_admin@gr-02:3306')
##3번 노드에서 실행 및 확인
dba.configureInstance('cluster_admin@gr-03:3306')
dba.checkInstanceConfiguration('cluster_admin@gr-03:3306')*dba.checkInstanceConfiguration 명령어 수행 후 status : "ok"로 등록 완료 확인
-- 클러스터에 노드 추가
##클러스터계정을 사용하여 MySQL Shell 접속
\c cluster_admin@gr-01:3306
##클러스터 생성
cluster = dba.createCluster('myCluster')
##각 노드를 클러스터에 추가([C]lone 선택)
cluster.addInstance('cluster_admin@gr-02:3306)
cluster.addInstance('cluster_admin@gr-03:3306)
##클러스터 상태 확인
cluster.status()*클러스터 삭제 : cluster.removeInstance()
6. Multi Primary
-- Multi Primary로 변경
##Multi Praimary로 변경
cluster.switchTOMultiPrimaryMode()
##상태 확인
cluster.status()[MySQL] CentOS 7 MySQL 설치 및 기동 방법
CentOS 7 MySQL 설치 및 기동 방법
velog.io
https://m.blog.naver.com/tpgpfkwkem0/222056715685
Mysql8 Innodb Cluster 구성하기 :D
안녕하세요 한달만에 들어오는 닷닷입니닷 :D 오늘은 Mysql 8.0.19 Innodb Cluster 구성하는 것을 포스...
blog.naver.com
'MySQL' 카테고리의 다른 글
| MySQL - COPY, INPLACE, INSTANT 알고리즘 차이 (1) | 2024.12.19 |
|---|---|
| MySQL - MySQL Router 구성하기 (1) | 2024.10.14 |
| MySQL - MySQL8.0에서 server_id 변경하기 (0) | 2024.08.30 |
| MySQL - PMM 구성 및 Alert(Email) 기능 (0) | 2024.08.20 |
| MySQL - binlog_format (1) | 2022.11.23 |