一次MYSQL 服务器性能优化之旅

原创 2017年10月13日 16:28:57
1.主库性能预警,CPU LOADING 过高
    a.  读写分离:把读操作(查询类,不是写入/修改后即查询数据的)放到DB2节点中进行;  

2.日志文件、数据文件同放在一个磁盘中 /data ,没有分离 。暂时不处理,以后项目可考虑分开。

3.开启了 doublewrite ,在SSD,XFS 磁盘存储数据,可以关闭
mysql> show variables like '%doublewrite%';
    ERROR 2006 (HY000): MySQL server has gone away
    No connection. Trying to reconnect...
    Connection id:    39223899
    Current database: *** NONE ***

    +----------------------------------+----------------+
    | Variable_name                    | Value          |
    +----------------------------------+----------------+
    | innodb_doublewrite               | ON             |
    | innodb_parallel_doublewrite_path | xb_doublewrite |
    +----------------------------------+----------------+
    2 rows in set (0.01 sec)

    mysql> 



4.参数 table_open_cache 调整为 4096

    #配置文件中已设置成 4096 ,但数据库没设置 。此设置可以动态设置,不用重启MYSQL 实例。
        命令:  set global table_open_cache=4096;

    [root@db-1 ~]# cat /etc/my.cnf|grep table_open_cache
    table_open_cache = 4096

    mysql> show variables like '%table_open_cache%';
    +----------------------------+-------+
    | Variable_name              | Value |
    +----------------------------+-------+
    | table_open_cache           | 447   |
    | table_open_cache_instances | 16    |
    +----------------------------+-------+
    2 rows in set (0.00 sec)

    mysql> show global status like 'open%tables%';
    +---------------+----------+
    | Variable_name | Value    |
    +---------------+----------+
    | Open_tables   | 432      |
    | Opened_tables | 39578950 |
    +---------------+----------+
    Opened_tables数值非常大,说明cache太小,导致要频繁地open table


5.query_cache_size 查询缓存参数
    5.1配置文件:
        query_cache_size = 0

    5.2 MYSQL 
    mysql> SHOW STATUS LIKE 'Qcache%'; 
    ERROR 2006 (HY000): MySQL server has gone away
    No connection. Trying to reconnect...
    Connection id:    41556755
    Current database: *** NONE ***

    +-------------------------+-------+
    | Variable_name           | Value |
    +-------------------------+-------+
    | Qcache_free_blocks      | 0     |
    | Qcache_free_memory      | 0     |
    | Qcache_hits             | 0     |
    | Qcache_inserts          | 0     |
    | Qcache_lowmem_prunes    | 0     |
    | Qcache_not_cached       | 0     |
    | Qcache_queries_in_cache | 0     |
    | Qcache_total_blocks     | 0     |
    +-------------------------+-------+
    8 rows in set (0.00 sec)

    mysql> 
    mysql> SHOW VARIABLES LIKE 'have_query_cache';
    +------------------+-------+
    | Variable_name    | Value |
    +------------------+-------+
    | have_query_cache | YES   |
    +------------------+-------+
    1 row in set (0.00 sec)

    可配置为 query_cache_size = 128M



6.隔离级别: 现在配置为 可重复读

 transaction_isolation = REPEATABLE-READ

修改语句: set transaction isolation level read committed; //设置读提交级别 可动态修改。


7.从节点延迟问题:

现有参数:
    mysql> show variables like 'slave_parallel_workers';
    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | slave_parallel_workers | 0     |
    +------------------------+-------+
    1 row in set (0.00 sec)

    mysql> show variables like 'slave_parallel_type';
    +---------------------+----------+
    | Variable_name       | Value    |
    +---------------------+----------+
    | slave_parallel_type | DATABASE |
    +---------------------+----------+
    1 row in set (0.01 sec)


    为了减少延迟现象
        slave-parallel-type=LOGICAL_CLOCK    #基于组提交的并行复制方式 默认值为 DATABASE   
        slave-parallel-workers=4    #并行数量



8.两个从节点可以把一个设置成延迟1天(或12小时)用于做数据备份使用。
    登陆到Slave数据库服务器  ,设置延迟12小时(12*3600)
    mysql>stop slave; 
    mysql> CHANGE MASTER TO MASTER_DELAY = 43200;
    mysql>start slave; 
    mysql>show slave status\G
    查看SQL_Delay的值为600,表示设置成功。     
版权声明:本文为博主原创文章,未经博主允许不得转载。

一次线程池有关的性能调优之旅

最近在做的项目,在调试时打开了top,发现CPU一直是90%以上的,这让我们感觉奇怪。一般来说写得好的程序,CPU不应该满负载运行。大家决定查找原因。...

一个Web报表项目的性能分析和优化实践(二):MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例

MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例

MySQL技术之旅-白话点性能上的事

MySQL5.5是一个革命性的版本,其有许多特性使得MySQL这个以前被认为弱小的数据库变得强大起来,下面白话一些MySQL在5.5的变化,内容来自阅读书籍整理,绝非原创。 **innodb_fi...

一次Sql语句的优化实战之旅

SQL优化

Android 之旅:Google 发布 Android 性能优化典范

2015年伊始,Google发布了关于Android性能优化典范的专题, 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有...

Flex之旅--Flex性能优化

以下内容摘自网络,以后遇到新内容会添加进去。 编码优化: 1 创建新数组时避免使用它的构造函数。     这样做:var a = [];     而不要这样做:var a = new Arra...
  • sjepy
  • sjepy
  • 2012年06月07日 09:21
  • 833

我的Java开发学习之旅------>心得总结:Java性能优化技巧集锦

一、通用篇   “通用篇”讨论的问题适合于大多数Java应用。   1.1 不用new关键词创建类的实例   用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用。但如果一个对象实现...

mysql中schema与数据类型优化以及服务器性能检测

1.数据类型优化 应该遵循的原则: -更小的通常更好 -简单就好:mysql内建的类型而不是字符串来存储时间。整数比字符串操作代价低 -尽量避免null: -使用枚举代替字符串类型 -da...

mysql服务性能优化—my.cnf_my.ini配置说明详解(服务器16G内存)

此配置是生产线上使用的配置,在培训的时候,他给的,我在这里,对各参数添加了中文说明 这配置已经优化的不错了,如果你的mysql没有什么特殊情况的话,可以直接使用该配置参数 MYSQL服务器my.c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一次MYSQL 服务器性能优化之旅
举报原因:
原因补充:

(最多只允许输入30个字)