MySQL Replication 常用SQL、应用、文件、流程、模式

标签: mysql replication sql | 发表时间:2013-09-03 03:40 | 作者:linwaterbin
出处:http://blog.csdn.net
无聊时写的,算科普吧,毕竟内置的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


作者:linwaterbin 发表于2013-9-2 19:40:59 原文链接
阅读:84 评论:0 查看评论

相关 [mysql replication sql] 推荐:

MySQL Replication 常用SQL、应用、文件、流程、模式

- - CSDN博客数据库推荐文章
无聊时写的,算科普吧,毕竟内置的Replication是MySQL的骄傲.     列出当前主库二进制日志状态.     列出连接到主库的备库信息.     列出二进制日志中的事件.     置空二进制日志索引文件,并创建一个新的二进制日志.     删除主库的二进制日志.     ① 目标日志确认如下:.

MySQL Replication 线程

- - CSDN博客推荐文章
Replication 线程. Mysql 的Replication 是一个异步的复制过程,从一个Mysql instace(我们称之为Master)复制到另一个Mysql instance(我们称之Slave). 在Master 与Slave 之间的实现整个复制过程主. 要由三个线程来完成,其中两个线程(Sql 线程和IO 线程)在Slave 端,另外一个线程(IO 线程)在Master 端.

MySQL 平行執行的 Replication…

- - Gea-Suan Lin's BLOG
「 MySQL Replication – Multi-Threaded Slaves (Parallel Event Execution)」這篇在講 MySQL 5.6 的 multi-threaded replication. 在文章裡提到,在 5.6.3 之前的版本,MySQL replication 都是 single-threaded,所以當 master 可以充分發揮多 CPU 能力時,slave 仍然要一個更新跑完才會跑下一個更新.

MySQL 5.6 测试之 Replication(主从复制)

- - MySQL 中文网 -
MySQL 5.6测试之Replication. MySQL 5.6版本相比以前新增了很多令人激动的特性,简要介绍见: 转:MySQL 5.6新特性. 性能方面已经做过测试了,详细请见: MySQL 5.6 vs MariaDB 5.5 vs Percona(5.5 & 5.6) 之TPCC性能测试.

MySQL半同步复制(Semisynchronous Replication)

- - IT技术博客大学习
MySQL5.5引入了半同步复制(Semi-synchronous Replication),以下是对于半同步复制的认知和理解:. 半同步启动需要主从两端都需要加载安装各自对应的semi模块,从库端支持半同步功能的数量至少一台;主库端当一个事务成功提交后,并不及时反馈给前端用户,该线程会被临时block,等待由从库端返回确认该条事务也同时成功写入到relay log中的receipt(回执确认),这时主库线程才返回给当前session告知操作完成,半同步复制并不关心在从库一端该事务是否都被执行并被提交完成.

[玩转MySQL Replication] 复制拓扑

- - CSDN博客数据库推荐文章
     朴实简单的才是真、那些高端洋气的复制拓扑纯属自虐.      实施复制大概会有 4 个原则:.      ① 一个主库可以有多个备库.      ② 一个备库只能有一个主库.      ③ 每个备库 Server ID全局唯一.      ④ log_slave_updates 有薪火相传之效用.

relay fetch 解决mysql replication 主从延迟

- - CSDN博客推荐文章
      mysql replication 中主从延迟是一个比较常见的问题,请看前期一篇博文: 怎样解决MySQL数据库主从复制延迟的问题. 根据目前有些公司使用的方案,最近测试了两个,其中之一是阿里的relay fetch ,业绩说法数据预热,当然也有其他开源类似开源工具,目前诸如 mk-slave-prefetch及 replication-prefetch等,感兴趣可以去看看.

MySql动态SQL

- - SQL - 编程语言 - ITeye博客
13.7. 用于预处理语句的SQL语法. MySQL 5.1对服务器一方的预制语句提供支持. 如果您使用合适的客户端编程界面,则这种支持可以发挥在MySQL 4.1中实施的高效客户端/服务器二进制协议的优势. 候选界面包括MySQL C API客户端库(用于C程序)、MySQL Connector/J(用于Java程序)和MySQL Connector/NET.

MySQL Master-Slaver Replication 讓資料庫資料有備援

- - SSORC.tw
重新複習一下  資料庫同步 – MySQL + replication. Master / Slaver 架構就是要讓 MySQL 資料庫系統有著備援的保障. 基本運作方式就是,MySQL  Master 這台上只要有新增刪除修改,就會記錄在 binlog 檔裡,這時 Slaver 就可以透過 Master 授權的帳號去同步資料 ( Replication ),這是單向的.

mysql记录耗时的sql

- - 数据库 - ITeye博客
mysql记录耗时的sql. mysql可以把耗时的sql或未使用索引的sql都记录在slow log里,供优化分析使用. 1.mysql慢查询日志启用:. mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql的慢查询日志记录呢. 这说明slow log功能没有启用,要启用需要修改mysql的配置文件,在配置文件"[mysqld]"里添加如下俩参数:.