一次MySQL启动导致的事故实战记录
目录
- 背景
- 判断 MySQL 已完全启动的方式
- 事故
- 第一次修改
- 第二次修改
- 总结
背景 MySQL 启动时会进行 第一次 初始化数据库, 等待 MySQL 完全启动后, 再进行 第二次 初始化数据库.
第一次 初始化数据库使用 --skip-networking (这个选项表示禁止 MySQL 的 TCP/IP 连接方式) 启动 MySQL 进行初始化,
初始化完成后会关闭 --skip-networking 选项重新启动 MySQL.
第二次 初始化数据库会设置 root 密码.
判断 MySQL 已完全启动的方式 尝试主动连接 MySQL, 连接成功则表明服务已完全启动
mysql -hlocalhost -P3306 -uroot
事故 由于上面的判断方式使用的是 socket 进行连接数据库, 但第一次只是禁止 MySQL 的 TCP/IP 连接方式,
所以没等 第一次 初始化数据库完成可能就已经进行了 第二次 初始化数据库,
而 第二次 初始化数据库提前于 第一次 初始化数据库设置 root 密码, 导致 第一次 初始化连不上数据库而失败,
最后没有开启 TCP/IP 连接方式, 应用无法连接数据库.
第一次修改 使用 -h127.0.0.1 进行连接数据库
mysql -h127.0.01 -P3306 -uroot
但由于 root 用户的 host 设置的是 localhost, 不允许 127.0.0.1 进行连接, 第一次修改失败.
第二次修改
wait-for-it.sh 127.0.0.1:3306 --timeout=300mysql -hlocalhost -P3306 -uroot
【一次MySQL启动导致的事故实战记录】wait-for-it.sh 用于检测 127.0.0.1:3306 是否处于监听状态, 如果是, 则表明 第一次 初始化数据库完成了,
然后再使用 localhost 去尝试连接数据库.
原文链接: k8scat.com/posts/wait-…
总结 到此这篇MySQL启动导致的事故的文章就介绍到这了,更多相关MySQL启动导致事故内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 【故障公告】周五下午的一次突发故障
- 我要我们在一起(二)
- Hive常见问题汇总
- 洱海不是海,,人群没有你
- 我的拖延症如何控制了我,又一次
- 注册分销商的骄傲
- 跟身体谈恋爱
- 记一次赛课失利
- py连接mysql
- 2019-01-18Mysql中主机名的问题