主页 > mysql, 运维知识 > percona编译安装以及性能参数配置实践[原创]

percona编译安装以及性能参数配置实践[原创]

2012年11月26日 发表评论 查看评论
percona要比mysql更加稳定高效,所以明月的服务器改用了percona.下面是安装和优化过程:

先安装必要的东西:

yum install cmake
yum install gcc-c++.x86_64  
yum install libaio-devel
yum install ncurses-devel
yum install curses-devel
yum install bison.x86_64  bison-devel.x86_64
 
之后查看下默认percona配置
cmake . -LH|more  
如果配置不合适,要重新cmake的话,需要删除MakeCache.txt文件,否则新的编译选项不会重现生成。
 
之后明月做的编译如下:
CC=gcc CFLAGS="-DBIG_JOINS=1 -DHAVE_DLOPEN=1 -O3"  CXX=g++  CXXFLAGS="-DBIG_JOINS=1 -DHAVE_DLOPEN=1 -felide-constructors -fno-rtti -O3" \
cmake . \
-DCMAKE_CXX_COMPILER="g++"  \
-DCMAKE_BUILD_TYPE:STRING=Release  \
-DSYSCONFDIR:PATH=/usr/local/percona5.65  \
-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/percona5.65  \
-DENABLED_PROFILING:BOOL=ON  \
-DENABLE_DEBUG_SYNC:BOOL=OFF  \
-DMYSQL_DATADIR:PATH=/usr/local/percona5.65/data  \
-DMYSQL_MAINTAINER_MODE:BOOL=OFF  \
-DWITH_EXTRA_CHARSETS:STRING=gbk,gb2312,utf8  \
-DWITH_BIG_TABLES:BOOL=ON  \
-DWITH_FAST_MUTEXES:BOOL=ON  \
-DWITH_DEBUG=0  \
-DWITH_SSL:STRING=bundled  \
-DWITH_UNIT_TESTS:BOOL=OFF  \
-DWITH_ZLIB:STRING=bundled  \
-DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON  \
-DWITH_SERVER_SUFFIX=gleasy  \
-DWITH_PLUGINS=heap,csv,partition,innodb_plugin,myisam  \
-DDEFAULT_COLLATION=utf8_general_ci  \
-DDEFAULT_CHARSET=utf8  \
-DENABLED_ASSEMBLER:BOOL=ON  \
-DENABLED_LOCAL_INFILE:BOOL=ON  \
-DENABLED_EMBEDDED_SERVER:BOOL=OFF  \
-DWITH_CLIENT_LDFLAGS:STRING=-all-static  \
-DWITH_MYSQLD_LDFLAGS:STRING=-all-static  \
-DINSTALL_LAYOUT:STRING=STANDALONE  \
-DFEATURE_SET=community  \
-DWITH_EMBEDDED_SERVER=OFF  \
-DWITH-UNIX-SOCKET-PATH=/usr/local/percona5.65/mysql.sock  \
-DCOMMUNITY_BUILD:BOOL=ON;

