首页 > 代码库 > Mysql集群

Mysql集群

一、Mysql集群

需要MySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpm-bundle.tar

不需要安装或启动 MySQL-server包

Mysql 代理的缺点:1,单点故障 2 数据备份

MySQL-Cluster 提供三种进程 

管理进程, 管理进程运行的管理主机上

ndbd进程 管理进程运行的管理主机上

sql 进程 (集群软件包里提供的数据库服务,运行sql节点上)


集群/群集 :用一组服务器提供相同的服务  分为:

HA 高可用集群 

LB  负载均衡集群

用来存储数据的软件是集群软件,不再是mysql-server-5.6

1、集群作用:

解决单点故障,实现数据自动备份;维护困难,软件开发不完善,不稳定

2、mysql集群中服务器的角色:

客户端           client   (访问数据*-)只有有连接数据服务的工具即可

管理集群的主机 mgm (管理集群中的所有主机,集群服务时(启动管理进程事)加载自己的主配置文件,设置集群中所有主机的角色)

sql结点       sql    (用户访问数据的接口和执行用户输入SQL语句,存储表结构,不存数据)>=2

数据结点   (ndbd节点)  用来存储数据,存储表中的记录>=2

 

3、公共配置:ping 通

service iptables stop;  setenforce 0;

service mysqld stop;   chkconfig mysqld off

在集群中的主机上添加mysql用户

安装集群软件 tar  -zxf mysql-cluster*  -C /usr/local

               mv  /usr/local/mysql-clu*  /usr/local/cluster  

cd /usr/local/cluster

                  bin    启动脚本

                  include 头文件

lib     库文件

scripts  脚本

更改cluster的用户和组chown  -R  mysql:mysql  /usr/local/cluster

集群中的主机不再安装mysql-server,使用集群软件mysql-cluster存储数据,此软件可提供3种不同进程

配置流程: 配置管理节点 192.168.1.1

管理集群中所有主机,启动管理进程时加载自己的主配置文件

4、配置管理主机mgm:

管理集群中的所有主机,启动管理进程时,调用配置文件/etc/config.ini(文件必须为config.ini,位置可以自己指定),知道集群中主机的角色(配置文件要自己编辑,不允许有空行)

拓扑                      mgm 192.168.1.1

mysq1 192.168.1.2 mysq1 192.168.1.3

ndbd1 192.168.1.4         ndbd1 192.168.1.5


vim /etc/config.ini                                                        

[ndbd default]   //定义数据结点的公共配置                                  

NoOfReplicas=2  //指定一份数据备份几份(数据结点数或能被数据节点数整除) 

DataMemory=80M  //数据缓存大小(保存用户执行过的SQL语句和查询结果,通常是物理内存的1/3) 分配多少内存做数据缓存                                                           

IndexMemory=18M //索引缓存大小                                        

[ndb_mgmd]  //指定管理主机                                              

nodeid=1   //指定编号,值不允许重复(范围1-50)                                          

hostname=192.168.1.1  //管理节点的IP                                     

datadir=/var/log/mysql-cluster  //路径在mgm上存在,该目录用于存放集群中主机的信息 要自己创建                                                          

[ndbd]  //指定数据结点 1                                                 

nodeid=10                                                                      

hostname=192.168.1.10  //数据结点的IP                                                   

Datadir=/var/lib/mysql-cluseter/data  //路径在数据结点主机上要存在,该目录用于存放表中的记录                                                             

[ndbd]  //指定数据结点2                                                    

nodeid=20                                                                    

hostname=192.168.1.20                                                    

Datadir= /var/lib/mysql-cluseter/data                                          

[mysqld]     //指定sql结点1                                                               

nodeid=30                                                                   

hostname=192.168.1.30    //sql结点的IP                                                   

[mysqld]         //指定sql结点2                                                           

nodeid=40                                                                     

hostname=192.168.1.40                                                                                                                               

     5、配置数据结点ndb:

1)创建存储表中的记录的目录

        mkdir /var/lib/mysql-cluster/data                                              

        2)编辑配置文件/etc/my.cnf(与mysqld的主配置文件同名)

