MySQL如何控制用户输错密码尝试次数?

目录

生产环境MySQL死锁如何监控及如何减少死锁发生的概率

MongoDB有哪些优秀特性及适合的场景是什么

GO语言对比其他的编程语言有何优势?实际生产环境如何取舍?

一个大事务,有很多更新,现在被回滚了,但是又着急关机重启,怎么办才好?

如何降低UPDATE/DELETE时WHERE条件写错,或者压根没写WHERE条件带来的影响

MySQL如何控制用户输错密码尝试次数?



一、生产环境MySQL死锁如何监控及如何减少死锁发生的概率

首先,死锁并不是"锁死",死锁是由于两个或两个以上会话锁等待产生回路造成。

(一)死锁监控及处理方法

对于死锁的监控,各个版本都提供了innodb_print_all_deadlocks选项,打开该选项即会将死锁的日志输出到MySQL的错误日志当中,因此可以通过监控错误日志来达到监控死锁的目的。而对于MariaDB就更加简单了,MariaDB提供了Innodb_deadlocks的计数器,可以通过监控该计数器的增长来监控是否存在发生死锁。

假如线上出现死锁并且频率较高的话,务必要引起重视。由于死锁日志仅记录了最后引起死锁的两条SQL,因此并不能通过死锁日志立即定位

出死锁的原因,应当及时协同开发模拟出死锁过程,分析死锁产生原因,修改程序逻辑。

(二)如何降低死锁发生的概率

1、尽量使用短小事务,避免大事务

2、加FOR UPDATE/LOCK IN SHARE MODE锁时,最好降低事务隔离级别,例如用RC级别,降低死锁发生概率,也可以降低锁定粒度

3、事务中涉及多个表,或者涉及多行记录时,每个事务的操作顺序都要保持一致

4、通过索引优化SQL效率,降低死锁概率,避免全表扫描导致锁定所有数据

5、程序中应有事务失败检测及自动重复提交机制

6、高并发(秒杀)场景中,关闭innodb_deadlock_detect选项,降低死锁检测开销,提高并发效率

二、MongoDB有哪些优秀特性及适合的场景是什么

(一)优秀特性

1、实用性:面向类json富文档数据模型,对开发人员天然的友好

2、可用性:基于raft协议的自动高可用,轻松提供99.999%的可用性

3、扩展性:对分片集群的支持,为业务提供了友好的水平扩展

4、高性能:嵌套模型设计支持,减少了离散写,充分的物理内存利用率,避免了磁盘读

5、强压缩:WiredTiger引擎提供多种数据压缩策略,2~7倍的压缩比,大大节省了磁盘资源

(二)适合的场景

1、无多文档事务及多表关联查询需求

2、业务快速迭代,需求频繁变动行业

3、单集群并发过大无法支撑业务增长

4、数据量增长预期TB及以上存储需求

5、期望要求99.999%数据库高可用场景

三、GO语言对比其他的编程语言有何优势?实际生产环境如何取舍?

1、天生支持高并发,强一致语言,开发效率高兼具线上运行稳定安全

2、垃圾回收,不用关心内存分配与回收

3、强大的GMP模型,异步处理,支持高并发,小白也能轻松写出高并发代码

在实际生产环境中建议从如下几个方面考虑:

1、看业务场景,电商,大数据处理有现成的解决方案,不适合用。另外数学运算,cpu 密集型的也不用。

2、GO 擅长快速出业务原型,迭代开发效率高,初创公司强推

3、看公司开发的技术栈,如果差异较大,那么选用 GO的话上手更快,编程风格也能统一起来

四、一个大事务,有很多更新,现在被回滚了,但是又着急关机重启,怎么办才好?

1、首先,尽量避免在MySQL中执行大事务,因为大事务将会带来主从复制延迟等问题

2、大事务被kill,MySQL会自动进行回滚操作,通过show engine innodb status的TRANSACTIONS可以看到ROLLING BACK的事务,并且在回滚操作的时候仍然会持有相应的行锁

3、此时如果强行关闭MySQL,等到MySQL再次启动后,仍然会进行回滚动作

