zoukankan      html  css  js  c++  java
  • 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高可用集群

  • 相关阅读:
    使用jQuery的validation后,无法引发asp.net按钮的事件处理程序
    近期一些超值文章及工具收集
    修复MOSS2007备份还原后搜索服务出现的问题(续)
    给ASP.net程序配置代理服务器
    vue 2.0 路由切换以及组件缓存源代码重点难点分析
    [模板]大整数相加、相乘
    PKU 3468 A Simple Problem with Integers
    USACO sec1.4 Packing Rectangles
    HDOJ 2795 Billboard
    [贪心] COJ 1236 删数游戏
  • 原文地址:https://www.cnblogs.com/yunsshcy/p/8710446.html
Copyright © 2011-2022 走看看