MySQL - 클러스터 MySQL 클러스터

Guanhui
풀어 주다: 2020-05-28 11:48:55
앞으로
2501명이 탐색했습니다.

MySQL - 클러스터 MySQL 클러스터

MySQL 클러스터 MySQL 클러스터

기본 개념:

"NDB"는 "인 메모리" 스토리지 엔진으로, 높은 가용성과 우수한 데이터 일관성이라는 특징을 가지고 있습니다.

MySQL 클러스터에는 다양한 장애 조치 및 로드 밸런싱 옵션으로 NDB 스토리지 엔진을 구성할 수 있는 기능이 있지만 클러스터 수준의 스토리지 엔진에서 이 작업을 수행하는 것이 가장 쉽습니다. MySQL 클러스터의 NDB 스토리지 엔진은 완전한 데이터 세트를 포함하며 클러스터 자체 내의 다른 데이터에만 의존합니다.

관리(MGM) 노드: 이 유형의 노드의 역할은 구성 데이터 제공, 노드 시작 및 중지, 백업 실행 등 MySQL 클러스터의 다른 노드를 관리하는 것입니다. 이러한 노드는 다른 노드의 구성을 관리하므로 다른 노드보다 먼저 시작되어야 합니다. MGM 노드는 "ndb_mgmd" 명령으로 시작됩니다.

데이터 노드: 이 유형의 노드는 클러스터 데이터를 저장하는 데 사용됩니다. 데이터 노드 수는 조각의 배수인 복제본 수와 관련이 있습니다. 예를 들어 각각 2개의 조각이 있는 2개의 복제본이 있는 경우 4개의 데이터 노드가 있습니다. 하지만 여러 복사본을 설정할 필요는 없습니다. 데이터 노드는 "ndbd" 명령으로 시작됩니다.

SQL 노드: 클러스터 데이터에 액세스하는 데 사용되는 노드입니다. MySQL 클러스터의 경우 클라이언트 노드는 NDB 클러스터 스토리지 엔진을 사용하는 기존 MySQL 서버입니다. 일반적으로 SQL 노드는 "mysqld -ndbcluster" 명령을 사용하거나 "my.cnf"에 "ndbcluster"를 추가한 후 "mysqld"를 사용하여 시작된다.

관리 서버(MGM 노드)는 클러스터 구성 파일 및 클러스터 로그 관리를 담당합니다. 클러스터의 각 노드는 관리 서버에서 구성 데이터를 검색하고 관리 서버의 위치를 ​​확인하는 방법을 요청합니다. 데이터 노드 내에서 새로운 이벤트가 발생하면 해당 노드는 해당 이벤트에 대한 정보를 관리 서버로 전송한 후 해당 정보를 클러스터 로그에 기록합니다.

클러스터 구성 개요:

설치 버전: mysql 클러스터 7.3.2

운영 체제: centos6.3 (X64)

소프트웨어 이름: mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64. tar.gz(일반 버전)

관리 노드 IP: 192.168.0.202

데이터 노드-SQL 노드 IP: 192.168.0.203

데이터 노드-SQL 노드 IP: 192.168.0.204

종속성 패키지 설치: yum install -y glibc perl libaio-devel

x32비트 시스템에서는 yum groupinstall "호환성 라이브러리"

1. 관리 노드 설치 및 구성

1을 설치해야 합니다. mysql-cluster

groupadd mysql
useradd  -g mysql -s  /sbin/nologin  mysql
tar  -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64. tar .gz
mv  mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64  /usr/local/mysql-cluster
chown  -R root.mysql  /usr/local/mysql/
chown  -R mysql.mysql  /usr/local/mysql/data/
/usr/local/mysql/scripts/mysql_install_db  --basedir= /usr/local/mysql  --datadir= /usr/local/mysql/data  --user=mysql &   #初始化数据库
cp  -rf  /usr/local/mysql/bin/ndb_mgm *  /usr/local/bin/  #复制ndb节点管理命令到本地,方便使用
로그인 후 복사

2. mysql 기본 구성 파일

vi  /etc/my .cnf
[MYSQLD]
  user = mysql
  socket =  /tmp/mysql .sock
  basedir =  /usr/local/mysql  #安装目录
  datadir =  /usr/local/mysql/data  #数据库存放目录
  character-sets-server=UTF8
  ndbcluster  #运行NDB存储引擎
  ndb-connectstring=192.168.0.202
  lower_case_table_names=1  #表名是否区分大小写1为不区分,不然linux下表名是区分大小写的
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.202  #Mysql Cluster管理节点IP
로그인 후 복사

3. mysql 클러스터 구성 파일 생성

