压测:
mysqlslap -u root -p —concurrency=50 —create-schema=’MyDB’ —query=’select * from MyDB.test2’ —number-of-queries=100;

关于MySQL的wait_timeout连接超时问题报错解决方案

查看Mysql的日志是否开启和记录日志路径

MySQL的查询日志记录了所有MySQL数据库请求的信息。无论这些请求是否得到了正确的执行。就是即使我查询一个不存在的表的SQL,查询日志依然会记录;
其他日志查看参考:https://www.cnblogs.com/mungerz/p/10442791.html

image.png
另外,MySQL的查询日志支持写入文件或写入数据表两种形式,这个由参数log_output控制,如下所示:

  1. mysql> show variables like 'log_output';
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | log_output | FILE |
  6. +---------------+-------+
  7. 1 row in set (0.00 sec)
  8. mysql>

这三个参数general_log、 general_log_file、 log_output都是动态参数,可以随时动态修改。

开启MySQL查询日志

set global general_log = on;

设置日志输出方式为表

如果设置log_output=table的话,则日志结果会记录到名为gengera_log的表中,这表的默认引擎是CSV

mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set (0.00 sec)

mysql> set global log_output='table';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | TABLE |
+---------------+-------+
1 row in set (0.01 sec)

mysql>

查看查询日志信息。

mysql> select * from mysql.general_log;
+---------------------+---------------------------+-----------+-----------+--------------+----------------------------------+
| event_time          | user_host                 | thread_id | server_id | command_type | argument                         |
+---------------------+---------------------------+-----------+-----------+--------------+----------------------------------+
| 2017-07-06 12:32:05 | root[root] @ localhost [] |         1 |         1 | Query        | show variables like 'general%'   |
| 2017-07-06 12:32:28 | root[root] @ localhost [] |         1 |         1 | Query        | show variables like 'log_output' |
| 2017-07-06 12:32:41 | root[root] @ localhost [] |         1 |         1 | Query        | select * from MyDB.test          |
| 2017-07-06 12:34:36 | [root] @ localhost []     |         3 |         1 | Connect      | root@localhost on                |
| 2017-07-06 12:34:36 | root[root] @ localhost [] |         3 |         1 | Query        | KILL QUERY 1                     |
| 2017-07-06 12:34:36 | root[root] @ localhost [] |         3 |         1 | Quit         |                                  |
| 2017-07-06 12:34:51 | root[root] @ localhost [] |         1 |         1 | Query        | select * from mysql.general_log  |
+---------------------+---------------------------+-----------+-----------+--------------+----------------------------------+
7 rows in set (0.02 sec)

mysql>

MySQL 复制表

如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等。 如果仅仅使用CREATE TABLE … SELECT 命令,是无法实现的。
本章节将为大家介绍如何完整的复制MySQL数据表,步骤如下:

  • 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。
  • 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构。
  • 如果你想复制表的内容,你就可以使用 INSERT INTO … SELECT 语句来实现。

尝试以下实例来复制表 runoob_tbl 。

步骤一:获取数据表的完整结构。

mysql> SHOW CREATE TABLE runoob_tbl \G;
*************************** 1. row ***************************  
Table: runoob_tbl Create Table: CREATE TABLE `runoob_tbl` (  
  `runoob_id` int(11) NOT NULL auto_increment,  
  `runoob_title` varchar(100) NOT NULL default '', 
  `runoob_author` varchar(40) NOT NULL default '',  
  `submission_date` date default NULL,   
  PRIMARY KEY  (`runoob_id`),  
  UNIQUE KEY `AUTHOR_INDEX` (`runoob_author`) )
  ENGINE=InnoDB  1 row in set (0.00 sec)

步骤二:

修改SQL语句的数据表名,并执行SQL语句。

mysql> CREATE TABLE `clone_runoob_tbl` (  
  `runoob_id` int(11) NOT NULL auto_increment,  
  `runoob_title` varchar(100) NOT NULL default '', 
  `runoob_author` varchar(40) NOT NULL default '',  
  `submission_date` date default NULL,   
  PRIMARY KEY  (`runoob_id`),  
  UNIQUE KEY `AUTHOR_INDEX` (`runoob_author`) )
  ENGINE=InnoDB

步骤三:

执行完第二步骤后,你将在数据库中创建新的克隆表 clone_tbl。 如果你想拷贝数据表的数据你可以使用 INSERT INTO… SELECT 语句来实现。

mysql> INSERT INTO clone_runoob_tbl (runoob_id,     
                       runoob_title,     
                       runoob_author,    
                       submission_date)     
 SELECT runoob_id,runoob_title,    
        runoob_author,submission_date     
 FROM runoob_tbl; 


Query OK, 3 rows affected (0.07 sec) Records: 3  Duplicates: 0  Warnings: 0

执行以上步骤后,会完整的复制表的内容,包括表结构及表数据。