mysql1.7(mysql优化,mysql-mmm软件介绍,mysql高可用集群。)

一,mysql优化。

1. 1mysql服务工作过程

mysql服务由8个功能组件组成:

1,管理工具  把软件包安装后,提供的命令

#mv /etc/my.cnf   /etc/my.cnf.bak   //要先把配置文件改名才去执行下面命令

#mysql_install_db  --datadir=/var/lib/mysql   --user=mysql

以这种方式初始重新安装数据库,后密码随即生成。如果要登陆

先把配置文件名称改回来,设置跳过密码验证。去改密码登陆。

2,连接池:检查服务器是否有空闲线程和系统资源分配给线程使用,

处理当前客户端的连接请求。

3,sql接口:把客户连接后执行的sql命令传递给mysql进程处理

4,分析器:检查sql命令是否有语法错误和检查是否有对应的SQL操作权限

排查错误命令:perror  编号 会弹出对应编号的错误信息。

5,优化器:自动优化执行的SQL命令,以节省系统资源的方式去执行。//mysql自带的一个程序

6,查询缓存:用来存储曾经查找过的sql结果。查询缓存的空间是从系统的物理内存划分出来的。

7,存储引擎(innodb/myisam):数据库服务软件自带程序,不同存储有不同的功能和数据存储方式。

8,文件系统:(存储介质/硬盘)

 

1.2mysql服务处理查询请求的工作过程

接收到查询请求后,先查找查询缓存,若缓存里有查找的数据,直接从查询缓存提取数据,

返回给客户端.反之从表里查找数据给客户端

(从表里找到数据后,先保存到查询缓存里在返回给客户端)

 

当数据库服务器处理客户端的请求慢的时候,可能是由于什么原因造成的?

1.3如何优化mysql数据库服?

1,网络带宽窄    使用网络测速软件  测试网络流量

2,服务器硬件的配置低  :查看服务硬件资源的使用情况 cpu  物理内存

动态查看:top       load  average:0.03,0.09,0.13 数值越小越稳定

free  sar  命令的使用。

3,提供数据库服务软件的版本低 查看服务运行时运行参数

show variables;

show   global  variables;

show   global  variables like "%query%";

临时修改变量 mysql-> set  [global]  变量名=值;

永久设置:vim  /etc/my.cnf

[mysqld]

       变量名=值。

常用的变量有哪些?

并发连接数量

mysql> show variables like "%max_connections%";

mysql> set global max_connections=200; 更改全局变量

mysql>show global  status  like "%Max_used_connections%";

如何合理设置公式:

曾经有过的最大数量/最大并发连接数=0.85

Max_used_connections/max_connections=0.85

 

连接超时时间

建立连接时三次握手的超时时间   默认是10S

建立连接等待执行新的sql命令的超时时间

mysql>show variables like "%timeout%";

建立连接等待执行新的sql命令的超时时间wait_timeout=28800

所有程序打开表的数量table_open_cache=2000

可以重复使用的线程的数量:thread_cache_size=9

加快查询速度的相关参数设置:read_buffer_size

                                                sort_buffer_size

key_buffer_size 添加索引空间

read_md_buffer_size  给排序查询或分组查询分配缓存空间.

与查询缓存空间相关的参数:

mysql->show  variables like "query_cache%";

查询缓存空间的统计信息:

mysql->show global status like "qcache%";

 

 

程序访问数据库执行的sql查询命令太复杂导致处理速度慢。

在数据库服务器上启用慢查询日志,记录超过指定时间(默认10s)显示查询结果的SQL命令。

 

启用慢查询日志

查看日志内容

统计日志的记录信息

Mysql数据库日志类型:

错误日志  binlog日志  慢查询日志  查询日志 

log-error=/var/log/mysql.log  

 

启用慢查询日志:vim /etc/my.cnf

[mysqld]

slow-query-log //添加 此行启动慢查询日志

默认路径在:/var/log/mysql/mysql51-slow.log

统计日志的记录信息

#mysqldumpslow  /var/lib/mysql/主机名-slow.log > /tmp/sql.txt

 

 

查询日志:  记录在数据库上执行的所有sql查询命令日志    

vim  /etc/my.cnf

[mysqld]

general-log   //添加行

/var/lib/mysql/mysql51-slow.log  //查询日志路径

 

数据存储网络架构有数据传输的瓶颈

 

 

二,部署mysql高可用集群

(mysql-mmm软件  和 mysql主从同步结构)

  结构:    主53                       主54(开启级联复制功能)

                                               |

                             ———————————

                                     51从             52从

主从配置思路:1.1,配置主从同步结构

                         1.2,配置主主结构

                         1.3配置一主多从结构

                         1.4验证以上配置

mysql-mmm软件配置:

1,装包  

2,修改文件  

3,启动服务  

4,测试配置

+++++++++++++++++++++++++++++++++++++++++++++++++++

一,主从同步配置结构:

主主结构配置:

1,vim  /etc/my.cnf

[mysqld]

server_id=53

log-bin=/binlogdir/master53

binlog_format="mixed"

2,systemctl restart  mysqld

3,授权用户:grant replication slave on *.*  to slaveuser@'%'   identified by "123456";

4,然后change master to ...定义配置。;start slave.

5,主机54上也对应操作,参数对应进行更改。且开启级联复制功能。

 

一主多从配置:

配置主机51~52

1,vim  /etc/my.cnf

server_id=51     //52

2,重起服务 systemctl restart mysqld

3,注意防火墙和selinux要关闭 

4,mysql->change master to master_host=''....指向主库配置

以上操作同时在两台同时配置。

 

测试:在主机53添加访问数据的授权用户,使用增改删会同步到51,52,54三台主机。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

