
常用网名:门牙没了。8年MySQL运维管理与架构设计经验。前新浪爱彩DBA主管,曾下海做过技术培训,目前是新加坡SEA的资深DBA,负责整个东南亚地区MySQL集群的运维调优与运维平台的开发。
0.前言 Sysbench的作者于2016年将十年未变的sysbench升级至1.0版本,较老版本有了非常大的改变。在使用过程中由于官方文档不太完善,遂有此文。 1.新特性 官方文档中的升级说明: 更好的性能和扩展性,比0.4版本快了3.44倍,比0.5版本快了6.44倍。 改良了命令行语法 扩展了SQL API,例如每个线程可以有多个连接。 latency直方图功能 错误hooks 报告hooks 自定义和并行性命令 多种report类型,如JSON,CSV,SQL等 最大的升级应该还是OLTP测试中的lua脚本。 2.安装 官方文档中已列出各种安装方法,这里推荐一个更快速的,使用percona的源: 点击(此处)折叠或打开 root# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm root# yum install sysbench 安装完成之后可以在/usr/share/sysbench/中找到需要使用的lua脚本。 如果需要使用sysbench Test Suite,需要安装依赖包Cram: 点击(此处)折叠或打开 root# pip install cram 也可以编译安装: 点击(此处)折叠或打开 root# wget https://bitheap.org/cram/cram-0.6.tar.gz root# tar zxvf cram-0.6.tar.gz root# cd cram-0.6 root# make install 3.使用方法 sysbench --help中已经有了很详细的说明,参考此文件可以得到大部分信息。 命令语法:sysbench [options]... [testname] [command] options: 有普通选项和伪随机选项两类,大部分参数都不需要额外配置,使用默认即可。 log: 打开latency的直方图输出。 database: 默认即可 mysql: 填入需要压测的mysql的账号密码,请参阅下面的样例。 testname: 内建有fileio、CPU、memory、threads、mutex这几个测试,mysql相关测试请直接调用相关脚本。 command:有prepare、run、cleanup、help这4个,请参阅下面的样例。 另外,每个测试的lua脚本也有一个help提示,命令如下: 点击(此处)折叠或打开 root# sysbench oltp_read_write.lua help sysbench 1.0.8 (using bundled LuaJIT 2.1.0-beta2) oltp_read_write.lua options: --distinct_ranges=N Number of SELECT DISTINCT queries per transaction [1] --sum_ranges=N Number of SELECT SUM() queries per transaction [1] --skip_trx[=on|off] Don't start explicit transactions and execute all queries in the AUTOCOMMIT mode [off] --secondary[=on|off] Use a secondary index in place of the PRIMARY KEY [off] --create_secondary[=on|off] Create a secondary index in addition to the PRIMARY KEY [on] --index_updates=N Number of UPDATE index queries per transaction [1] --range_size=N Range size for range SELECT queries [100] --auto_inc[=on|off] Use AUTO_INCREMENT column as Primary Key (for MySQL), or its alternatives in other DBMS. When disabled, use client-generated IDs [on] --delete_inserts=N Number of DELETE/INSERT combination per transaction [1] --tables=N Number of tables [1] --mysql_storage_engine=STRING Storage engine, if MySQL is used [innodb] --non_index_updates=N Number of UPDATE non-index queries per transaction [1] --table_size=N Number of rows per table [10000] --pgsql_variant=STRING Use this PostgreSQL variant when running with the PostgreSQL driver. The only currently supported variant is 'redshift'. When enabled, create_secondary is automatically disabled, and delete_inserts is set to 0 --simple_ranges=N Number of simple range SELECT queries per transaction [1] --order_ranges=N Number of SELECT ORDER BY queries per transaction [1] --range_selects[=on|off] Enable/disable all range SELECT queries [on] --point_selects=N Number of point SELECT queries per transaction [10] 4.示例 点击(此处)折叠或打开 root# /usr/bin/sysbench --threads=64 --time=600 --histogram=on --mysql_host=10.65.200.43 --mysql-port=6606 --mysql-user=sysbench --mysql-password=sysbench /usr/share/sysbench/oltp_read_write.lua --table_size=10000000 prepare #建表,造数据 root# /usr/bin/sysbench --threads=64 --time=600 --histogram=on --mysql_host=10.65.200.43 --mysql-port=6606 --mysql-user=sysbench --mysql-password=sysbench /usr/share/sysbench/oltp_read_write.lua --table_size=10000000 run #运行压测程序 root# /usr/bin/sysbench --threads=64 --time=600 --histogram=on --mysql_host=10.65.200.43 --mysql-port=6606 --mysql-user=sysbench --mysql-password=sysbench /usr/share/sysbench/oltp_read_write.lua --table_size=10000000 cleanup #执行清理工作 关键参数说明: --threads=64 测试时使用的线程数 --time=600 测试时间 --histogram=on 在报告中是否输出关于延迟的直方图,建议开启 --table_size=10000000 数据表的大小现在可以愉快的进行测试了。 参考资料: 1. https://github.com/akopytov/sysbench 2. https://bitheap.org/cram/ 3. https://archive.fosdem.org/2017/schedule/event/sysbench/attachments/slides/1519/export/events/attachments/sysbench/slides/1519/sysbench.pdf
前言: CentOS 6.X上面安装的python默认版本为2.6.6,但是现在很多库都是要求python2.7,因此一个新系统上面要做的第一件事就是升级Python。 0.安装依赖包 点击(此处)折叠或打开 [root@localhost ~]# python --version Python 2.6.6 [root@localhost ~]# yum -y update [root@localhost ~]# yum groupinstall "Development tools" [root@localhost ~]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel 1.安装Python2.7 点击(此处)折叠或打开 [root@localhost ~]# wget http://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz [root@localhost ~]# tar xf Python-2.7.10.tar.xz [root@localhost ~]# cd Python-2.7.10 [root@localhost ~]# ./configure --prefix=/usr/local && && & &
在异地机房部署了一个MySQL灾备库,部署之后复制看起来是正常的,但是观察MySQL错误日志却发现复制线程每隔30秒左右都会断线重连一次。 MySQL输出的错误日志: 170110 16:07:00 [ERROR] Error reading packet from server: Lost connection to MySQL server during query ( server_errno=2013) 170110 16:07:00 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-bin.000362' at position 948341 170110 16:07:45 [ERROR] Error reading packet from server: Lost connection to MySQL server during query ( server_errno=2013) 170110 16:07:45 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-bin.000362' at position 950196 这个故障只能在排查错误日志时发现,监控复制线程不容易检测到这个问题。 经过排查,最终发现是到机器到主力机房的路由有问题,添加路由后故障消失。
前言: 此工具可以读取当前my.cnf的设定值与实际环境的状态值,输出一个非常友好的报表并给出优化建议。 安装: root#wget http://www.day32.com/MySQL/tuning-primer.sh root#chmod 755 tuning-primer.sh 依赖包:bc 执行后的报表:
1.卸载多个相同的rpm包 rpm -e --allmatches