>  기사  >  데이터 베이스  >  MySQL-Cluster 클러스터 구성에 대한 자세한 설명 (RPM 설치 패키지 이중 관리 센터 기준)

MySQL-Cluster 클러스터 구성에 대한 자세한 설명 (RPM 설치 패키지 이중 관리 센터 기준)

黄舟
黄舟원래의
2017-03-14 16:40:281226검색

아래에 특별히 언급된 내용은 없습니다. 모두 두 서버에서 실행해야 하는 명령입니다. 이중 관리 센터 구성이므로 실제로 두 시스템의 ID와 IP가 서로 다릅니다. . 매개변수 구성은 기본적으로 동일합니다


1. mysql-cluster 7.3.7

다운로드:/ / dev.mysql.com/downloads/cluster/

2. 환경 정리 및 설치

1) CentOS6.5에 포함된 mysql 서비스를 정리해서 실행하지 않아도 됩니다. 첫 번째 명령, 다른 시스템이 불가능할 경우

# yum -y remove mysql
# rpm -qa | grep mysql*
# rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

를 실행하는 것이 좋습니다. 2) 환경 준비
폴더 생성(다음 3가지 카테고리로 나누어 해당 폴더 생성)

存储节点:# mkdir /var/lib/mysql/data 
管理节点:# mkdir /var/lib/mysql-cluster    SQL节点:可不用  文件夹授权
进程DIR:# mkdir /var/run/mysqld              
使用如下的命令来变更权限保证可写入:
# chmod -R 1777 /var/lib/mysql
# chmod -R 1777 /var/run/mysqld
# chmod -R 1777 /var/lib/mysql-cluster

3) mysql-cluster

首先解压MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm-bundle.tar
# tar xvf MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm-bundle.tar
然后执行如下命令安装
# rpm -ivh MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm
# rpm -ivh MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm

설치 서버 gpl 패키지가 설치되면 다음과 같은 프롬프트 메시지가 나타나 초기 슈퍼 계정 비밀번호를 알려줍니다. 전체 클러스터 설치는 이 파일의 /root/.mysql_secret에 있습니다.

---------------------------------------------------------------------------------------------------------------------
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.
You must change that password on your first connect,
no other statement but 'SET PASSWORD' will be accepted.
See the manual for the semantics of the 'password expired' flag.
Also, the account for the anonymous user has been removed.
In addition, you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test database.
This is strongly recommended for production servers.
-----------------------------------------------------------

3. 관리 노드 구성

1) 다음 명령을 실행합니다.

# cd /var/lib/mysql-cluster
# vi config.ini

2) 첨부 파일과 같은 config.ini 파일을 구성합니다. 🎜>100.218
구성 파일 :

config.ini

구성 정보:

 [computer]
 Id=mgr-server-01
 HostName=192.168.100.218
 [mgm default]
 datadir=/var/lib/mysql-cluster
 [mgm]
 HostName=192.168.100.218
 NodeId=60
 [mgm]
 HostName=192.168.100.217
 NodeId=61
 [ndbd default]
 NoOfReplicas = 2
 DataMemory = 50M
 IndexMemory = 50M
 MaxNoOfTables = 1024
 MaxNoOfAttributes = 5000000
 MaxNoOfOrderedIndexes = 10000
 [ndbd]
 HostName=192.168.100.217
 DataDir=/var/lib/mysql
 NodeId=1
 [ndbd]
 HostName=192.168.100.218
 DataDir=/var/lib/mysql
 NodeId=2
 [mysqld]
 HostName=192.168.100.217
 NodeId=81
 [mysqld]
 HostName=192.168.100.218
 NodeId=82

100.217 구성 파일

config .ini

[computer]
Id=mgr-server-02
HostName=192.168.100.217
[mgm default]
datadir=/var/lib/mysql-cluster
[mgm]
HostName=192.168.100.218
NodeId=60
[mgm]
HostName=192.168.100.217
NodeId=61
[ndbd default]
NoOfReplicas = 2
DataMemory = 50M
IndexMemory = 50M
MaxNoOfTables = 1024
MaxNoOfAttributes = 5000000
MaxNoOfOrderedIndexes = 10000
[ndbd]
HostName=192.168.100.217
DataDir=/var/lib/mysql
NodeId=1
[ndbd]
HostName=192.168.100.218
DataDir=/var/lib/mysql
NodeId=2
[mysqld]
HostName=192.168.100.217
NodeId=81
[mysqld]
HostName=192.168.100.218
NodeId=82

사실 두 파일은 컴퓨터 구성


에 있는 이름과 식별 ID에 큰 차이가 없습니다. 및 데이터 노드

내 .cnf 파일을 수정하고 다음 콘텐츠를 추가합니다.


[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
max_connections=100
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
ndbcluster
ndb-connectstring=192.168.100.218,192.168.100.217
[mysqld_safe]
log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid
pid-file=/var/lib/mysql/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.100.218,192.168.100.217

5. MySQL 클러스터 초기 시작 명령 및 사용자 비밀번호 변경 조정: (다음 내용을 엄격히 준수하여 시작하십시오. 순서)

1) mysql-cluster 시작

