1、into outfile 生成sql:一般都是生成文本或者其他形式的文件,现在需要生成sql形式的文件。
配置文件加
secure_file_priv=''
select concat('insert into tab_name(id,name,age) values(',id,',','\'',name,'\'',',','\'',age,'\'',');') into outfile '/tmp/tab_name.txt' from tab_name;

create table tab_name(id int primary key auto_increment, name varchar(20), age varchar(10));
insert into tab_name(id,name,age) values(1,'aaa','23');
insert into tab_name(id,name,age) values(2,'aaa','23');
insert into tab_name(id,name,age) values(3,'aaa','23');
insert into tab_name(id,name,age) values(4,'aaa','23');
insert into tab_name(id,name,age) values(6,'aaa','23');

2、在show processlist显示的状态里面,update表示正在insert ,updating表示正在delete,Updating才是表示正在update。

+-----+------+-----------+------+---------+------+----------------+----------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------+------+---------+------+----------------+----------------+
| 322 | root | localhost | test | Query | 1 | updating | delete from ...|
| 322 | root | localhost | test | Query | 18 | Updating | update ...|
| 322 | root | localhost | test | Query | 49 | update | insert into ...|
+-----+------+-----------+------+---------+------+----------------+----------------+

3、清除Slave信息:在5.5之后新增了一个命令:reset slave all,可以清除Slave的所有信息。

4、SET global slave_type_conversions=ALL_NON_LOSSY 。碰到主从同步失败,原因是在运行 pt-online-schema-change 进行DDL修改字段操作的时候,从的一个字段长度和主的字段长度不一致导致的。
主从同步失败的错误信息:
Slave SQL: Column 31 of table 'test.tbname' cannot be converted from type 'varchar(765)' to type 'varchar(512)
解决办法:先stop slave,再通过设置slave_type_conversions=ALL_NON_LOSSY,最后再start slave 解决。
通过上面的问题可以得到一个经验:MySQL在做DDL并且主从切换(高可用)的时候,需要保证不要因为上面的原因而出现异常。

5、慢查询统计

按天:
grep  Time: mysql-slow-3306.log | awk '{print $3}'|awk '{a[$1]++}END{for (j in a) print j,": " a[j]}' | sort -nrk2 -t:
按小时:
grep  Time: mysql-slow-3306.log | awk '{print $3,$4}'|awk -F : '{print $1}' | awk -F : '{a[$1]++}END{for (j in a) print j,": " a[j]}' | sort -nrk2 -t:
按分钟:
grep  Time: mysql-slow-3306.log | awk '{print $3,$4}'|awk -F : '{print $1,$2}' | awk -F : '{a[$1]++}END{for (j in a) print j,": " a[j]}' | sort -nrk2 -t:

解释:

awk '{a[$1]++}END{for (j in a) print a[j],j}' a.txt
a[$1]++这里用到了awk的数组,数组a的下标为$1,并将相同的相加,会遍历a.txt $1
遍历完成后,通过END把后面的句子连起来
for (j in a) 是指打印数组a的下标,并定义下标为变量j
最后print a[j],j就是打印数组下标和数组,这样就相同的$1排重并计数

6、set autocommit = 0 是将本线程设置为非自动提交模式。下个语句开始时自动新建一个事务,会隐含了一个begin操作

7、character-set-client-handshake,该参数的作用是在连接MySQL时,是否忽视其指定的字符集,使用数据库默认(character-set-server)的字符集。用 --skip-character-set-client-handshake来指定忽视。如:在配置文件的mysqld选项组下面添加:

skip-character-set-client-handshake

之后通过mysql连接指定任何字符集(--default-character-set=utf8/gbk/latin1)都无效,数据库只是用(character-set-server)设置的字符集。可以有效的避免客户端程序误操作,使用其他字符集连接进来并写入数据,从而引发乱码问题。

8、MySQL5.7内存使用监控(OOM)

