一,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高可用集群

转载于:https://www.cnblogs.com/yunsshcy/p/8710446.html

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

  1. 双机软件,Replistor,双机热备份软件,双机容错,高可用集群软件,磁盘阵列

    Replistor概念     当今的商业环境,将关键的数据和计算机应用置于危险之中是不能想象的.您需要一种什么样的明智的方法才能确保您的关键信息不被任何大的或者小的灾难所破坏呢?实际上,迟早您的关键 ...

  2. mycat mysql好可用架构_想要学会MyCat高可用集群搭建,但是这些知识点却还玩不明白?...

    一.集群架构 1.MyCat实现读写分离架构 在我前面的文章, 我已经讲解过了通过MyCat来实现MySQL的读写分离, 从而完成MySQL集群的负载均衡 , 如下面的结构图: 但是以上架构存在问题 ...

  3. 企业中MySQL高可用集群架构三部曲之MM+keepalived

    各位老铁们,老张与大家又见面了.看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可.我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战经验分享出来,我们 ...

  4. PXC高可用集群(MySQL)

    1. PXC集群概述 1.1. PXC介绍 Percona XtraDB Cluster(简称PXC) 是基于Galera的MySQL高可用集群解决方案 Galera Cluster是Codershi ...

  5. 运维企业专题(11)RHCS高可用集群下MySql数据库与共享磁盘(单点写入、多点写入)的设置

    实验环境 主机名 IP 服务 server1 172.25.6.1 ricci,luci, iscsi,mysql-server server2 172.25.6.2 ricci,iscsi,mysq ...

  6. Mysql数据库(十一)——MHA高可用集群部署及故障切换

    Mysql数据库(十一)--MHA高可用集群部署及故障切换 一.MHA概述 二.MHA的组成 三.MHA的特点 四.案例环境 1.服务器配置 2.思路 3.关闭防火墙和安全机制,并进行主从配置 4.配 ...

  7. 双vip的MySQL高可用集群

    目录 一.mysql集群的搭建 IP地址规划: 使用ansible给从服务器安装mysql 1.使用master与所有从服务器建立SSH免密通道,然后添加到mysqld组到hosts文件里面 2.使用 ...

  8. mysql高可用方案_MySQL高可用集群方案

    一.Mysql高可用解决方案 方案一:共享存储 一般共享存储采用比较多的是 SAN/NAS 方案. 方案二:操作系统实时数据块复制 这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+ ...

  9. MYSQL高可用集群架构——MHA架构

    MHA高可用集群 文章目录 一.MHA 简介: 二.部署 MHA: 第一步:三台主从服务器安装 mysql 第二步:修改 mysql 的主配置文件:/etc/my.cnf ,注意三台服务器的 serv ...

最新文章

  1. docker 安装oracle_阿里云使用Docker搭建Hadoop集群
  2. Centos7部署JAVA环境
  3. ElasticSearch什么是文档?索引一个文档
  4. python做社会网络分析_社交网络分析(Social Network Analysis in Python)①
  5. ASP.NET Page执行顺序如:OnPreInit()、OnInit()
  6. 每周论文清单:对话系统综述,全新中文分词框架,视频生成,文字识别
  7. 辨析矩阵内积(hadamard、kronecker)
  8. Python 如何利用函数修改函数外list?
  9. python常用输入输出の方法
  10. 算法5-7:区间检索
  11. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_19-页面静态化-模板管理-模板存储...
  12. Windows远程桌面单/多用户同时登录
  13. SAS入门之(四)改变数据类型
  14. 使用SpringAOP拦截Feign请求动态添加参数
  15. php货币2019年12月31日汇率,[外汇]2019年12月31日人民币汇率中间价新公告 今日美元兑人民币行情查询 - 南方财富网...
  16. RSF-Center,集群模式下-协调数据结构
  17. 山寨机需要规范,中国需要山寨机
  18. 2022 年七大前沿科技:每一项都能改变世界
  19. 搭建红外遥控arm-hadoop集群过程
  20. 有什么文字转语音软件?这几个软件你不能不知道

热门文章

  1. 利用openCV实现中值滤波自定义滤波窗口尺寸的功能(类似halcon中的median_rect函数功能)
  2. [Work Summary] 远程FTP下载文件到本地目录
  3. python实现批量的IP地址,或地址段的排序并按照CIDR格式最小化聚合。
  4. Visual Studio创建C语言编程环境
  5. 泛微E9IDEA开发环境配置非maven篇
  6. 国内身份证号码的验证
  7. C语言内部函数与外部函数
  8. 深度学习Deep Learning 中文版下载
  9. 颗粒离散元软件(PFC)中Python第三方cartopy包配置
  10. 智媒ai文章一键伪原创插件在线生成