mysql-mmm软件安装配置:

(1)装包  (在所有主机上51~55安装 perl-*  gcc   gcc-c++ )

获取资源包:mysql-mmm.zip

把zip包拷到51~55主机对应目录下进行解包:unzip  mysql-mmm.zip

在对应目录下写个脚本:

#! /bin/bash

unzip mysql-mmm.zip
cd mysql-mmm/
tar xf mysql-mmm-2.2.1.tar.gz &>/dev/null
cd mysql-mmm-2.2.1/
make install &>/dev/null
ls /etc/mysql-mmm/

(2)1,修改所有数据库服务器51-54主机上的配置文件mmm_agent.conf

   vim  mmm_agent.conf

   include mmm_common.conf

    this my51(自定义名称)

 

   2,修改管理主机55上的配置文件mmm_mon.conf  

1 include mmm_common.conf
2
3 <monitor>
4 ip 192.168.4.55   //定义本机ip
5 pid_path /var/run/mmm_mond.pid
6 bin_path /usr/lib/mysql-mmm/
7 status_path /var/lib/misc/mmm_mond.status
8 ping_ips 192.168.4.51, 192.168.4.52, 192.168.4.53, 192.168.4.54  //定义监控的4台主机ip
9 </monitor>
10
11 <host default>
12 monitor_user monitor       //监控用户
13 monitor_password 123456   //监控用户的密码
14 </host>
15
16 debug 0    //是否显示启动过程0/1 

 

3,51-55修改公共配置文件mmm_common.conf

 

vim   /etc/mysql-mmm/mmm_common.conf

4 <host default>     //本地主机配置
5 cluster_interface eth0   
6
7 pid_path /var/run/mmm_agentd.pid
8 bin_path /usr/lib/mysql-mmm/
9
10 replication_user hcy      //定义主服务器的授权用户密码
11 replication_password 123456    
12
13 agent_user agent      //定义启动进程用户//密码
14 agent_password 123456
15 </host> 

 17 <host my53>
18 ip 192.168.4.53       //定义主库配置
19 mode master
20 peer my54
21 </host>
22
23 <host my54>      
24 ip 192.168.4.54
25 mode master
26 peer my53
27 </host>
28
29 <host my51>
30 ip 192.168.4.51
31 mode slave
32 </host>             //定义从库配置
33
34 <host my52>     //额外添加4行
35 ip 192.168.4.52
36 mode slave
37 </host>

39 <role writer>
40 hosts my53, my54    //定义主库名字
41 ips 192.168.4.250     //定义虚拟ip地址
42 mode exclusive
43 </role>

45 <role reader>       //定义浮动从库ip地址。
46 hosts my51, my52   
47 ips 192.168.4.251, 192.168.4.252
48 mode balanced
49 </role>    

:wq 

scp   mmm_common.conf 把编辑好的文件拷贝覆盖掉另外4台 /etc/mysql-mmm/目标文件

然后在53的主机实行用户授权:

mysql->grant  replication  client on *.* to monitor@'%' identified by '123456';

           grant replication client,process,super on *.* to agent@'%' identified by '123456';

(3)启动服务

  1,安装服务启动时依赖的软件(51~55)

  依赖包:Proc-Daemon-0.03.tar.gz, Algorithm-Diff-1.1902.tar.gz

  perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm

编写一个脚本:

#! /bin/bash
tar xf Algorithm-Diff-1.1902.tar.gz
cd Algorithm-Diff-1.1902/
perl Makefile.PL
make   && make install 
cd ..
tar xf Proc-Daemon-0.03.tar.gz
cd Proc-Daemon-0.03/
perl Makefile.PL
make  && make install 
cd ..
rpm -ivh perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm

在所有数据库主机(51~54)安装获取vip地址程序

 

#! /bin/bash
gunzip Net-ARP-1.0.8.tgz
tar xf Net-ARP-1.0.8.tar
cd Net-ARP-1.0.8/
perl Makefile.PL
make && make install

 

 

2,启动数据库服务器上的mmm_agentd服务(51~54)

/etc/init.d/mysql-mmm-agent  start  启动服务

/etc/init.d/mysql-mmm-agent  status  查看状态

netstat  -antpu | grep  :9989 查看端口 

服务日志文件:/var/log/mysql-mmm/mmm_agentd.log

 

3,启动管理主机上的mmm_monitor服务

/etc/init.d/mysql-mmm-monitor start  //启动管理主机服务

netstat -antpu | grep :9988   //管理端口

/var/log/mysql-mmm/mmm_mond.log   //日志文件

配置好后55主机上提供命令:mmm_agentd mmm_backup ...等等命令

输入:mmm_control  show 显示所有主机状态

默认配好后全部都是:AWAITING_RECOVERY等待恢复状态

需要管理员手动去恢复为在线状态:获取vip地址。

mmm_control    set_online    主机名  恢复在线状态 

mmm_control    set_offline    主机名  关闭在线状态

在数据库服务器上查看是否获取到vip地址

ip  addr  show  | grep   192.168.4

测试配置:mysql  -h192.168.4.250 -u用户名  -p密码

mysql  ->  select @@hostname; 查看所在数据库主机

stop  掉一台主数据库,再次连接还是可以正常执行.

排错思路:可以查看日志:/var/log/mysql-mmm/

                  依赖是否有装全,配置文件写错。

 

什么是集群?

使用一组主机提供相同的服务

什么是高可用集群?

始终保证有一台服务可提供给客户端访问

mysql-mmm软件介绍?

配置mysql高可用集群

 

posted @ 2018-04-03 19:04  virlix  阅读(388)  评论(0编辑  收藏  举报