最近在 学习MYSQL集群的配置,首先要了解什么集群,为什么要使用集群,以及安装集群的软件是什么和集群中的进程有哪些。
1.什么是集群?
集群是一组服务器提供相同的服务。
2.为什么要使用集群?
解决单点故障和数据的备份问题。
操作系统以及mysql配置文件的说明。
Linux系统:redhat6.5
安装集群软件: MySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpm-bundle.tar
服务器的角色:
实验要求:5台服务器,分别ip地址192.168.1.10做管理节点,192.168.1.20/192.168.1.30做数据节点使数据能够同时备份当其中任意一台服务器宕机后,对数据库进行操作,当宕机的服务器恢复后自动同步数据,192.168.1.40/192.168.1.50做sql节点当任意一台mysql节点故障后,都可以登陆数据库。
192.168.1.10(mgmd)
192.168.1.20(ndbd)
192.168.1.30 (ndbd)
192.168.1.40 (sql)
192.168.1.50 (sql)
一。在所有服务器上安装提供集群服务的软件 mysql-cluster (.rpm 源码)
最简单是的PRM包,下面采用二进制包的方法进行安装
1.解压软件包。
[[email protected] opt]# tar -xvf MySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpm-bundle.tar
2.安装软件包,tar解压出来的是rpm包,直接安装就可以。
[[email protected] opt]# rpm -Uvh MySQL-Cluster-*.rpm
3.查看软件包是否已安装。
[[email protected] opt]# rpm -qa | grep -i mysql
MySQL-Cluster-shared-compat-gpl-7.3.3-1.el6.x86_64
MySQL-Cluster-devel-gpl-7.3.3-1.el6.x86_64
MySQL-Cluster-embedded-gpl-7.3.3-1.el6.x86_64
perl-DBD-MySQL-4.013-3.el6.x86_64
MySQL-Cluster-test-gpl-7.3.3-1.el6.x86_64
MySQL-Cluster-server-gpl-7.3.3-1.el6.x86_64
MySQL-Cluster-client-gpl-7.3.3-1.el6.x86_64
MySQL-Cluster-shared-gpl-7.3.3-1.el6.x86_64
4.在192.168.1.10上配置管理节点。
管理节点运行的是管理进程,运行时加载自己的主配置文件,主配置文件需要自己写。
例如:配置文件为config.ini 配置文件的内容包括:
1 数据节点的公共配置[ndbd default]
2 指定管理节点[ndb_mgmd]
3 指定数据节点 [ndbd]
4 指定sql节点 [mysqld]
[[email protected] ~]# vim /etc/config.ini
[ndbd default]
NoOfReplicas=2 (表示数据节点的份数,有几个数据节点就写几)
DataMemory=80M (表示数据缓存的大小)
IndexMemory=18M (表示索引缓存的大小)
[ndb_mgmd]
nodeid=1 ( 用来设置当前主机在集群中的编号)
hostname=192.168.1.10 (指定管理节点的IP地址)
datadir=/var/log/mysql-cluster (指定把运行中的信息放在/var/log/mysql-cluster,这个文件夹 必须在系统中存在,如果没有创建该文件夹。)
[ndbd]
nodeid=2 (数据节点的编号)
hostname=192.168.1.20 (数据节点的IP地址)
datadir=/var/log/mysql-cluster/data (存储数据的位置)
[ndbd]
nodeid=3
hostname=192.168.1.30
datadir=/var/log/mysql-cluster/data
[mysqld]
nodeid=4
hostname=192.168.1.40
[mysqld]
nodeid=5
hostname=192.168.1.50
在192.168.1.10创建/var/log/mysql-cluster文件夹
[[email protected] ~]# mkdir -p /var/log/mysql-cluster/
5.在192.168.1.20/192.168.1.30上配置数据节点
在192.168.1.20和192.168.1.30上 分别创建/var/log/mysql-cluster文件夹用来存储数据的位置
[[email protected] ~]# mkdir -p /var/log/mysql-cluster/
创建主配置文件。
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/log/mysql-cluster/data (指定数据库目录)
ndb-connectstring=192.168.1.10 (指定连接管理集群的服务器IP)
ndbcluster (表的存储引擎必须是ndbcluster)
[mysql_cluster] ( 指定管理集群的机器)
ndb-connectstring=192.168.1.10(指定谁来管理集群的服务器IP)
6.在192.168.1.40/192.168.1.50上配置sql节点
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
ndbcluster
default-storage-engine=ndbcluster (指定默认的存储引擎)
ndb-connectstring=192.168.1.10 (指定连接管理集群的服务器IP)
[mysql_cluster]
ndb-connectstring=192.168.1.10 (指定谁来管理集群的服务器IP)
7.启动不同角色服务对应进程(有启动顺序,按照以下顺序进行启动)。
1 启动管理进程在192.168.1.10上。
[[email protected] ~]# ndb_mgmd -f /etc/config/init 启动mysql cluster服务
MySQL Cluster Management Server mysql-5.6.14 ndb-7.3.3
[[email protected] ~]# netstat -anuptl | grep :1186 查看集群端口是否开启
tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 4341/ndb_mgmd
tcp 0 0 127.0.0.1:38177 127.0.0.1:1186 ESTABLISHED 4341/ndb_mgmd
tcp 0 0 127.0.0.1:1186 127.0.0.1:38177 ESTABLISHED 4341/ndb_mgmd
tcp 0 0 192.168.1.10:1186 192.168.1.50:43075 ESTABLISHED 4341/ndb_mgmd
tcp 0 0 192.168.1.10:1186 192.168.1.40:37459 ESTABLISHED 4341/ndb_mgmd
[[email protected] ~]# ndb_mgm 进入界面命令
-- NDB Cluster -- Management Client --
ndb_mgm> show 查看信息命令
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.1.20)
id=3 (not connected, accepting connect from 192.168.1.30)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.10 (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.1.40)
id=5 (not connected, accepting connect from 192.168.1.50)
2 启动192.168.1.20/192.168.1.30上的数据进程
[[email protected] ~]# ndbd 在192.168.1.20启动数据进程的命令
2015-07-21 15:49:24 [ndbd] INFO -- Angel connected to ‘192.168.1.10:1186‘
2015-07-21 15:49:24 [ndbd] INFO -- Angel allocated nodeid: 2 3
[[email protected] ~]# ndbd 在192.168.1.30启动数据进程的命令
2015-07-21 10:16:16 [ndbd] INFO -- Angel connected to ‘192.168.1.10:1186‘
2015-07-21 10:16:16 [ndbd] INFO -- Angel allocated nodeid: 3 service mysql start
3.启动完数据进程后在管理节点192.168.1.10上查看数据进程是否已经启动。
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.20 (mysql-5.6.14 ndb-7.3.3, starting, Nodegroup: 0, *)
id=3 @192.168.1.30 (mysql-5.6.14 ndb-7.3.3, starting, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.10 (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.1.40)
id=5 (not connected, accepting connect from 192.168.1.50)
ndb_mgm> Node 2: Started (version 7.3.3)
Node 3: Started (version 7.3.3)
4.在192.168.1.40/192.168.1.50启动mysql数据库服务。
[[email protected] ~]# service mysql start
Starting MySQL SUCCESS!
5.启动完mysql数据库服务后在管理节点192.168.1.10上查看mysql进程是否已经启动。
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.20 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)
id=3 @192.168.1.30 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.10 (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)] 2 node(s)
id=4 @192.168.1.40 (mysql-5.6.14 ndb-7.3.3)
id=5 @192.168.1.50 (mysql-5.6.14 ndb-7.3.3)
8.客户端测试
1.访问节点的单点故障。
在mysql 数据库服务上建表建库,进行查看。
登陆mysql服务器192.168.1.40/192.168.1.50
[[email protected]~]# cat /root/.mysql_secret
# The random password set for the root user at Mon Jul 6 04:54:27 2015 (local time): umdVqWxz
[[email protected] ~]# mysql -hlocalhost -uroot -pumdVqWxz
mysql>set password for [email protected]=password("123")
mysql>quit
[[email protected] ~]# mysql -hlocalhost -uroot -p123
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.14-ndb-7.3.3-cluster-gpl MySQL Cluster Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved .
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input stateme nt.
查看存储引擎默认是不是dbcluster
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| ndbcluster | DEFAULT | Clustered, fault-tolerant tables | YES | NO | NO |
关闭192.168.1.50上的 mysql服务
[[email protected] ~]# service mysql stop
查看192.168.1.10上的信息
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.20 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)
id=3 @192.168.1.30 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.10 (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)] 2 node(s)
id=4 @192.168.1.40 (mysql-5.6.14 ndb-7.3.3)
id=5 (not connected, accepting connect from 192.168.1.50)
用192.168.1.40查看是否可以登陆数据库,如果可以登陆说明解决单点故障。
[[email protected] ~]# mysql -hlocalhost -uroot -p123
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.14-ndb-7.3.3-cluster-gpl MySQL Cluster Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql>
2.数据节点单点故障。(关闭1个数据服务,在表中进行插入,查看等一些操作,当另外一个恢复服务后,看能不能进行同步数据,如果可以说明就解决单点故障)
验证数据节点单点故障的步骤:
1.关闭192.168.1.20的数据节点的服务。
[[email protected] ~]# pkill -9 ndbd
2. 查看管理节点的192.168.1.20的状态。
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.1.20)
id=3 @192.168.1.30 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.10 (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)] 2 node(s)
id=4 @192.168.1.40 (mysql-5.6.14 ndb-7.3.3)
id=5 @192.168.1.50 (mysql-5.6.14 ndb-7.3.3)
3.在sql节点上查看数据库的信息,当192.168.1.20宕机后查看的信息是192.168.1.30的信息。
在数据库上对表进行select ,insert into 等信息后,当192.168.1.30恢复后能不能同步数据,如果可以说明可以解决单点故障。