沃趣科技mysql数据一致性_第1页
沃趣科技mysql数据一致性_第2页
沃趣科技mysql数据一致性_第3页
沃趣科技mysql数据一致性_第4页
沃趣科技mysql数据一致性_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MySQL数据一致性杭州沃趣科技股份有限公司H2an0gz1ho5u

.W1O1Q.U0T3echnology

Co.,

Ltd.01目录MySQL崩溃恢复安全性02MySQL复制原理及异步、semi-sync复制03MySQL主备复制如何保证数据一致性杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.01目录MySQL崩溃恢复安全性02MySQL复制原理及异步、semi-sync复制03MySQL主备复制如何保证数据一致性杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.Innodb崩溃恢复安全性如何保证undo-log实现事务的原子性(记录着数据变更前的记录,用于回滚没有提交的事务)redo-log实现事务的持久性,和Undo

Log相反,Redo

Log记录的是发生新的修改的数据。恢复时可以根据Redo

Log的内容,将所有数据恢复到最新的状态杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.undo+redo简单的事务执行过程和特点假设表中有A、B两个数据,值分别为1、2,事务执行update时的简单过程如下:begin,undo

logredo

logundo

logredo

logredo

logcommit,事务开始记录A=1记录A=3记录B=2记录B=4把A、B修改落盘提交事务杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.undo+redo简单的崩溃恢复过程如何使用redo

log、undo

log简单崩溃恢复如下:checkpoint点prepare状态redo

logundo

logchange

buffermerge,undo

purge主要是为了加快crash

恢复的速度用checkpoint标记数据落盘到哪个位置了,对于checkpoint之前的部分,不需要再用redo

log恢复,因为数据已经的部分.prepare状态之前的事务,会直接回滚,杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.prepare状态的事务,如果binlog已经落盘,落盘了,只需要应用checkpocinht点e之ck后point是什么?

则重新提交,否则回滚控制redo

log如何刷新的参数主库参数优化:

mit=1杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.Double

writedouble

write

作用?避免部分写double

write

组成?内存和磁盘各两个1M组成杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.01目录MySQL崩溃恢复安全性杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.0203MySQL主备复制如何保证数据一致性MySQL复制原理及异步、semi-sync复制MySQL的复制的应用场景•利用从库做读能力提升(读写分离)利用从库做读能力提升(读写分离)•利用从库做master故障的接管(故障切换)利用从库做master故障的接管(故障切换)•利用从库做备份减少对业务的影响利用从库做备份减少对业务的影响•利用从库做升级(升级MySQL版本或者升级业务数据库结构)利用从库做升级(升级MySQL版本或者升级业务数据库结构)•利用从库做特殊的SQL统计(如count,group

by,sum)利用从库做特殊的SQL统计(如count,group

by,sum)12345杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.MySQL

如何实现复制Binlog

Dump杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.二阶段提交sync-binlog=1log-bin=mysql-bin开启binary

logInnodb_support_xa=1多线程并发执行提交事务,按照事务的先后顺序写入binlog。杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.MySQL

binlog的格式发展MySQL5.1.5MySQL5.1.5MySQL5.1.8之前及其之后及其之后只支持statement新增支持row格新增支持mixed格式式格式杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.MySQL

Binary

log三种格式的区别Mixed=statement+row:mysql默认采用statement格式进行二进制日志文件的记录,但是在一些情况下会使用row格式,可能使用row格式的情况有:1)表的存储引擎为NDB,这时对表的DML操作都会以row格式记录

2)使用了uuid(),user(),current_user(),found_rows(),row_count()等不确定函数

3)使用了insert

delay语句使用了用户自定义函数UDF使用了临时表Statement:记录的是逻辑SQL优点是日志量小缺点是执行一些不确定的函数(如uuid(),now())会出现主从数据不一致Row:记录的不再是简单的SQL语句了(DDL还是记录的SQL),而是记录的表的行更改的情况优点是解决了statement格式下主从数据不一致的问题,所有数据都可以安全地复制缺点是日志量大,影响从库日志的复制时间杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.Binary

log格式-statement格式记录的内容Binary

log格式-row格式记录的内容MySQL复制原理Master节点配置[mysqld]log-bin=mysql-binserver-id=1Slave节点配置[mysqld]server-id=2Binlog

Dump杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.Slave查看复制详情show

slave

status\GMysql>show

slavestatus\GSlave_IO_Running:YESSlave_SQL_Running:YES杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.场景一:Master主库正常关机从库重连间隔参数:master_connect_retry=10杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.场景二:Master主库异常InternetMASTER

SLAVEslave_net_timeoutmaster_connect_retrymaster_retry_count默认值3600秒默认值60秒,changemaster语句可设置默认值86400次,changemaster语句可设置杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.官方半同步复制原理杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.5.7增强半同步原理杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.开启semi-sync主备复制主库Master安装插件semisync_master.so并配置f:mysql>

install

plugin

rpl_semi_sync_master

SONAME

'semisync_master.so';[mysqld]rpl_semi_sync_master_enabled=1rpl_semi_sync_master_timeout=1000

#

1

second从库slave安装semisync_slave.so插件并配置f:mysql>

install

pluginrpl_semi_sync_slave

SONAME

'semisync_slave.so';[mysqld]rpl_semi_sync_slave_enabled=1查看当前semi-sync变量设置:mysql>

SHOW

VARIABLES

LIKE

‘rpl_semi_sync%’;查看当前semi-sync状态信息:mysql>

SHOW

STATUS

LIKE

'Rpl_semi_sync%';PS:如果从库已经启动了异步复制,那么在配置了semi-sync之后,备库需要先stop

slaveio_thread;startslaveio_thread;然后再使用参数setglobalrpl_semi_sync_slave_enabled=1;重新打开半同步杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.01目录MySQL崩溃恢复安全性02MySQL复制原理及异步、semi-sync复制03MySQL主备复制如何保证数据一致性杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.从库崩溃恢复之后,如何知道从主库的哪个位置开始复制?记录主机master连接信息、IO线程读取到的当前主机Binarylog文件名和日志偏移量master_info_repository=FILE时这些信息记录到文件中relay_记录本地SQL线程已经执行到的中继日志名称和主库对应的Binarylog文件名、偏移量relay_log_info_repository=FILE时这些信息记录到relay_文件中杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.IO线程和SQL线程的信息保存在文件中如何保证不丢失保存文件,崩溃时可能并没有落盘,导致丢失双sync参数设置为1,又会导致从库性能差,且因为binlogevent的更新与保存这个位置之间并不是原子操作,所以就算设置为1还是可能丢失这个位置杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.IO线程和SQL线程的信息保存在innodb表中如何保证不丢失relay_log_recovery=ON保存table,innodb表,可利用innodb崩溃恢复特性对于SQL线程信息保存在table中,mysql自身做了两个优化:

1、slave_relay_log_info表的update事务插入合并到SQL线程执行binlog的事务中,通过这个优化可以做到实时更新SQL线程杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.位置,并且保证了两者之间是一个原子操作。2、innodb本身支持group

commit,更新slave_relay_log_info也适用MySQL数据一致性--回顾基于binlog逻辑日志复制log-bin=mysql-bin#主库打开写binlog功能server-id=1#复制架构中全局唯一binlog_format=row

#row数时,只把真正的变更复制到从库mit=1#保证redo

实时落盘sync_binlog=1#保证binlog实时落盘

innodb_support_xa=1#保证binlog的写入顺序与事务提交顺序一致server-id=2

#复制架构中全局唯一innodb存储引擎自身通过rreeldaoy_lloo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论