Notice
Recent Posts
Recent Comments
Link
반응형
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

HeeLee_DBA

MySQL - InnoDBCluster 구성하기 본문

MySQL

MySQL - InnoDBCluster 구성하기

HeeLee_ 2024. 8. 30. 20:35
반응형

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. 아키텍처

- InnoDBCluster + MySQL Router 아키텍처 -

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()

 
-- 참조
 https://velog.io/@es_seong/MySQL-CentOS-7-MySQL-%EC%84%A4%EC%B9%98-%EA%B8%B0%EB%8F%99-%EC%84%A4%EC%A0%95

[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

 

반응형