当前位置: 主页 > 数据库

master数据库-axi master写数据时序

发布时间:2023-02-11 07:08   浏览次数:次   作者:佚名

复制

复制是将数据从一台 MySQL 服务器(主)复制到另一台或多台 MySQL 服务器(从)的过程。 复制是异步的——从服务器不需要保持连续的连接来接收来自主服务器的数据。 根据配置的不同master数据库,可以复制所有数据库,也可以复制指定的数据库,甚至可以复制某个数据库中指定的表。

使用复制功能的目的是:

横向扩展解决方案——通过在多台服务器之间分配负载来提高性能。 在此环境中,所有写入和更新操作都在主服务器上执行,而读取操作则发生在一台或多台从服务器上。

数据安全--因为数据是复制到slave上的,而且slave可以暂停复制过程,可以在不破坏master数据的情况下备份到slave服务器上

分析——实时数据在master上创建,但可以在slave服务器上进行数据分析,不影响master的性能

异地数据分发--如果分公司需要总公司数据的副本工作,可以通过复制创建本地副本,这样就不需要长时间访问主服务器

MySQL的复制是单向异步的,这与MySQL Cluster的同步复制特性正好相反。 MySQL5.5支持半同步(semisynchronous),即在master上提交后,不会立即返回,而是等待至少一个slave在确认当前事务已经接收并记录后返回。

最好的复制方式与数据的展示方式和你选择的存储引擎有关。 有两种核心复制格式:SBR(Statement Based Replication)——复制所有SQL语句,和RBR(Row Based Replication)——只复制改变的行。 当然可以选择三种方式: MBR(Mixed Based Replication),这也是MySQL5.5以后版本的默认模式。

复制配置

MySQL 服务器之间的复制使用二进制日志机制。 对master的更新和变更会作为事件记录在日志中,日志中的信息会根据变更情况以不同的格式记录。 从机配置为从主机读取日志,将二进制日志中的事件执行到从机本地数据库。 一旦master启动二进制日志功能,所有的statement操作都会被记录下来,每个slave都会收到一份完整的日志内容。 slave 的职责是决定需要执行日志中的哪条语句,我们不能配置 master 只记录某些特定的事件。 如果不指定,则主服务器二进制日志中的所有事件都在从服务器上执行。 如果需要master数据库,还可以将从站配置为仅应用来自特定数据库或表的事件。

每个slave都会保存一份二进制日志文件的记录,记录自己读取和处理过的记录的位置。 这意味着多个slave可以连接到master并执行日志的不同部分,因为slave本身控制着这个过程,单个slave的断开和连接不会影响master的操作。 同时,由于每个slave都会在binary log中记录位置,所以slave可以断开连接,重新连接,然后从记录的位置开始。