一、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