• 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)
    
  • 相关阅读:
    [转]回车和换行
    计算机常见缩略词备忘录
    Linux多线程编程阅读链接
    字符串匹配KMP算法
    k8s测试集群部署
    搭建Vmware Harbor 镜像仓库
    GitLab搭建
    Gerrit2安装配置
    linux文件系统问题:wrong fs type, bad option, bad superblock
    Docker容器内不能联网的6种解决方案
  • 原文地址:https://www.cnblogs.com/dzs-dlam/p/7985604.html
Copyright © 2020-2023  润新知