4、因此,为确保数据安全,建议还是耐心等待回滚完成以后再进行关机重启。关机重启前,可以调低innodb_max_dirty_pages_pct让脏页尽量刷新完毕,并且关闭innodb_fast_shutdown

5、假如实在没有办法需要关机的情况下,可以kill -9先关闭MySQL,前提是需要设置双一保证事务安全,否则可能丢更多事务数据。然后重启实例后innodb会自行crash recovery回滚之前的事务

PS, kill -9是高危操作,可能导致MySQL无法启动等不可预知的问题,请谨慎使用

五、如何降低UPDATE/DELETE时WHERE条件写错,或者压根没写WHERE条件带来的影响

1、尽量不要在线手工执行任何SQL命令,很容易出差错。线上直接执行SQL命令最好有第二检查人帮助确认

2、最好在测试环境执行SQL确认无误后,再到生产环境执行,或者提前在本地文本环境编辑好确认后再执行

3、建议打开sql_safe_updates选项,禁止没有WHERE条件或者不加LIMIT或者没有使用索引条件的UPDATE/DELETE命令被执行。也可以在用mysql客户端连接到服务器端时增加--safe-updates选项,例如:mysql --safe-updates -h xx -u xx

4、线上手动执行DML操作时,先开启事务模式,万一误操作可以回滚。例如:mysql> begin; update xxx; rollback;

5、通过DB管理平台执行DML操作,且在平台上增加对此类危险SQL的判断,直接拒绝危险SQL的执行

6、配置延迟从库,发现误删除数据后,从延迟从库快速恢复数据

六、MySQL如何控制用户输错密码尝试次数?

(一)插件辅助

从官方MySQL5.7.17开始,提供了CONNECTION_CONTROL和CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS插件,该插件又提供了connection_control_failed_connections_threshold、connection_control_min_connection_delay、connection_control_max_connection_delay三个参数

1、connection_control_failed_connections_threshold

该参数的含义是控制登陆失败多少次数后开启延迟登陆

2、connectioncontrolminconnectiondelay

该参数分别表示超过失败次数后每次重新连接最小的延迟时间,延迟计算公式为(当前失败总次数-失败阈

值)connectioncontrolminconnection_delay,因此错误尝试次数越多那么延迟时间也是越大

3、connection_control_max_connection_delay

最大延迟时间,超过该值后客户端可重新连接

4、安装插件后,可通过监控Connection_control_delay_generated状态值和INFORMATION_SCHEMA下的表CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS来监控错误登录尝试次数

(二)错误日志监控

通过定时扫描MySQL错误日志来捕获账号密码错误次数,达到某个阈值以后可在系统防火墙屏蔽对应的主机ip达到屏蔽账号的目的(具体操作视情况而定)

如:错误日志会显示2019-05-10T13:04:41.232259Z 5 [Note] Access denied for user 'xucl'@'127.0.0.1' (using password: YES)

(三)其他说明

1、有些同学会误以为max_connection_errors能够控制错误密码的尝试次数,其实该参数只能防止如telnet类的端口探测,即记录协议握手错误的次数

2、最后,在生产环境一定要关注aborted_clients和aborted_connects的状态,发生异常必须及时关注

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 主要来自 《高性能MySQL(第3版)》 《MySQL管理之道:性能调优、高可用与监控(第2版)》 《MyS...
    FengXQ阅读 542评论 0 0
  • 1 MySQL的三种锁 1.1 表锁 开销小,加锁快 不会出现死锁 锁定粒度大,发生锁冲突的概率最高,并发度最低 ...
    JavaEdge阅读 641评论 0 1
  • 一、概述 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种...
    不变甄心阅读 2,732评论 0 3
  • 今天的风太大了,早晨睡了一个懒觉,吃完饭就收拾东西回娘家,给父母准备好吃的好喝的,我还跟闺女开玩笑说,看见没有,我...
    朵朵_4876阅读 211评论 0 0
  • 先讲讲这周开心的事情吧,3.7号,我们一组人去了北京很有名的叫做局气的饭店,一是新的一年聚一次餐二呢也是为...
    教练我想喝酸奶阅读 181评论 1 0