通过performance_schema里的表定位:
MySQL 5.7的库performance_schema新增了以下这几张表,用于从各维度查看内存的消耗:
memory_summary_by_account_by_event_name
memory_summary_by_host_by_event_name  
memory_summary_by_thread_by_event_name
memory_summary_by_user_by_event_name    
memory_summary_global_by_event_name
简单来说,就是可以根据用户、主机、线程、账号、全局的维度对内存进行监控。同时库sys也就这些表做了进一步的格式化,可以使得用户非常容易的观察到每个对象的内存开销,默认情况下performance_schema只对performance_schema进行了内存开销的统计。但是在对OOM进行诊断时,需要对所有可能的对象进行内存监控。因此,还需要做下面的设置:
mysql> update performance_schema.setup_instruments set enabled = 'yes' where name like 'memory%';
但是这种在线打开内存统计的方法仅对之后新增的内存对象有效
如想要对全局生命周期中的对象进行内存统计,必须在配置文件中进行设置,然后重启:
[mysqld]
performance-schema-instrument='memory/%=COUNTED'

查看消耗的内存(需要分配的)

mysql> select event_name,SUM_NUMBER_OF_BYTES_ALLOC/1024/1024 from memory_summary_global_by_event_name order by SUM_NUMBER_OF_BYTES_ALLOC desc limit 10;
+--------------------------------------------------------------------+-------------------------------------+
| event_name | SUM_NUMBER_OF_BYTES_ALLOC/1024/1024 |
+--------------------------------------------------------------------+-------------------------------------+
| memory/innodb/buf_buf_pool | 3144.00000000 |
| memory/innodb/hash0hash | 83.70404053 |
| memory/performance_schema/events_statements_summary_by_digest | 39.67285156 |
| memory/sql/JOIN_CACHE | 36.00000000 |
| memory/performance_schema/events_errors_summary_by_thread_by_error | 35.05664063 |
| memory/innodb/ut0new | 32.07868385 |
| memory/mysys/KEY_CACHE | 32.00141907 |
| memory/sql/TABLE | 30.14540100 |
| memory/sql/dd::String_type | 29.45692062 |
| memory/innodb/ut0link_buf | 24.00004578 |
+--------------------------------------------------------------------+-------------------------------------+
10 rows in set (0.00 sec)

9、查看哪些事务长时间没有提交:如10秒

select a.trx_mysql_thread_id,b.TIME from information_schema.INNODB_TRX a inner join information_schema.processlist b on a.trx_mysql_thread_id=b.id where a.trx_state='RUNNING' and b.time>10 and b.COMMAND='Sleep';

10、使用gdb不登入MySQL直接设置连接数

gdb -p $(cat /app/mysqldata/3306/data/mydb1.pid) -ex "set max_connections=5000" -batch

鉴权

show grants for 'root'@'localhost';

手册,重要章节通读一遍

边学习理论,边动手实践

有条件的话,边学习源码边动手实践验证

遇到问题时,先观察日志,自主思考可能的原因。实在无果后,提供详细信息向别人耐心请教

最新文章

  1. 【BZOJ】3737: [Pa2013]Euler
  2. OC calendar 实践中的那些坑
  3. lnmp_auto:自动化安装lnmp环境脚本
  4. pyhon之Tkinter实例化学习
  5. Windows 下如何设置 只允许固定IP远程访问
  6. linux下安装mysql5.6(官方文档)
  7. Android特效 五种Toast详解
  8. Preload,Prefetch 和它们在 Chrome 之中的优先级
  9. .net基础学java系列(八)SpringBoot
  10. MFC中使用ATL报错:error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  11. flume 学习总结
  12. 第一次项目上Linux服务器(六:Nginx安装及相关命令(转))
  13. [.NET开发] C#使用doggleReport生成pdf报表的方法
  14. 开启nginx目录文件列表功能
  15. sql 跨表修改的方式
  16. proc_create函数内幕初探
  17. [bzoj2816][ZJOI2012]网络(LCT,splay)
  18. 如何阅读 Redis 源码?ZZ
  19. Kali渗透测试工具-netcat
  20. 无法远程连接阿里云的Mysql

热门文章

  1. windows客户端
  2. mybatis的判定时间字段问题 java.lang.IllegalArgumentException: invalid comparison: cn.hutool.core.date.DateTime and java.lang.String
  3. 【洛谷P2270】奶牛的运算
  4. CDH 版本 6.0.1 升级到 6.2.0 当前最新版本(CentOS 7.x)
  5. springboot带有进度条的上传
  6. es6学习1:let和const
  7. 菜鸟教程C++(一)
  8. 作业——09 安装关系型数据库MySQL 安装大数据处理框架Hadoop
  9. Redis采坑(一)——数据无法插入,内存溢出
  10. CMU Database Systems - MVCC