mysql同步

一、概念介绍:

binlog: binary log,主库中保存更新事件sql日志的二进制文件,所有对数据库有影响的操作的sql语句都会按照发生顺序保存到binlog中(例如,create table,update,insert,delete等),binlog可设置过期时间,其中保存的sql是在过期时间内的语句,binlog是从库拉去执行sql的数据源。

主库:

binlog输出线程: 当有从库连接到主库时,主库就会创建一个binlog输出线程用于发送binlog的内容到从库中。

从库:

从库I/O线程:当从库执行START SLAVE语句之后,就会创建一个I/O线程用于连接到主库并请求主库发送binlog里面的更新记录到从库上。从库I/O线程读取主库的binlog输出线程发送的更新并拷贝这些更新到本地文件relay log文件。

从库的SQL线程:从库创建的一个SQL线程,这个线程读取从库I/O线程写到relay log的更新事件并执行。

可以知道,对于每一个主从复制的连接,都有三个线程。拥有多个从库的主库为每一个连接到主库的从库创建一个binlog输出线程,每一个从库都有它自己的I/O线程和SQL线程。

从库通过创建两个独立的线程,使得在进行复制时,从库的读和写进行了分离。因此,即使负责执行的线程运行较慢,负责读取更新语句的线程并不会因此变得缓慢。比如说,如果从库有一段时间没运行了,当它在此启动的时候,尽管它的SQL线程执行比较慢,它的I/O线程可以快速地从主库里读取所有的binlog内容。这样一来,即使从库在SQL线程执行完所有读取到的语句前停止运行了,I/O线程也至少完全读取了所有的内容,并将其安全地备份在从库本地的relay log,随时准备在从库下一次启动的时候执行语句。

二、同步方式

1.主从同步

执行步骤:

步骤一:主库db的更新事件(update、insert、delete)被写到binlog。

步骤三:主库的binlog输出线程通知从库有更新,并把binlog的更新内容发送给从库的I/O线程。

步骤四:从库的I/O线程,读取主库传过来的binlog内容并写入到relay log中。

步骤五:从库的SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db。

存在的问题:

  • 如果主库宕机,则数据丢失。
  • 从库存在复制延迟,造成数据不一致。

解决方法:

  • 数据丢失的问题---半同步复制
  • 从库复制延迟的问题---并行复制

2.半同步复制

半同步复制可解决数据丢失问题,需要安装插件。

执行过程:过程大概类似主从同步,区别在于:主库有更新事件sql执行完成后主库数据库不直接返回,而是先要阻塞确保当前更新事件至少写入了一个从库的relay log文件中(只要写入文件就可以,不需要保证执行),然后从库再返回主库已成功写入的状态,主库确认状态后再返回,阻塞等待可设置等待从库返回的超时时间。

存在的问题:

降低主库性能,因为需要等待从库的返回或超时。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL同步迁移是指将一个MySQL数据库从一个服务器迁移到另一个服务器,并保持数据的一致性。同步迁移可以用于数据中心的迁移,服务器的升级或故障恢复等。 在进行MySQL同步迁移时,首先需要确保目标服务器上已经安装了MySQL数据库,并且版本与源服务器一致或兼容。然后,需要创建一个与源服务器相同的数据库,并设置合适的权限以便进行数据迁移。 接下来,可以采用多种方式进行MySQL同步迁移,常见的方法有以下几种: 1. 使用mysqldump工具导出数据:通过在源服务器上使用mysqldump命令将数据库表结构和数据导出为一个SQL文件,然后将该文件复制到目标服务器上,并使用mysql命令将数据导入到目标服务器上的数据库中。 2. 使用mysqlbinlogmysql工具实现二进制日志同步:通过在源服务器上启用二进制日志功能,将数据库的变更操作记录到二进制日志中。然后,在目标服务器上使用mysqlbinlog工具分析二进制日志并生成一个SQL文件,最后使用mysql命令将该SQL文件中的数据导入到目标服务器上的数据库中。 3. 使用MySQL复制功能进行同步:通过在源服务器上启用MySQL复制功能,将所有的变更操作同步到一个或多个目标服务器上,从而实现数据的同步迁移。复制功能需要在my.cnf配置文件中进行相应的设置,并确保源服务器和目标服务器之间的网络连接正常。 无论采用哪种方式进行MySQL同步迁移,都需要仔细验证数据的完整性和一致性,确保数据的准确性。此外,还需要考虑MySQL服务的可用性、数据迁移的效率和迁移过程中的数据安全等方面的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值