集群:使用一组服务器提供相同的服务 LB :负载均衡集群 HA :高可靠集群 mysql集群中服务器的角色? 1、数据节点 ndbd 用来储藏数据(表的记录) 2、sql节点 用户访问数据的接口 执行用户输入的sql语句 3、管理节点 mgmd 管理集群中的所有主机 在启动管理进程时加载,自己的主配置文件,定义集群中各个主机的角色 4、客户端:访问数据 只要有连接数据库服务的工具就可以了 //(mysql-cluster-client) mysql-clusert 提供3种进程 管理进程 管理进程运行的管理主机上 ndbd进程 运行在数据节点上。 sql进程(集群软件包里提供的数据库服务,运行sql节点上)
一、安装提供集群服务的软件包
tar -xvf MySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpbundle.tar rpm -ivh MySQL-Cluster-*.rpm
二、配置管理节点 192.168.1.1
管理集群中的所有主机,启动管理进程时加载自己的主配置文件/etc/config.ini (设置集群中个主机的角色,各个主机角色在运行时参数的设置)
[ndbd default] // 数据节点公共配置 [ndb_mgmd] //设置管理主机 [ndbd] // 指定数据节点主机 [mysqld] // 指定sql节点 mkdir /var/log/mysql-cluster //自己创建这个目录
vim /etc/config.ini //自己编辑这个文件 [ndbd default] NoOfReplicas=2 //数据节点主机个数 DataMemory=80M IndexMemory=18M [ndb_mgmd] //管理节点 nodeid=1 hostname=192.168.1.1 datadir=/var/log/mysql-cluster [ndbd] //数据节点 nodeid=2 hostname=192.168.1.10 datadir=/var/log/mysql-cluster/data [ndbd] //数据节点 nodeid=20 hostname=192.168.1.20 datadir=/var/log/mysql-cluster/data [mysqld] //mysql节点 nodeid=10 hostname=192.168.1.30 [mysqld] nodeid=30 hostname=192.168.1.40 :wq
三、配置数据节点 192.168.1.10 192.168.1.20
数据节点用来存储数据,运行数据进程
ping 192.168.1.1 mkdir -p /var/log/mysql-cluster/data //自己创建这个目录 vim /etc/my.cnf //自己编辑这个文件 [mysqld] datadir=/var/log/mysql-cluster/data ndb-connectstring=192.168.1.1 ndbcluster [mysql_cluster] ndb-connectstring=192.168.1.1 另一个数据节点配置和这个一样 只需 scp /etc/my.cnf
四、配置sql节点 192.168.1.30 192.168.1.40
供用户访问和执行sql语句,运行mysql数据服务。
vim /etc/my.cnf [mysqld] ndbcluster default-storage-engine=ndbcluster [mysql_cluster] ndb-connectstring=192.168.1.1 :wq 另一个mysql节点配置和这个一样 只需 scp /etc/my.cnf root@192.168.1.40:/etc/my.cnf
五、启动集群服务
1 启动管理节点
ndb_mgmd -f /etc/config.ini netstat -untlap | grep :1186 ps aux | grep ndb_mgmd pkill -9 ndb_mgmd //结束进程需要这条口令 [root@localhost ~]# ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show ndb_mgm>exit
2 启动数据节点
[root@localhost ~]#ndbd pgrep ndbd pkill -9 ndbd //结束进程需要这条口令 * ndb 节点进程启动不了, 在管理节点和数据节点执行 iptables -F service iptables save 然后再在数据节点上执行ndbd 3 启动sql节点 service mysql restart
六、验证集群
解决单点故障 当有一台数据节点down机不会影响服务 当有一台MYSQLdown机也不会影响服务 启动mysql时经常出现缺少xxx.pid这个问题,只需要把/var/lib/mysql/下有关日志文件删除就行, 然 后重新启动服务