zoukankan      html  css  js  c++  java
  • MySQL线上执行大事务或锁表操作

    前提

    在线执行一些大事务或锁表操作(给某个核心级表加一列或者执行修改操作),此时不但主库从库要长时间锁表,主从延迟也会变大。未避免大事务sql对整个集群产生影响,,我们希望一条SQL语句只在Master数据库上执行,而不复制到Slave数据库.这时候,sql_log_bin这个参数正是需要的。我们就可以这样操作:
    1.先在备库执行
    原slave mysql>set sql_log_bin=0;
    原slave mysql>大事务sql
    
    2.切换主备节点
    
    3.在原主库再执行
    原master mysql>set sql_log_bin=0;
    原master mysql>大事务sql
    
    4.再次切换主备
    使用这个参数是需要注意几点:
    1、千万不要不假思索的加上 global 修饰符(set global sql_log_bin=0),这样会导致所有在Master数据库上执行的语句都不记录binlog,这肯定不是你想要的结果。
    2、INSERT、UPDATE、DELETE的SQL语句会导致Master和Slave数据库数据不一致,要谨慎操作。在数据库执行操作时,一定要保持头脑清醒,一定要非常清楚自己在做什么
  • 相关阅读:
    macOS下Go语言开发环境的搭建
    yii使用createCommand()增删改查
    php in_array问题,0与字符串比较问题
    PHP shortURL
    redis集群批量删除某些key
    git tag的用法
    JSON Web Token(JWT)
    C# Stopwatch详解 转
    转::CString 操作指南
    MFC VC 中 TreeView 解析
  • 原文地址:https://www.cnblogs.com/polestar/p/5826471.html
Copyright © 2011-2022 走看看