BEGIN
DECLARE RETROWS int;
SELECT COUNT(1) INTO RETROWS
FROM `information_schema`.`partitions`
WHERE `table_schema` = SCHEMANAME AND `table_name` = TABLENAME AND`partition_name` = PARTITIONNAME;
IF RETROWS = 1 THEN
SELECT CONCAT( 'drop_partition(', SCHEMANAME, ',', TABLENAME, ',',PARTITIONNAME, ')' ) AS msg;
SET @sql = CONCAT( 'ALTER TABLE `', SCHEMANAME, '`.`', TABLENAME,'`',
' DROP PARTITION ', PARTITIONNAME, ';' );
PREPARE STMT FROM @sql;
EXECUTE STMT;
DEALLOCATE PREPARE STMT;
END IF;
END //
DELIMITER ;
e.使用tmpfs存储临时文件
mkdir /tmp/mysqltmp
修改/etc/fstab:
tmfs /tmp/mysqltmp tmpfsrw,uid=mysql,gid=mysql,size=1G,nr_inodes=10k,mode=0700 0 0
修改my.cnf
tmpdir=/tmp/mysqltmp
f.设置正确的buffer pool
设置Innodb可用多少内存,建议设置成物理内存的70%~80%
修改my.cnf
innodb_buffer_pool_size=14G
设置innodb使用O_DIRECT,这样buffer_pool中的数据就不会与系统缓存中的重复。
innodb_flush_method=O_DIRECT
以下给一个示例my.cnf,物理内存大小为24G:
g.设置合适的log大小
zabbix属于写入较多的,因此设置大一点可以避免MySQL持续将log文件flush到表中。
不过有一个副作用,就是启动和关闭会变慢一点。
修改my.cnf
innodb_log_file_size=64M
h.打开慢查询日志
修改my.cnf
log_slow_queries=/var/log/mysql.slow.log
i.设置thread_cache_size
这个值似乎会影响show global status输出中Threads_created per Connection的hitrate
当设置成4的时候,有3228483 Connections和5840 Threads_created,hitrate达到了99.2%
Threads_created这个数值应该越小越好。zabbix
j.其他MySQL文档建议的参数调整
query_cache_limit=1M
query_cache_size=128M
tmp_table_size=256M
max_heap_table_size=256M
table_cache=256
max_connections = 300
innodb_flush_log_at_trx_commit=2
join_buffer_size=256k
read_buffer_size=256k
read_rnd_buffer_size=256k
7.调整zabbix工作进程数量,zabbix_server.conf
StartPollers=90
StartPingers=10
StartPollersUnreacheable=80
StartIPMIPollers=10
StartTrappers=20
StartDBSyncers=8
LogSlowQueries=1000
参考文档:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-37966-5.html
Luna真的变美好多
中国领海内商船是可以自由通行