mysql主备之间使用什么日志文件同步

mysql主备之间使用什么日志文件同步,第1张

主从同步主要是以binlog日志作为文件同步机制,具体如下

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

使用主从同步的好处:

通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。

提高数据安全-因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据

在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

注意,mysql是异步复制的,而MySQL Cluster是同步复制的。有很多种主从同步的方法,但核心的方法有两种,Statement Based Replication(SBR)基于SQL语句的复制,另一种是Row Based Replication(RBR)基于行的复制,也可以使用Mixed Based Replication(MBR)。在mysql5.6中,默认使用的是SBR。而mysql 5.6.5和往后的版本是基于global transaction identifiers(GTIDs)来进行事务复制。当使用GTIDs时可以大大简化复制过程,因为GTIDs完全基于事务,只要在主服务器上提交了事务,那么从服务器就一定会执行该事务。

mysql-cdc-projects

以下是关于不同方法的一些基本总结

flexcdc

Flexviews中包含的CDC工具称为FlexCDC,FlexCDC是用PHP编写的。FlexCDC读取二进制日志 Binary Log以确定哪些行已经更改。因此,FlexCDC使用基于行的二进制日志(RBR)。如果没有MySQL 5.1或者没有使用RBR,那么可以设置一个专用的MySQL从站,它有log_slave_updates = 1和binlog_format = row来处理来自MySQL主站的SBR更改。

FlexCDC不实现完整的二进制日志解析器。而是调用“mysqlbinlog”实用程序,并处理该程序的可预测输出。

databus

从数据源中读取变化的数据,并且将这些数据序列化保存在内存中;

Maxwell是一个守护程序,一个应用程序,能够读取MySQL Binlogs然后作为JSON写入Kafka,Kinesis,RabbitMQ,Google Cloud Pub / Sub或Redis的应用程序,支持表和库过滤。

进制日志,java读取binlog

mysql-binlog-connector-java

( http://www.phpabc.cn/yi-gou-shu-ju-ku-biao-zai-xian-tong-bu.html )

主要有以下几个概念:

BinaryLogClient,使用binlog的客户端

Event,数据增删改查等都被抽象为一个事件

EventListener,事件监听者,当事件发生时得到通知

EventFilter,事件过滤器,这样EventListener就可以只监听符合条件的事件

使用mysql-binlog-connector-java的方法

InnoDB使用会话临时表空间全局临时表空间。

在InnoDB配置为磁盘内部临时表的存储引擎时,会话临时表空间存储用户创建的临时表和优化器创建的内部临时表。从 MySQL 8.0.16 开始,用于磁盘内部临时表的存储引擎固定为InnoDB。(之前,存储引擎由internal_tmp_disk_storage_engine的值决定 )

在第一次请求创建磁盘临时表时会话临时表空间从临时表空间池中被分配给会话。一个会话最多分配两个表空间,一个用于用户创建的临时表,另一个用于优化器创建的内部临时表。分配给会话的临时表空间用于会话创建的所有磁盘临时表。当会话断开连接时,其临时表空间将被截断并释放回池中。服务器启动时会创建一个包含 10 个临时表空间的池。池的大小永远不会缩小,并且表空间会根据需要自动添加到池中。临时表空间池在正常关闭或中止初始化时被删除。会话临时表空间文件在创建时大小为 5 页,并且具有.ibt文件扩展名。

InnoDB为会话临时表空间保留了40 万个空间 ID。因为每次启动服务器时都会重新创建会话临时表空间池,所以会话临时表空间的空间 ID 在服务器关闭时不会保留,并且可以重复使用。

innodb_temp_tablespaces_dir 变量定义了创建会话临时表空间的位置。默认位置是 #innodb_temp数据目录中的目录。如果无法创建临时表空间池,则会拒绝启动。

在基于语句的复制 (SBR) 模式下,在副本上创建的临时表驻留在单个会话临时表空间中,该临时表空间仅在 MySQL 服务器关闭时被截断。

INNODB_SESSION_TEMP_TABLESPACES 表提供有关会话临时表空间的元数据。

该INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO表提供有关在InnoDB实例中处于活动状态的用户创建的临时表的元数据。

全局临时表空间 ( ibtmp1) 存储对用户创建的临时表所做的更改的回滚段。

innodb_temp_data_file_path 变量定义了全局临时表空间数据文件的相对路径、名称、大小和属性。如果没有为innodb_temp_data_file_path指定值 ,则默认行为是创建innodb_data_home_dir目录中命名为ibtmp1的单个自动扩展数据文件。初始文件大小略大于 12MB。

全局临时表空间在正常关闭或中止初始化时被删除,并在每次服务器启动时重新创建。全局临时表空间在创建时会收到一个动态生成的空间 ID。如果无法创建全局临时表空间,则拒绝启动。如果服务器意外停止,则不会删除全局临时表空间。在这种情况下,数据库管理员可以手动删除全局临时表空间或重新启动 MySQL 服务器。重新启动 MySQL 服务器会自动删除并重新创建全局临时表空间。

全局临时表空间不能驻留在原始设备上。

INFORMATION_SCHEMA.FILES提供有关全局临时表空间的元数据。发出与此类似的查询以查看全局临时表空间元数据:

默认情况下,全局临时表空间数据文件会自动扩展并根据需要增加大小。

要确定全局临时表空间数据文件是否正在自动扩展,请检查以下 innodb_temp_data_file_path 设置:

要检查全局临时表空间数据文件的大小,请使用与此类似的查询来查询INFORMATION_SCHEMA.FILES表:

TotalSizeBytes显示全局临时表空间数据文件的当前大小。

或者,检查 *** 作系统上的全局临时表空间数据文件大小。全局临时表空间数据文件位于 innodb_temp_data_file_path 变量定义的目录中。

要回收全局临时表空间数据文件占用的磁盘空间,请重新启动 MySQL 服务器。重新启动服务器会根据innodb_temp_data_file_path定义的属性删除并重新创建全局临时表空间数据文件 。

要限制全局临时表空间数据文件的大小,请配置 innodb_temp_data_file_path以指定最大文件大小。例如:

配置 innodb_temp_data_file_path 需要重新启动服务器。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7414938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存