초기 시작을 실행하기 전에 두 머신의 방화벽이 꺼져 있는지 확인하십시오(서비스 iptables가 중지되거나 방화벽 포트가 액세스 가능하도록 설정, 두 개의 포트는 통신 포트 1186 및 데이터 포트 3306)
처음으로 mgt 콘솔 명령을 시작합니다: ndb_mgmd -f /var/lib/mysql-cluster/config.ini(초기화에는 --initial 추가 필요)
밸런싱 노드 명령을 시작합니다:                     ndbd --initial /usr/my.cnf --explicit_defaults_for_timestamp &
my.cnf는 일부 시스템의 etc 디렉터리에 있습니다.
시작하는 동안 전체 콘솔 출력을 모니터링해야 합니다.
오류 메시지
를 처리하고 찾아냅니다. 오류 로그 내용을 기반으로 적시에 해결해야 합니다. ---------------------------------- --- ---------------------------------- --- --------모든 것이 정상이면 다음 명령을 사용하여 관리 콘솔을 엽니다. ndb_mgm
Execute # show
다음과 같이 각 노드가 완전히 시작되었는지 확인합니다. , 각 노드가 연결되었으며, 연결되지 않은 노드가 있으면

ndb_mgm> show
Connected to Management Server at: 192.168.100.218:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=1 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0)
id=2 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0, *)
[ndb_mgmd(MGM)] 1 node(s)
id=60 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)
id=61 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2)
[mysqld(API)] 2 node(s)
id=81 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2)
id=82 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)

가 표시됩니다. 연결되지 않은 노드가 있으면 아래와 같이 id=81인 라인이 표시됩니다. 연결이 없다는 뜻이니 문제와 고장점을 확인하세요

ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=1 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0)
id=2 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0, *)
[ndb_mgmd(MGM)] 1 node(s)
id=60 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)
id=61 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2)
[mysqld(API)] 2 node(s)
id=81 (not connected, accepting connect from 192.168.100.217)
id=82 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)

2) 비밀번호를 변경하세요

mysqld가 정상적으로 시작되면(pgrep mysqld를 사용하여 프로세스 ID를 얻을 수 있습니다) 다음을 사용할 수 있습니다. 수정하려면 다음 명령을 사용하세요.

mysql -u root -p;
임의의 비밀번호(자세한 내용은 문의하세요.) /root/.mysql_secret 파일을 참조하여 입력한 후 다음 명령을 사용하여 변경하세요. 비밀번호:
SET PASSWORD = PASSWORD('new 비밀번호');
그러나 이 새 비밀번호는
해시
값이어야 하므로 비밀번호를 얻으려면 다음 방법을 사용해야 합니다. 문자열의 해시 값 selectpassword('111111'); 그러나 위 명령을 실행하면 먼저 비밀번호를 설정해야 하는데, 이는 답답한 일이고, 그 다음에는 다른 곳에서 mysql로 ​​이동합니다.
111111의 해시값은 "*FD571203974BA9AFE270FE62151AE967ECA5E0AA"
SET PASSWORD = PASSWORD('*FD571203974BA9AFE270FE62151AE967ECA5E0AA' );
너무 답답해요 . 설정 후 암호문을 사용하여 로그인해야 합니다. 자, 그냥 암호문을 사용하여 입력한 후 다음 명령을 사용하여 일반 텍스트를 사용하여 강제로 로그인하세요

use mysql;
delete from user;
grant all on *.* to root@'%' identified by "111111" with grant option;
flush privileges;
quit;

그런 다음 일반 텍스트 비밀번호를 사용하여 로그인할 수 있습니다

SQL 데이터 노드가 장착된 각 서버는 위 명령을 한 번씩 실행해야 합니다



6. 위 단계가 완료된 후 클러스터가 정상적으로 작동하는지 테스트합니다

1) 간단한 기능 218에서 mysql을 입력한 후

테스트는 다음과 같이 실행됩니다.


create database clustertest;
use clustertest; 
CREATE TABLE testtable(Count INT) ENGINE=NDBCLUSTER;

참고: ENGINE=NDBCLUSTER; 엔진은 동기화를 위해 NDBCLUSTER를 사용해야 합니다. 그렇지 않으면 동기화가 수행되지 않습니다.

확인 성공 여부는 217에서 mysql에 접속해서 데이터베이스와 테이블이 자동으로 생성되는지 확인하고, 생성이 되었다면 성공했다는 뜻이다.

2) 데이터가 잘 생성되는지 테스트한다. 재해 복구 상황에서 동기화 가능(데이터베이스 1개 정지), 손실된 데이터는 재시작 시 자동으로 보충되나요?)
217에서 mysql 서비스를 중지하고 218에서 실행

insert into testtable values (1);

启动217的mysql服务,使用show确认217的数据库节点已经连接上了,执行如下语句

select * from testtable;

如果发现有数据,则表示功能完备

7、关闭Cluster:(需要严格按照次序执行)

关闭数据节点:# mysqld stop  (SQL节点可以用mysqladmin shutdown或别的方式关闭。)
在管理节点上执行:# ndb_mgm -e shutdown
将安全的关闭管理节点和数据节点。
关闭后使用如下的进程检测命令查看一下是否退出来了:

# pgrep mysqld
# ps aux | grep nbdb

如果没有,找到对应的pid进行kill 操作即可
kill -9 进程号

8、再次启动Cluster方案:

启动整个cluster的次序,注意,一些语句已经减去了初始化的内容:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini
ndbd
mysqld_safe --defaults-file=/usr/my.cnf --explicit_defaults_for_timestamp &

备注:

1、mysql安装后,默认会自动启动的,每次启动cluster的时候,都需要先把mysql的服务关闭,太麻烦,于是可以执行如下命令(我出手有点狠):

chkconfig --level 123456 mysql off

2、防火墙问题,偷个懒,我懒得去一一开放端口,干脆把防火墙直接关了(极不推荐的做法)

chkconfig --level 123456 iptables off

위 내용은 MySQL-Cluster 클러스터 구성에 대한 자세한 설명 (RPM 설치 패키지 이중 관리 센터 기준)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.