各个编译选项解释如下:
-DCMAKE_CXX_COMPILER="g++"  #使用g++编译
-DCMAKE_BUILD_TYPE:STRING=Release  #编译选项为release
-DSYSCONFDIR:PATH=/usr/local/percona5.65  #配置目录
-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/percona5.65  #安装目录 
-DENABLED_PROFILING:BOOL=ON  #是否启用代码查询分析
-DENABLE_DEBUG_SYNC:BOOL=OFF  #是否启用同步调试功能
-DMYSQL_DATADIR:PATH=/usr/local/percona5.65/data  #数据目录
-DMYSQL_MAINTAINER_MODE:BOOL=OFF  # 是否启用MySQL的维护环境
-DWITH_EXTRA_CHARSETS:STRING=gbk,gb2312,utf8  #支持gbk,gb2312,utf8字符集
-DWITH_BIG_TABLES:BOOL=ON  #大表支持
-DWITH_FAST_MUTEXES:BOOL=ON  #有人做了测试,加上MyISAM会快6%
-DWITH_DEBUG=0  #去除诊断模式,如果用–with-debug=full编译,大多数查询慢20%
-DWITH_SSL:STRING=bundled  #SSL加密类型为bundled,也可以用system
-DWITH_UNIT_TESTS:BOOL=OFF  #去掉单元测试环节
-DWITH_ZLIB:STRING=bundled  #压缩库支持
-DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON  #安装分片存储引擎
-DWITH_SERVER_SUFFIX=gleasy  #加个后缀名,登录的时候在版本号的后面可以看到
-DWITH_PLUGINS=heap,csv,partition,innodb_plugin,myisam  #插件
-DDEFAULT_COLLATION=utf8_general_ci  #默认排序字符集
-DDEFAULT_CHARSET=utf8  # 默认字符集
-DENABLED_ASSEMBLER:BOOL=ON  #允许使用汇编模式编译(性能优化)
-DENABLED_LOCAL_INFILE:BOOL=ON  #允许本地导入数据
-DENABLED_EMBEDDED_SERVER:BOOL=OFF  #不构建嵌入式服务
-DWITH_CLIENT_LDFLAGS:STRING=all-static  #有人做了测试,静态链接性能提高13%
-DWITH_MYSQLD_LDFLAGS:STRING=all-static  #有人做了测试,静态链接性能提高13%
-DINSTALL_LAYOUT:STRING=STANDALONE  #.tar.gz和.zip包安装用这个布局
-DFEATURE_SET=community  #启动community版的特性
-DWITH_EMBEDDED_SERVER=OFF  #不建立嵌入式服务器
-DWITH-UNIX-SOCKET-PATH=/usr/local/percona5.65/mysql.sock  #sock文件位置
-DCOMMUNITY_BUILD:BOOL=ON;  #因为是社区版,这个值要设置为true
 
make的时候可以开启多个CPU编译:
make -j 8 && make install   #-j 表示希望使用cpu核数
初始化数据库:
/usr/local/mysql/scripts/mysql_install_db  –user=mysql –basedir=/usr/local/percona5.65/  –datadir=/usr/local/percona5.65/data 
 
然后需要生成percona配置文件,明月是去https://tools.percona.com/wizard这个网站自动生成了一个my.cnf。
 
 
之后就可以启动数据库了,明月对variable做了下面的性能优化:
innodb_adaptive_flushing=false  #不使用innodb的自适应刷新算法
enable_query_response_time_stats=1  #记录SQL响应时间信息
userstat_running=1  #记录用户统计信息
log_slow_verbosity=full  #详细记录慢查
innodb_fast_checksum=1  #使用percona的更快的checksum算法,其实是不计算checksum
innodb_stats_update_need_lock=0  #取消更新状态信息时的锁操作
nnodb_page_size=8k  #MySQL文件页大小默认使用8k
innodb_file_format_check=ON  #MySQL使用barracuda需要在启动的时候检查文件格式为innodb_file_format
innodb_strict_mode=1  #严格检查文件格式,如果有文件格式高于innodb_file_format,实例不能启动
innodb_file_formatt=barracuda  #percona默认文件格式为barracuda
innodb_read_io_threads=1  #预读线程只需要设置为1
innodb_write_io_threads=4  #写线程设置为线程数除以实例个数
 
下面是集群的设置: 
这个明月没有配置到自己的服务器上,因为明月的percona前面有一层redis做缓存,写入或修改数据的时候,也会往缓存里面写入以及修改。读取的时候
会先查缓存里面有没有,没有再去mysql取。所以刚插入或者修改的数据都在redis里面,故slave的Time out-of-sync的问题明月这边可以说是不存在的。
wsrep_slave_threads=4      (启用多个slave同步线程)
wsrep_causal_reads=ON      (解决Time out-of-sync的问题,强制事务结束才能读取,这个会延长时间1) 
但是这个设置虽然保障了数据的一致性和提高了主从同步的速度,但是如果有两个节点同时写,那么可能导致死锁或者锁超时导致commit失败。
 
需要设置下面两个参数
innodb_autoinc_lock_mode=2  #设置autoinc列的模式为"interleaved” lock mode
innodb_locks_unsafe_for_binlog=1 #关闭gap locking,避免死锁产生
 

原创文章,转载请注明: 转载自肚腩照明月'blog

本文链接地址: percona编译安装以及性能参数配置实践[原创]

文章的脚注信息由WordPress的wp-posturl插件自动生成


  1. 本文目前尚无任何评论.

SEO Powered by Platinum SEO from Techblissonline