MySQL主从复制

作者&投稿:殷容 (若有异议请与网页底部的电邮联系)
~ 前言:

我们在平时工作中,使用最多的数据库就是MySQL了,随着业务的增加,如果单单靠一台服务器的话,负载过重,就容易造成宕机。

这样我们保存在MySQL数据库的数据就会丢失,那么该怎么解决呢?

其实在MySQL本身就自带有一个主从复制的功能,可以帮助我们实现负载均衡和读写分离。

对于主服务器(Master)来说,主要负责写,从服务器(Slave)主要负责读,这样的话,就会大大减轻压力,从而提高效率。

什么是MySQL的主从复制?

MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。

MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

主从复制的原理

①当Master节点进行insert、update、delete操作时,会按顺序写入到binlog中。

②salve从库连接master主库,Master有多少个slave就会创建多少个binlogdump线程。

③当Master节点的binlog发生变化时,binlogdump线程会通知所有的salve节点,并将相应的binlog内容推送给slave节点。

④I/O线程接收到binlog内容后,将内容写入到本地的relay-log。

⑤SQL线程读取I/O线程写入的relay-log,并且根据relay-log的内容对从数据库做对应的操作。

MySQL主从形式

一主一从

主主复制

一主多从

多主一从

联级复制

主从复制延时解决方案

半同步复制

从MySQL5.5开始,MySQL已经支持半同步复制了,半同步复制介于异步复制和同步复制之间,主库在执行完事务后不立刻返回结果给客户端,需要等待至少一个从库接收到并写到relaylog中才返回结果给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一个TCP/IP往返耗时的延迟。

主库配置sync_binlog=1,innodb_flush_log_at_trx_commit=1

sync_binlog的默认值是0,MySQL不会将binlog同步到磁盘,其值表示每写多少binlog同步一次磁盘。

innodb_flush_log_at_trx_commit为1表示每一次事务提交或事务外的指令都需要把日志flush到磁盘。

注意:将以上两个值同时设置为1时,写入性能会受到一定限制,只有对数据安全性要求很高的场景才建议使用,比如涉及到钱的订单支付业务,而且系统I/O能力必须可以支撑!

解决从库复制延迟的问题:

优化网络

升级Slave硬件配置

Slave调整参数,关闭binlog,修改innodb_flush_log_at_trx_commit参数值

升级MySQL版本到5.7,使用并行复制




什么情况会导致MySQL主从复制延迟
1.网络的延迟 由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。2.主从两台机器的负载不一致 由于mysql主从复制是主数据库上面启动1个io线程...

MySQL 主从,5 分钟带你掌握
MySQL 主从还能做到服务高可用,当主库宕机时,从库可以切成主库,保证服务的高可用,然后主库也可以做数据的容灾备份。整体场景总结如下:MySQL 的主从复制是依赖于 binlog 的,也就是记录 MySQL 上的所有变化并以二进制形式保存在磁盘上二进制日志文件。主从复制就是将 binlog 中的数据从...

关于mysql 主从复制的错误
项目上 MySQL 还原 SQL 备份经常会碰到一个错误如下,且通常出现在导入视图、函数、存储过程、事件等对象时,其根本原因就是因为导入时所用账号并不具有SUPER 权限,所以无法创建其他账号的所属对象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for ...

MySQL主从复制:Slave_SQL_Running:No是怎么回事?
表示主从复制断开了,看Last_Sql_Error就是最后的错误,两个错误都是数据表已经存在了,建议在你的my.cnf配置中忽略这些错误,如:slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误 你图上的错误号码就是 1050

mysql 主从如何设置同步
mysql 主从同步设置 同步介绍 mysql的 主从同步 是一个异步的复制过程,从一个 Master复制到另一个 Slave上。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。 要实现 MySQL 的 主从同步 ,首先必须...

Mysql 的主从复制,最多支持多少个数据库同步,最佳的建议是几个?_百度...
主从复制理论上支持无穷大的从库个数,实际情况下,受服务器带宽和读写能力的影响 请参考mysql官方手册的建议:理论上,通过使用单个主服务器\/多从服务器设置,可以通过添加更多的从服务器来扩充系统,直到用完网络带宽,或者你的更新负载已经增长到主服务器不能处理的点。在获得的收益开始吃平之前,为了...

如何在一台windows主机上搭建mysql主从复制
mysql>start slave;查看从数据库的信息 mysql>show slave status \\G;如果出现: Slave_IO_Running: YesSlave_SQL_Running: Yes以上两项都为Yes,那说明没问题了 测试主从复制是否有效果 在主数据库中创建一个新的数据库,然后再切换到从数据库查看是否同样多出通名的数据库 配置旧数据库的主从复制 ...

