MySQL调优

MySQL日志:

二进制日志:(mysql-bin.00000*......)
	记录所有更改数据的语句
	可以帮助我们恢复数据库
	修改配置文件:
		     log-bin=mysql-bin
			expir_logs_days=10				//二进制日志删除的时间(备份日期多加7天)
			max_binlog_size=2048M				//不能设置大于4096M值,默认1024M
			
			show variables like ‘log_%’;		      //查询计算机中所有的日志状态
			show binary logs;				//查看当前正在往哪个日志里面写
			#mysqlbinlog mysql-bin.000001		     //查看日志
			reset matster					//清空所有二进制日志
			purge master logs before "年月日"	    //清除这个时间前的数据
	还原数据库:(通过二进制日志)
		把曾经执行过的命令在执行一次。对数据没有任何影响,不是真实存数据的
		#mysqlbinlog --stop-data=‘2017-12-2 9:02:28’ mysql-bin.000005 | MySQL-u root -p
			--stop-data=‘’	//查看二进制日志中错误操作的最后一步之前的操作,用二进制日志弥补丢失的几秒钟的数据。还原这个时间点之前的所有的操作
		
查询日志:
	记录建立客户端连接和执行的语句
错误日志:(mysql-err.err) 启动停止运行期间的错误 配置文件:(没有自己写) log-error=mysql-error show variables like ‘log_error’; #mysqladmin -u root -p flushlogs
慢查询日志: 记录所有超过时间的日志,规定时间内的查询 配置文件里写: log_slow_queries=slowlog //slowlog日志文件的名字 long_query_time=10 (时间单位:秒) 重启服务 select benchmak(10000000000,password(‘newpwd’));//测试的时候使用这个
通用日志: 记录用户操作 所有人直接性的操作 log=log-tong 可以使用cat直接查看
mysql查询时遍历查询,一条一条的查询 [root@dzs ~]# mysqladmin refresh 刷新日志 [root@dzs ~]# mysqladmin flush-logs 刷新日志 flush privileges 刷新日志

MySQL优化参数,优化思路:

最大连接数为:16834(默认为100,不准超过16834)
	show variables like 'max_connections';	     //查看数据库的最大连接数
	set global max_connections=10000;		//修改数据库的最大连接数
公司量少:1-9万之间
	alter table ku.biao disable keys;		//禁用索引(公司量少:1-9万之间)
	set unique_check=0			     //禁用外键
	set foreign_key_checks=0	       	//禁用外键健康检查
	set autocommit=0;				//禁用自动提交

MySQL参数调优:

	query_cache_size=8192M	//缓存区的大小
	query_cache_type=1		//缓存的类型
		0	不开启缓存区
		1:no_sql_cache	所有的都得进入缓存查询
		2:sql_cache	所有的东西默认的在硬盘中找
	key_buffer_size = 16M		//索引缓存区的大小(取决于内存的大小,内存的十分之一)
	table_open_cache=64		//同时打开的表的个数(根据自己公司的表的个数来定。也可以是table_cache=64)
	sort_buffer_size= 512K		//排序缓存区的大小(数越大,速度越快。数据库里面的数据往出读的时候需要排序。默认是2M。200次排序约等于1K。)
	read_buffer_size=256K		//每个表分配缓存区的大小(当有线程连续扫描该表时,才会使用这个缓冲区,不读就释放该大小。)
	read_rnd_buffer_size=512K		//连续扫描或连续读取,并且有特定的排序的时候才会使用这个
	>set session read_rnd_buffer_size=512K;(会话当中这个数得随时随地的修改)
	innodb_buffer_pool_size=16M	//innodb引擎的时候调这个
	myisam_sort_buffer_size=8M
	max_connections=10000
	innodb_fush_log_at_trx_commit=0		
		0	每隔1秒	什么时候把缓冲区的数据写入到日志当中,并把日志写入到硬盘里(缺点:不安全。优点:速度快)
		1	依照事务的提交写入日志(缺点:速度慢。优点:安全)
		2	每次提交事务写入日志,每隔1秒钟写入硬盘(缺点:丢失1到2秒钟的数据)
	back_log=8192		//多少个请求可以放到列队当中(公司在某一时间的有大的访问的时候使用)
	interactive_timeout=10		//关闭服务器连接时,等待的时长
	thread_buffer_size=512K	//每个需要排队线程分配的缓冲区的大小
	wait_timeout=6000				//关闭一个连接等待的时间(默认28800s)
原文地址:https://www.cnblogs.com/dzs-dlam/p/7985604.html