mkdir  /var/lib/mysql-cluster
vi  /var/lib/mysql-cluster/config .ini
[ndbd default]
NoOfReplicas=2  #定义在Cluster环境中相同数据的份数,最大为4
DataMemory=256M  #分配的数据内存大小,根据本机服务器内存适量来分配
IndexMemory=256M  #设定用于存放索引(非主键)数据的内存段大小
#一个NDB节点能存放的数据量是会受到DataMemory和IndexMemory两个参数设置的约束,两者任何一个达到限制数量后,都无法再增加能存储的数据量。如果继续存入数据系统会报错“table is full”。
[ndb_mgmd]
nodeid=1
hostname =192.168.0.202
datadir= /var/lib/mysql-cluster/
[ndbd]
nodeid=2
hostname =192.168.0.203
datadir= /usr/local/mysql/data
[ndbd]
nodeid=3
hostname =192.168.0.204
datadir= /usr/local/mysql/data
[mysqld]
nodeid=4
hostname =192.168.0.203
[mysqld]
nodeid=5
hostname =192.168.0.204
로그인 후 복사

저장하고 종료하세요!

chown  mysql.mysql  /var/lib/mysql-cluster/config .ini
로그인 후 복사

2. 두 데이터 노드와 SQL 노드의 구성은 동일합니다

1. mysql-cluster

tar  -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64. tar .gz
mv  mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64  /usr/local/mysql
groupadd mysql
useradd  -g mysql -s  /sbin/nologin  mysql
chown  -R root.mysql  /usr/local/mysql
chown  -R mysql.mysql  /usr/local/mysql/data
/usr/local/mysql/scripts/mysql_install_db  --basedir= /usr/local/mysql  --datadir= /usr/local/mysql/data  --user=mysql &  #初始化数据库
cp  /usr/local/mysql/support-files/mysql .server  /etc/init .d /mysqld
cp  /usr/local/mysql/support-files/medium .cnf  /etc/my .cnf
chmod  +x /etc/init .d /mysqld
로그인 후 복사

2를 설치합니다. 3개 서버의 방화벽(IPTABLES) 및 Selinux)

1. 관리 노드를 시작하세요

vi  /etc/my .cnf
[MYSQLD]
user=mysql
character_set_server=utf8
ndbcluster
ndb-connectstring=192.168.0.202
default-storage-engine=ndbcluster  #设置默认是NDB存储引擎
datadir= /usr/local/mysql/data
basedir= /usr/local/mysql
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.202  #mysql cluster 管理节点IP
로그인 후 복사
시작 중 오류가 발생하는 경우: config.ini에 설정된 모든 노드 ID를 삭제하세요!

2. 두 개의 데이터 노드와 SQL 노드를 시작합니다

데이터 노드: /usr/local/mysql/bin/ndbd --initial

SQL 노드: bin/mysqld_safe --user=mysql & 또는 service mysqld start

3 .클러스터 상태를 확인하세요

ndb_mgm -e show #관리노드와 데이터노드가 표시되면 성공입니다

4. 데이터베이스를 생성하여 동기화되었는지 확인하세요

mysql -u root -p

Mysql>create 데이터베이스 테스트 ;

Mysql>use test ;

Mysql>create table abc (id int)engine=ndbcluster; #데이터베이스 테이블의 엔진을 NDB로 지정하세요. 그렇지 않으면 동기화가 실패합니다

Mysql>Insert abc() 값으로 ​​​​(1); select * from abc;

#이때 두 데이터가 일치하는지 확인하면 클러스터가 성공한 것입니다!

참고 사항:

1 테이블을 생성할 때 반드시 ENGINE=NDB 또는 ENGINE=NDBCLUSTER를 사용하여 NDB 클러스터 스토리지 엔진을 지정하거나 ALTER TABLE 옵션을 사용하여 테이블의 스토리지 엔진을 변경하세요.

2.NDB 테이블에는 기본 키가 있어야 하므로 테이블을 생성할 때 기본 키를 정의해야 합니다. 그렇지 않으면 NDB 스토리지 엔진이 자동으로 암시적 기본 키를 생성합니다.

3. Sql 노드의 사용자 권한 테이블은 여전히 ​​MYISAM 스토리지 엔진에 저장되므로 Sql 노드에서 생성된 MySql 사용자는 동일한 사용자를 사용하여 다른 Sql 노드에 액세스할 수 있습니다. 해당 SQL 노드 추가 사용자를 사용해야 합니다.

4. 관리 및 유지 관리 명령

mysql 클러스터 종료: ndb_mgm -e shutdown

mysql 클러스터 다시 시작: ndb_mgmd -f /var/lib/mysql-cluster/config.ini

데이터 노드 다시 시작 : /usr/ local/mysql/bin/ndbd

SQL 노드 시작: /usr/local/mysql/bin/mysqld_safe --user=mysql & 또는 service mysqld restart

mysql 상태 보기: ndb_mgm -e show

시작 순서:

관리 노드-> SQL 노드

닫기 순서:

SQL 노드-> 관리 노드

추천 튜토리얼: "

MySQL Tutorial

"

위 내용은 MySQL - 클러스터 MySQL 클러스터의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:oschina.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