MySQL Replication常用SQL、应用、文件、流程、模式_MySQL
bitsCN.com
MySQL Replication常用SQL、应用、文件、流程、模式
无聊时写的,算科普吧,毕竟内置的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
这很容易定位问题
缺点
无法正确复制,特别是当涉及到存储过程、触发器、函数等
这会失去复制的意义
bitsCN.com

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

二进制算法是一种基于二进制数的运算方法,其基本运算包括加法、减法、乘法和除法。除了基本运算外,二进制算法还包括逻辑运算、位移运算等操作。逻辑运算包括与、或、非等操作,位移运算包括左移和右移操作。这些操作都有对应的规则和操作数的要求。

EDVAC的两个重大的改进:一是采用二进制,二是完成了存贮程序,可以自动地从一个程序指令进到下一个程序指令,其作业可以通过指令自动完成。“指令”包括数据和程序,把它们用码的形式输入到机器的记忆装置中,即用记忆数据的同一记忆装置存贮执行运算的命令,这就是所谓存贮程序的新概念。

二进制数以1和0表示。16位的十六进制数系统为{0,1,2,3…..9,A(10),B(11),……F(15)}为了从二进制表示转换为十六进制表示,位串id被分组为4位块,从最低有效侧开始称为半字节。每个块都替换为相应的十六进制数字。让我们看一个示例,以清楚地了解十六进制和二进制数字表示。001111100101101100011101 3 E 5 B&nb

Golang如何读取二进制文件?二进制文件是以二进制形式存储的文件,其中包含了计算机能够识别和处理的数据。在Golang中,我们可以使用一些方法来读取二进制文件,并将其解析成我们想要的数据格式。下面将介绍如何在Golang中读取二进制文件,并给出具体的代码示例。首先,我们需要使用os包中的Open函数打开一个二进制文件,这将返回一个文件对象。然后,我们可以使

计算机采用二进制的主要原因:1、计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示;2、二进制中只使用0和1两个数字,传输和处理时不易出错,因而可以保障计算机具有很高的可靠性。

题目:轻松学会Go语言中16进制转二进制,需要具体代码示例在计算机编程中,经常会涉及到对不同进制数之间的转换操作。其中,16进制和二进制之间的转换是比较常见的。在Go语言中,我们可以通过一些简单的代码示例来实现16进制到二进制的转换,让我们一起来学习一下。首先,我们来了解一下16进制和二进制的表示方法。16进制是一种表示数字的方法,使用0-9和A-F来表示1

Golang能否处理二进制文件?在Go语言中,处理二进制文件是非常常见且方便的。通过使用内置的包和方法,我们可以轻松地读取、写入和操作二进制文件。本文将介绍如何在Go中处理二进制文件,并提供具体的代码示例。读取二进制文件要读取一个二进制文件,我们首先需要打开这个文件并创建一个对应的文件对象。然后,我们可以使用Read方法从文件中读取数据,并以字节的形式存储在
