1. mysql-cluster 7.3.7
http://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/mysqldrrree
3) mysql-cluster 설치
먼저 압축을 푼다 MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm-bundle.tar
使用如下的命令来变更权限保证可写入: # chmod -R 1777 /var/lib/mysql # chmod -R 1777 /var/run/mysqld # chmod -R 1777 /var/lib/mysql-cluster
그런 다음 다음 명령을 실행하여 설치
# tar xvf MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm-bundle.tar
특별 주의: 서버 gpl 패키지가 설치된 후 다음 프롬프트 메시지가 표시되어 첫 번째 슈퍼 계정이 있음을 알려줍니다. 전체 클러스터 설치 후 비밀번호는 이 파일에 /root /.mysql_secret 있습니다.
# 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
2. 관리 노드 구성
1) 다음 명령을 실행합니다.
--------------------------------------------------------------------------------------------------------------------- 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. -----------------------------------------------------------
2) config.ini 파일 구성
# cd /var/lib/mysql-cluster # vi config.ini
3. SQL 노드 및 데이터 노드 구성
my.cnf 파일을 수정하고 다음 내용을 추가합니다.
[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 ExecuteOnComputer=mgr-server-01 PortNumber=1186 ArbitrationRank=2 [ndbd default] NoOfReplicas=2 DataMemory=500M IndexMemory=500M [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
4. MySQL 클러스터 초기 시작 명령 및 사용자 비밀번호 변경 조정 : (순차 시작을 엄격히 준수하십시오.)
1) mysql-cluster 시작
초기 시작을 수행하기 전에 두 시스템의 방화벽이 꺼져 있는지 확인하십시오(service iptables 중지 또는 방화벽 포트를 통과 가능하도록 설정). 두 포트는 통신 포트 1186과 데이터 포트 3306)
처음으로 mgt 콘솔 명령 시작: ndb_mgmd -f /var/lib/mysql-cluster/config.ini
밸런싱 노드 명령 시작: ndbd - -initial
데이터 노드 시작 명령: mysqld_safe -- defaults-file=/etc/my.cnf --explicit_defaults_for_timestamp &
시작 프로세스 중에 전체 콘솔 출력을 모니터링해야 합니다. 오류 메시지가 발견되면 오류 로그 내용에 따라 적시에 해결해야 합니다.
---------------------------------- --- ---------------------------------- --- --------
모든 것이 정상이면 다음 명령을 사용하여 관리 콘솔을 엽니다. ndb_mgm
Execute # show
다음과 같이 각 노드가 완전히 시작되었는지 확인합니다. , 각 노드가 연결되었으며, 연결되지 않은 노드가 있으면
[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 [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
가 표시됩니다. 연결되지 않은 노드가 있으면 아래와 같이 id=81인 라인이 표시됩니다. 연결이 없다는 뜻이니 문제와 고장점을 확인하세요
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) [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)
2) 비밀번호를 변경하세요
mysqld가 정상적으로 시작되면(pgrep mysqld를 사용하여 프로세스 ID를 얻을 수 있음) 다음을 사용할 수 있습니다. 수정하려면 다음 명령을 사용하세요.
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) [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)
임의 비밀번호(자세한 내용은 /root 참조) /.mysql_secret 파일), 입력 후 다음 명령을 사용하여 비밀번호를 변경하세요.
mysql -u root -p;
단, 이 새 비밀번호는 해시 값이어야 하므로 다음 방법을 사용하여 비밀번호를 얻으세요문자열의 해시 값
SET PASSWORD = PASSWORD('新密码');
단 , 위 명령을 실행하면 먼저 비밀번호를 설정하게 되는데, 답답하고 다시 돌아옵니다. 그런 다음 다른 곳에서 mysql로 이동하여 실행하십시오.
111111의 해시 값은 "*FD571203974BA9AFE270FE62151AE967ECA5E0AA"
SET PASSWORD = PASSWORD( '*FD571203974BA9AFE270FE62151AE967ECA5E0AA');
너무 답답하네요. 설정하고 나면 비밀번호를 사용해야 로그인이 되니 괜찮으니 그냥 비밀번호로 입력하신 후, 다음 명령어를 사용하여 강제로 일반 텍스트를 사용하여 로그인하세요.
select password('111111');
그런 다음 일반 텍스트 비밀번호를 사용하여 로그인할 수 있습니다.
SQL 데이터 노드가 장착된 여러 서버에서 위의 명령을 실행해야 합니다.
5. 완료, 클러스터가 정상적으로 작동하는지 테스트
1) 간단한 기능 테스트
218에 mysql을 입력한 후 다음을 실행합니다.
use mysql; delete from user; grant all on *.* to root@'%' identified by "111111" with grant option; flush privileges; quit;
참고: 엔진은 반드시 ENGINE=NDBCLUSTER; NDBCLUSTER로 동기화하지 않으면 동기화가 되지 않습니다.
217에서 mysql로 가서 데이터베이스와 테이블이 자동으로 생성되는지 확인하면 실패인 것입니다. 환경 구성 확인
2) 재해 복구 상황에서 데이터 동기화가 가능한지 테스트(데이터베이스가 중지된 경우 재시작 시 손실된 데이터가 자동으로 보충됩니까)
217 mysql 서비스 중지, 218에서 실행
insert into testtable values (1);
启动217的mysql服务,使用show确认217的数据库节点已经连接上了,执行如下语句
select * from testtable;
如果发现有数据,则表示功能完备
6、关闭Cluster:(需要严格按照次序执行)
关闭数据节点:# mysqld stop (SQL节点可以用mysqladmin shutdown或别的方式关闭。)
在管理节点上执行:# ndb_mgm -e shutdown
将安全的关闭管理节点和数据节点。
关闭后使用如下的进程检测命令查看一下是否退出来了:
# pgrep mysqld # ps aux | grep nbdb
如果没有,找到对应的pid进行kill 操作即可
kill -9 进程号
7、再次启动Cluster方案:
启动整个cluster的次序,注意,一些语句已经减去了初始化的内容:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini ndbd mysqld_safe --defaults-file=/etc/my.cnf --explicit_defaults_for_timestamp &
备注:
1、mysql安装后,默认会自动启动的,每次启动cluster的时候,都需要先把mysql的服务关闭,太麻烦,于是可以执行如下命令(我出手有点狠):
chkconfig --level 123456 mysql off
2、防火墙问题,偷个懒,我懒得去一一开放端口,干脆把防火墙直接关了
chkconfig --level 123456 mysql off
위 내용은 MySQL-Cluster 클러스터 구성에 대한 자세한 코드 설명(RPM 설치 패키지 기준)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!