前言
因为看了一眼网站的活动截止24号课程就不免费了,熬夜把价值400多块老男孩的录制的MySQL视频课一口气看完了哈哈~,虽然很基础,顺便记录一下~,也get到了之前未曾接触过的新东西!看来得无时无刻都得保持学习的状态!以下是看视频过程中的PPT截图,和小编的个人见解!如有错误,请您谅解~
其实这么多错误,都是可以避免的,有一套很好的mysql运维,优化规范就可以了!例如说,权限问题,在安装的时候,每个目录应该什么权限就应该设置好了,并且还得有严谨,复杂、好记,安全的root口令。my.cnf 要贴合硬件参数的规模和实际业务的需求,来配置参数,各种业务的最大连接数等等等等。所以低级错误,就应该在生产环境发生率降低为零,mysql生产上线,重启的代价是非常大的!所以,不到万不得已不要重启生产环境的服务器!
![](https://www.ztloo.com/wp-content/uploads/2018/05/5edcf5d51e314aecd9e47f000f5fee8a.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/3411a28cff7bc569b5278d019a3f082e.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/f1775e537816132c25f53d1519063c99.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/0511f57a304c2d0f1df35a5b4f838047.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/51e44d588e688debb78bcb9c74f0f491.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/c9912b8056b62ded21619c75bcefdbf8.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/de80ff26fa83a8befa1420679b2a59e9.png)
Mysql数据库采用InnoDB模式,默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,一旦数据库锁超过这个时间就会报错。
通过下面语句查找到为提交事务的数据,kill掉此线程即可。 增加锁等待时间,即增大下面配置项参数值,单位为秒(s)。
select * from information_schema.innodb_trx,
A.应急方法:show processlist; kill掉出现问题的进程
B.根治方法:select * from innodb_trx 查看有是哪些事务占据了表资源。
C.我的方法:设置MySQL锁等待超时 innodb_lock_wait_timeout=50 ,autocommit=on
![](https://www.ztloo.com/wp-content/uploads/2018/05/e1944311cb52d4f033e25f6750c8bfa6.png)
检查进程和防火墙和telnet 端口通不通。还是不行,就重启mysql服务。
![](https://www.ztloo.com/wp-content/uploads/2018/05/0f6deb578bb59b044857640d9f22e541.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/93ddcd4c90b83e72d4090fbe7ebf56ac.png)
mysql的socket本地连接,连接不上的话,就进行远程连接。加 -h 和 -P.
![](https://www.ztloo.com/wp-content/uploads/2018/05/671b5d1709a5457e129f51c2bdb541d7.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/fb1820b460c89bc47f20e9541ce89b73.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/40261b60ed4173b42d2e0ea38fb5a632.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/bc046c8ee48659e0d0ded6499b7fd679.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/037058d2a25cb288ff1ba1aca8b3c5d0.png)
两个表中都有sid,mysql无法判断,报错的意思是你写的sql不严谨不明确。
![](https://www.ztloo.com/wp-content/uploads/2018/05/67da235b2da2b6322c3c81f258f436a9.png)
数据类型插入错误。
![](https://www.ztloo.com/wp-content/uploads/2018/05/59e89bd7dadddccfcd4bbe4ff771db9f.png)
非严格模式会屏蔽一些报错。
![](https://www.ztloo.com/wp-content/uploads/2018/05/72f67bc18aabf4dc40a7d5c1803e654d.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/87cb979aadcedd563a36b9d65eec3710.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/a31cad0c06e8f41f624d520523134e62.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/31663b1179e8399c24e051c1b6f1cdd4.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/30afed110819e94bf12f86a7ee0d9ee1.png)
子查询 用where 指定返回一行数据就可以解决。记住mysql中有等于号的返回必须是一行,多余一行就报错、
![](https://www.ztloo.com/wp-content/uploads/2018/05/8918d6bf5d8c6ad1131f1dbd170fd79d.png)
解决方法三种。alter 处理,创建存储过程处理,shell脚本替换,
![](https://www.ztloo.com/wp-content/uploads/2018/05/787311395a46241c6fb1d03d2f56d596.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/849cf5b26326f43c6013a2e07d5fe976.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/ff88153f124abf7f55158765195df51f.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/f31282530e3de64c28aa6b5370df5a41.png)
运用视图的时候,如果频繁改变表结构,就会报错,并且mysql在外国大牛权威指南里有明确说过,底层复杂,难以优化,会给互联网企业带来非常大的性能隐患,小编建议的做法就是直接不用!
![](https://www.ztloo.com/wp-content/uploads/2018/05/b062c14189a638b952092a3aa73c620a.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/26b5c1d22ffbe39a00470c70efd2c84c.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/96fdce0ef7ea3d2c1cf690dc9a456592.png)
这个小编一直忽略掉的参数,应该是5.7新添加的功能!用户资源管理这个就可以减轻程序端的控制了!减轻程序的复杂逻辑。
![](https://www.ztloo.com/wp-content/uploads/2018/05/9ed01439c12a4d1d81990f491922cf1d.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/e30b020412f4f23332be3d5413d7c5e2.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/b2e4eba49909c5e1d246dc9f80e12c22.png)
数据恢复的手段有很多,不要慌乱,大多数以闪回,如果你开启了行式的binlog等。大多数核心原理是通过解析binlog,进行逆向操作,把delete的变成insert,然后进行个性化的进行时间点的恢复。如果编程够牛,可以高度定制恢复的效果!了解binlog的格式和内容,会一些python,其实对于小编来说,问题不大!
延迟复制,mysql权威指南一个数据库界的前辈有一句话,复制不能代替备份!
但目前来看,复制延迟确实可以很快回滚到2小时之前! 延迟复制所带来的隐患小编还没有发现,如果可以还是实现延迟备份的功能来比较稳妥!
![](https://www.ztloo.com/wp-content/uploads/2018/05/00c3a24d1a8936e44ec9d32781e91f92.png)
这个主从同步出错,还是要尽量避免,因为啥呢,如果频繁的主从同步出错,说明你的mysql规范没有弄好,经常脑裂导致主从混乱!
所以对于架构的设计,严格的主从集群规模,强一致性,这些都是互联网金融公司,以及非互联网金融公司,所要求的标准。
强一致性:可能 大家不理解,简单来说,主服务器和从服务器的数据必须,实时性的完全一致!
在过一段时间,小编会上几节,专门研究主从集群规模链式结构的搭建,从成本,性能,以及主从一致方面的,和解决数据不一致,脑裂,网络抖动,数据异常,等各种难题,进行一一解答,和实战演练!别急~马上就会post上线!
![](https://www.ztloo.com/wp-content/uploads/2018/05/5f8c2ec4879d26800d599531f3720ccb.png)
![](https://www.ztloo.com/wp-content/uploads/2018/05/6be21cfda29bf2b7e41a4a5d9cf5b3b1.png)