mv /etc/my.cnf /etc/my.cnf.bak //若在此之前安装过mysql-server,则此文件存在,将其移走  

vim /etc/my.cnf                                                                         

[mysqld]  //设置数据结点                                                                

datadir= /var/lib/mysql-cluseter/data //将记录存储在本机的哪个目录下,与管理主机上的设置一致                                                                                  

ndb-connectstring=192.168.1.1   //管理节点主机的IP                                     

ndbcluster   //使用ndb集群                                                            

[mysql_cluster]  //设置管理集群的主机                                                   

ndb-connectstring=192.168.1.1   //管理节点主机的IP 哪台主机管理集群                              

     6、配置SQL结点sql:

        1)编辑配置文件/etc/my.cnf

mv /etc/my.cnf /etc/my.cnf.bak                                              

        vim /etc/my.cnf                                                           

[mysqld]     //设置sql结点                                               

ndbcluster   //使用ndb集群:

default-storage-engine=ndbcluster //设置默认引擎                                         

 [mysql_cluster]  //设置管理集群的主机                                      

ndb-connectstring=192.168.1.1     //管理主机的IP                            

     7、启动(是什么样的角色就启动什么服务,注意启动顺序):

1)启动管理进程

启动顺序不可变

          管理进程监听的端口号为:1186                                                 

        ndb_mgmd   -f  /etc/config.ini        //启动管理进程脚本                    

pgrep  mgmd          //查看进程是否开启                                                  

ndb_mgm            //执行登录管理界面的脚本                                            

ndb_mgm>show        //查看集群信息                                                      

pkill -9 mgmd           //结束管理进程                                                      

2)启动数据结点进程

                                                   

ndbd                 //启动数据结点进程                                                  

pgrep ndbd                                                              

pkill -9 ndbd           

谁的后面有*,存储数据时先往它上面存                                                   

3)启动sql结点的数据库服务进程

service  mysql   start

4)sql结点授权客户端用户

5)数据库上建表时,一定要使用ndbcluster存储引擎 ;表结构存储在sql结点上,表中的记录存放在数据结点的指定目录中。  

6)集群中的所有主机正常工作后,可关闭管理主机

8验证集群:

在sql 结点的数据库上给客户机授权,然后客户机验证


二、Mysql性能调优

Mysql 软调优

1设置服务运行时的参数

2优化执行的sql语句


线程是进程的最小单位

1、目的:加快服务器的响应速度

     2、Mysql的查询过程

        1)客户端向服务器发送连接请求

        2)服务器端(连接池)开辟线程响应用户请求

        3)用户发起sql语句查询数据库select * from db.a;

        4)查询缓存:记录用户的sql执行语句和查询结果

     3、加快Mysql服务器的运行速度

1)替换有问题的硬件—最有效的方法

CPU 内存 硬盘

2)对Mysql进程的设置进行调优

A、并发连接数

 mysql> show variables like ‘max_connections’;  //默认进程数,即最多并发连接数     

mysql> show global status like ‘max_used_connections’;    //当前已连接数         

mysql> set global max_connections=200;  //修改参数值,当前生效               

[root@localhost ~]vim /etc/my.cnf    //在配置文件/etc/my.cnf中设置永久生效     

[mysqld]                                                                 

max_connections=200;                                                     

当前已有的连接数/默认进程数=0.85

max_used_connections/max_connections *100%=85% 较为合适

B、连接数据库超时时间设定

show variables like ‘connect_timeout’;  // 客户端和服务器连接的超时时间,单位为秒,默认10s      

show variables like ‘wait_timeout’;    //客户端与服务器连接后,客户端在28800S没有执行任何操作,服务器端会自动断开连接,在关闭它之前,在一个连接上等待行动的秒数,默认28800s                                                   

mysql> set global connect_timeout=20;   //全局修改前面加global 修改                                      

mysql> set wait_timeout=7200;      //不在全局修改,用这条命令                                       

并发数多时,可设置connect_timeout短一些;并发数少时,可设置其长一些

C、查询缓存设置,索引缓冲区

8bit=1字节

1024字节=1K

1024k=1M

1024M=1G

1024G=1T


Mysql集群