mysql语句在linux下大小写敏感问题,日志文件概述

mysql语句在linux下大小写敏感问题

mysql 5.6 online ddl测试

[MySQL]日志文件概述

 

 

 

mysql的sql语句在windows环境是默认lower_case_table_name=1(0大小写敏感,1为不区分大小写),是不区分大小写的.

 
在生产环境中,因为业务需求,改动mysql表结构,特别是数据量特别大的时候,几百万甚至几千万的数据,mysql
online ddl操作非常让mysql dba揪心。5.6版本支持online ddl。

这里介绍的日志文件都是MySQL数据库本身的文件,和具体用什么存储引擎无关。

 

 

 

但是在linux环境中,默认lower_case_table_name=0 是区分大小写的。

   为什么mysql ddl操作让dba揪心呢?因为mysql ddl操作内部原理是这样的:

错误日志

 

 

MySQL的错误日志类似于Oracle的alert.log,默认情况下以.err结尾,DBA在遇到问题时,首先应该查询该日志获得错误信息。

需要修改mysql的配置文件,步骤如下:

  1create table tmp  like table2  (创建临时表,与原表相似)

 

 

 

查询日志

1、 # vi /etc/my.cnf

  2insert into tmp select *  from table2
 (原数据拷贝到临时表里,并且索引等信息与原表一样)

查询日志记录了所有的数据库请求,即时这些请求没有得到正确的执行。

 

 

 

2、将lower_case_table_name=1 添加到[mysqld]下面,保存并退出:1.
按Esc键   2. 输入冒号“:wq”

  3drop table table1  删除原表

慢查询日志

 

 

慢查询日志用于记录运行时间比较长的SQL语句,可以通过参数long_query_time来设置该阀值。默认情况下,MySQL并不启动慢查询日志,可以通过设置log_slow_queries为ON启动它。

3、然后重启mysql

  4rename tmp to table1  临时表名改名为原表

另一个和慢查询日志相关的参数是log_queries_not_using_indexes,该参数为ON表示如果运行的SQL语句没有使用索引,就将其记录到慢查询日志中。

 

 

慢查询日志主要用于协助DBA进行SQL语句的优化。

   /etc/init.d/mysqld restart

在整个过程中,原表table1加共享锁(s锁),这样对业务影响就很大,作业造成阻塞(曾经同事晚上11点增加字段,导致订单业务受到影响)接下来测试一下。在mysql5.6版本里,进行了优化,alter
table table1 add  ….操作时,增、删、改、查都不会锁表.

 

 

 

二进制日志

如果出现 Warning:World-writable config file ‘/etc/my.cnf’ is ignored

首先准备测试数据,尽量千万以上,测试效果明显

二进制日志记录了所有数据库的更改操作(SELECT和SHOW不包含在里面),二进制文件在默认情况下没有启动,需要手动指定参数启动。

 

 

二进制日志主要有以下两个作用:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图