设为首页 收藏本站
查看: 327|回复: 0

[经验分享] MySQL Replication 常用SQL、应用、文件、流程、模式

[复制链接]

尚未签到

发表于 2016-10-18 08:33:15 | 显示全部楼层 |阅读模式
无聊时写的,算给自己科普吧,毕竟内置的Replication是MySQL的骄傲


㈠ SQL语句篇


管理主库部分


  show master logs
  列出主库二进制日志

  show master status
  列出当前主库二进制日志状态

  show slave hosts
  列出连接到主库的备库信息

  show binlog events in 'log_name'
  列出二进制日志中的事件

  reset master
  置空二进制日志索引文件,并创建一个新的二进制日志

  purge master logs to 'log_name'
  purge master logs before 'date'
  删除主库的二进制日志
  建议删除流程:
  ① 目标日志确认如下:
   在主库:show master logs
   在备库:show slave status[每个备库都执行,抓取延迟最大的备库]
  ② 备份
  ③ purge


管理备库部分


  change master to master_**
  告诉备库如何连接到主库并重放其二进制日志
  参数较多较杂,请自行参阅手册

  reset slave
  删除master.info、relay-log.info以及所有中继日志,并新建一个中继日志

  show slave status
  查看当前备库状态
  输出较多,下面捡几个重要的谈谈
  Slave_IO_State、Slave_IO_Running、Slave_SQL_Running:表示IO线程和SQL线程健康状况
  Master_Log_File:IO线程当前正在读取的主库的二进制日志的名称
  Read_Master_Log_Pos:当前主库的二进制日志中,IO线程已经读取的位置
  Relay_Log_File:SQL线程当前正在读取和执行的中继日志的名称
  Relay_Log_Pos:当前中继日志中,SQL线程已经读取和执行的位置
  Exec_Master_Log_Pos:同步到备库的二进制日志的位置

  能借助该输出来计算复制延迟:

  Read_Master_Log_Pos-Exec_Master_Log_Pos:表示SQL线程延迟,进而表示了主备是否同步
  顺道提一点,二进制日志坐标:Position,减去Read_Master_Log_Pos:表示IO线程延迟

  start slave
  启动备库SQL线程/IO线程

  stop slave
  停止备库SQL线程/IO线程


㈡ 应用篇


数据分布
  →给地理上互相隔离的IDC分发数据
热备份
  →复制是备份的技术补充,但不能代替备份
读扩展
  →负载均衡
报表分析
  →在不影响主库业务的情况下,月底的审计和报表分析可放到备库上做
升级测试
  →用最新版本的mysql做备库
故障转移
  →提升备库为主库,最小化宕机时间



㈢ 文件篇


master.info
记录备库连接主库所需要的信息,如:主机、用户名、密码、当前二进制日志坐标等
同时,他也能告诉主库:"我需要某个日志的某个位置之后的内容,请发给我"

relay-log.info
记录当前备库正在复制的二进制日志和中继日志的坐标

binlog index
记录主库磁盘上二进制日志文件

relay log
存储IO线程从主库复制的二进制日志事件

relay log index
作用同binlog index




㈣ 流程篇


⑴ 主库记录二进制日志:按事务提交的顺序记录事件
⑵ 备库将主库的二进制日志复制到本地中继日志

   启动IO线程
   发起TCP/IP连接
   在主库启动binlog dump线程
   读取主库二进制日志
   IO线程记录到relay log和master.info

⑶ 备库读取并重放二进制日志事件



㈤ 模式篇


复制模式可分:STATEMENT和ROW,通过binlog_format控制
没有哪种模式能胜任任何场景,谓之:存在即是合理
MySQL能在这两种模式动态却换(binlog_format='MIXED')
缺省以STATEMENT运行,当无法正确复制时则以ROW运行

下面列出他们各自的优缺点

ROW模式

优点

几乎没有基于行的复制无法处理的场景
更少的锁竞争,因为对强串行化的需求降低
更低的CPU花费,因为没有必要在构造SQL上下文信息
更好的保证了复制到备库的数据的品质
更快的定位和解决数据不一致,如当找不到修改的行时,ROW模式会使整个复制过程停止而STATEMENT不会

缺点

无法确定执行了什么SQL
黑盒子,很难定位出故障的地方
占用更多的磁盘空间
更多的网络带宽开销


STATEMENT模式

优点

基于行的复制整个过程基本上就是执行SQL
这很容易定位问题

缺点

无法正确复制,特别是当涉及到存储过程、触发器、函数等
   这会失去复制的意义
  

  

  By DBA_WaterBin
  2013-09-02
  Good LUCK

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-287712-1-1.html 上篇帖子: mysql怎么让一个存储过程定时执行 下篇帖子: Mysql中MyISAM、InnoDB两种表类型的区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表