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

  • 相关阅读:
    How to alter department in PMS system
    Can't create new folder in windows7
    calculate fraction by oracle
    Long Wei information technology development Limited by Share Ltd interview summary.
    ORACLE BACKUP AND RECOVERY
    DESCRIBE:When you mouse click right-side is open an application and click left-side is attribution.
    ORACLE_TO_CHAR Function
    电脑BOIS设置
    JSP点击表头排序
    jsp+js实现可排序表格
  • 原文地址:https://www.cnblogs.com/yunsshcy/p/8710446.html
Copyright © 2011-2022 走看看