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';

手册,重要章节通读一遍

边学习理论,边动手实践

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

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

MySQL运维中的Tips--持续更新的更多相关文章

  1. CNUTCon2017全球运维技术大会(持续更新中) - 斯达克学院 - 实战驱动的 IT 教育平台 - Powered By EduSoho

    CNUTCon2017全球运维技术大会(持续更新中) - 斯达克学院 - 实战驱动的 IT 教育平台 - Powered By EduSoho   https://new.stuq.org/cours ...

  2. linux运维中的命令梳理(一)

    在linux日常运维中,我们平时会用到很多常规的操作命令. 下面对常用命令进行梳理: 命令行日常系快捷键(不分大小写)CTRL + A 移动光标到行首CTRL + E 移动光标到行末CTRL + U ...

  3. 转:三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构

    在微信公众号看到一篇关于mycat的文章,觉得分析的很不错,给大家分享一下 三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构 原文链接:https://mp.weixin.qq.com/s ...

  4. 公司没有 DBA,Mysql 运维自己来

    如果你的公司有 DBA,那么我恭喜你,你可以无视 Mysql 运维.如果你的公司没有 DBA,那你就好好学两手 Mysql 基本运维操作,行走江湖,防身必备. 环境:CentOS7 版本: 一.虚拟机 ...

  5. DBA避坑宝典:Oracle运维中的那些事儿

    对于Oracle运维中的那些事儿,我的最终目的:不是比谁更惨,而是能够从中吸取经验和教训. 从我的理解来看,我会从下面的几个方面来进行说明DBA运维中的一些事儿. 每个部分都是非常关键的,缺一不可,而 ...

  6. mysql运维必会的一些知识点整理

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  7. 安全运维中基线检查的自动化之ansible工具巧用

    i春秋作家:yanzm 原文来自:安全运维中基线检查的自动化之ansible工具巧用 前几周斗哥分享了基线检查获取数据的脚本,但是在面对上百台的服务器,每台服务器上都跑一遍脚本那工作量可想而知,而且都 ...

  8. 美图秀秀DBA谈MySQL运维及优化

    美图秀秀DBA谈MySQL运维及优化 https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=401797597&idx=2& ...

  9. HDFS datanode心跳与运维中的实际案例

    分布式系统的节点之间常采用心跳来维护节点的健康状态,如yarn的rm与nm之间,hdfs的nn与dn之间.DataNode会定期(dfs.heartbeat.interval配置项配置,默认是3秒)向 ...

随机推荐

  1. 在x64计算机上捕获32位进程的内存转储

    这是一个我经常遇到的问题,我们经常会遇到这样的情况:我们必须重新捕获内存转储,因为内存转储是以“错误”的方式捕获的.简而言之:如果在64位计算机上执行32位进程,则需要使用允许创建32位转储的工具捕获 ...

  2. windbg命令行选项

    我们不仅可以通过GUI的方式使用Windbg,还可以通过命令行的方式使用它,且在有些需求和使用场景下,只能使用命令行模式  windbg命令行使用以下语法: windbg [ -server Serv ...

  3. ServiceStack.OrmLite 基本操作

    原文:https://www.cnblogs.com/wang2650/category/780821.html 原文:https://www.cnblogs.com/xxfcz/p/7045808. ...

  4. 【JZOJ6217】【20190614】最大面积

    题意 平面上有\(n\)个点\(A_i\),\(q\)次询问,每次给出一个点\(P\),求: \[ \sum_{i=L}^{R} 2S_{\triangle OPA_i} \] 最大值,其中$S_{\ ...

  5. GoCN每日新闻(2019-10-18)

    GoCN每日新闻(2019-10-18) 在Go1.13使用Errors https://blog.golang.org/go1.13-errors Go的扁平化应用结构 https://www.ca ...

  6. 多语言编程必备的十大 Vim 插件

    原文地址:http://www.linuxeden.com/a/58769 使用这 10 个 Vim 插件,可以让你在写代码或运维时,感觉更棒. 我使用 Vim 文本编辑器大约 20 年了.有一段时间 ...

  7. 解决WordPress访问中文标签出现404的几个方法

    最近很多主题用户提到安装完WordPress后中文标签出现404的情况,出现这种情况一般修改固定链接设置是没有效果的,多数是windows主机带来的麻烦.网上多数人说要修改核心文件class-wp.p ...

  8. 菜鸟教程C++(一)

    一.C++基本语法 C++程序可以定义为对象的集合,这些对象可以通过调用彼此的方法进行交互. 对象:对象具有状态和行为.例如:一只狗的状态:颜色.名称.品种等,行为:摇动.叫唤等.对象是类的实例. 类 ...

  9. Windows下多个JDK版本的切换方法

    问题 因我之前在window中无法命令行输入,后来发现是电脑中存在多个JDK,导致设置混乱. 于是,我继续深入研究了当电脑存在多个JDK的情况下,如何设置想要的JDK版本. 步骤 1.更改环境变量 进 ...

  10. qemu-img convert -c disk /var/lib/nova/instances/_base/94a107318b54108fc8e76fff21a86d7c390a20bf -O qcow2 hebin.qcow2