mysql主从复制原理,异步怎么回事?半同步怎么回事
研发的同事反馈,mysql的半同步怎么变异步了?开始觉得不足为奇,超时之后,自然变成异步了。但同步binlog的速度变得正常之后,就会自动变成同步了。但抱着严谨负责的态度,马上去检查了一 下数据库的日志跟半同步的状态。看了一下从库的错误日志,被图片中所示的sem-sync slave net_flush() reply ...

什么情况会导致MySQL主从复制延迟
该工具可以计算出MySQL复制或者是PostgreSQL,它可以更新master或者监控复制。它还可以从my.cnf 读取配置。它借助timestmp的比较实现的,首先需要保证主从服务器时间必须要保持一致,通过与相同的一个NTP server同步时钟。它需要在主库上创建一个heartbeat的表,里面的时间戳ts就是当前的时间戳 now(),该结构...

MYSQL主从同步,新增的表会不会自动在从服务器同步
当然会,mysql主从复制是通过binlog日志来进行了。master会生成binlog日志,slave会开启2个线程,一个IO线程,主要是连接master,将master的binlog复制到slave的中继日志中,另外一个则是sql线程,会读取中继日志执行基于语句的复制(mysql默认是基于语句的复制),将master的变化复制到slave中。此外还有基于行...

天桥区13491609750: mysql主从复制是什么概念?什么场合用?最好举例说明. -
雀阮果糖: 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是实时的业务数据库1. MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 最流行的关系型数...

天桥区13491609750: 如何配置MySQL数据库主从复制 -
雀阮果糖: MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维 护日志文件的一个索引以跟踪日志循环.当一个从服务器连接到主服务器时,它通知主服...

天桥区13491609750: MySQL的主从复制原理以及流程 -
雀阮果糖: 原理:master将数据库的改变写入二进制日志,slave同步这些二进制日志,并根据这些二进制日志进行数据重演操作,实现数据异步同步.流程:1. slave端的IO线程发送请求给master端的binlog dump线程2. master端binlog dump线程获取二进...

天桥区13491609750: mysql主从复制,是从库是拉还是推 -
雀阮果糖: mysql的主从复制开启之后,从数据库会立马复制主数据库中的数据. 然后,对主数据库进行增,删,改操作之后,从数据库也会进行相同的操作. 不过,对从数据库进行增,删,改操作的话,对主数据库是没有任何影响的

天桥区13491609750: mysql的读写分离和主从复制的区别在哪里 -
雀阮果糖: 从目的上来说都是减小服务器压力,运转效率更高,也更有利于信息的管理 区别在于读写分: 是一个表只负责向前端展示数据,后台管理人员对数据库表进行的增删改会在另一个表里,把这两个表给他分开,各管各的,这就是读写分离主从复制:一般就是一个表在增删改之后会及时更新到另外一个表里,保证他两数据室一样的

天桥区13491609750: MYSQL主从复制,从服务器相关问题 -
雀阮果糖: 是接着你从mysql关闭的点的位置继续复制的.建议使用mysql5.5及以上的版本,有校验功能.之前版本是没有的校验功能的.

天桥区13491609750: 如何添加新数据库到mysql主从复制列表 -
雀阮果糖: 首先,我们大概罗列一下主从复制的基本步骤,(MySQL主从首先需要在各自服务器配置好).1. 复制数据库.mysqldump --master-data --single-transaction -R --databases [db_name] | gzip -9 - | pv > all-db-with-master-data.sql.gz 注意:innodb...

天桥区13491609750: 如何在一台windows主机上搭建mysql主从复制 -
雀阮果糖: 1、首先要在本地建立两个mysql服务(参考这里),指定不同的端口.这里一个主(3306),一个从(3307).2、然后修改主配置文件:[mysqld] server-id = 1 binlog-do-db=test #要同步的数据库#binlog-ignore-db=mysql #不同步的数据库,如...

天桥区13491609750: mysql主从复制原理? -
雀阮果糖: 当数据变化时触发同步指令将变化的数据发送到从数据库由其进行更新

天桥区13491609750: mysql主从复制主服务器和从服务器哪个消耗的大? -
雀阮果糖: 如果是一主一从,只是这个复制过程的话那消耗差不多的资源;不过一般都是一主多从,这样主的压力就打了,他需要给多个从传送日志文件,还要自己的写任务.所以一般都是把读放在从服务器,降低主的压力.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网