| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> mysql主从复制 -> 正文阅读 |
|
[大数据]mysql主从复制 |
mysql主从复制 1、主从复制过程主从复制过程需要主库跟踪对应的binlog中数据操作变化,比如:updates, deletes等。从数据启动后,binlog 作为写记录一直记录着所有修改数据库的结构和数据内容的事件。通常,select语句不会被binlog记录,因为它没既没修改数据库的结构,也没修改数据库的数据内容。 每个连接主库的从库(副本)都会从主库请求获取一份binlog。从库从主库拉取数据,而不是主库推送数据给从库。从库执行接受的binlog中记录的事件,类似于在从库上重复主库上更改。根据主库发生的更改,从库将会进行表的创建、表结构更改、数据插入删除或者更新。 因为每个从库都是独立的,主库返回给从库的binlog将在每个从库上独立的更新该从库,而不影响其他从库。另外,从库可以随意更改从主库获取的binlog,停止或者启动从库进程,而不会影响主库或者其他从库最新的数据库状态(即这些数据库可正常更新)。 主库需要同步的数据更新,可以根据主从库的各种配置以及控制变量设置规则进行过滤。可以参考更多规则; 2、同步(复制)线程msyql 的主从同步通过3个线程完成,其中1个线程在主库,2个线程在从库上。 2.1 Binary log dump 线程当从库连上主库时,主库会创建一个线程来发送 binlog 的内容给从库。 在数据库终端执行sql: SHOW PROCESSLIST , 可以看到 Binlog Dump 线程。 binlog dump 线程在binlog中读取要发送给从库的数据时,会对binlog加锁。一旦数据读取完成,线程将释放锁,即使数据还未发送到从库。 2.2 同步 IO 线程当在从库上执行sql: START SLAVE ,从库将创建一个I/O线程。该线程将连接主库,并请求主库发送binlog中更新的记录给从库。 主库的Binlog Dump线程,将更新的binlog发送到从库,从库的 I/O线程将这些更新入从库的relay log。 在从库中执行sql: SHOW SLAVE STATUS, 能够看到 Slave_IO_running 的状态。 2.3 同步 SQL 线程从库创建同步SQL线程来读取 relay log,并执行其中的事务。 每对主/从库连接都有3个线程。如果一个主库连接多个从库,那么主库将会给每个处于连接状态的从库创建一个Binary log dump线程,每个从库也有自己的同步I/O以及SQL线程。 一个从库使用2个线程将从主库读取更新以及在从库执行数据更新分成独立的任务。因此,从主库读取更新的任务不会减慢,即使从库执行数据更新任务很慢。例如,如果从库停止运行一段时间后再启动从库,从库的 I/O线程能够快速获从主库取到所有的binlog,即使 SQL 线程滞后。如果从库在 SQL线程执行所有更新前停止运行, I/O 线程至少获取到了一份安全的更新binlog并保存到从库的relay log, 当下次启动从库后就可能执行数据更新。 在从库上通过设置系统变量 slave_parallel_workers 的值大于0(默认值),可以开启并行处理任务。当该变量设置了,从库设置创建设置的数量的worker 线程,以及一个协调线程来管理worker 线程。如果你在使用多从库通道,每个通道都将有这么多线程。slave_parallel_workers大于0从库一般被称为多线程从库(副本)。一旦这么设置,失败的事务将会被重试。 3、Relay log与从库元数据存储从库(副本)也会记录从库(源库)的binlog的当前位置以及从库的relay log。 在同步过程中,一个从库创建多个信息库。 3.1 relay log该log有 I/O线程写入,log中的事务来自主库的binlog,并且将被 SQL线程执行更新到从库。 3.2 从库连接元数据存储包含了从库I/O线程连接主库需要的信息,以及从主库binlog中检索事务需要的信息。连接元数据存储被写进表mysql.slave_master_info或者一个文件中。 3.3 从库的应用程序元数据存储包含了从库SQL线程从relay log读取事务以及将事务更新到从库的信息。从库的应用程序元数据存储被写进表mysql.slave_relay_log_info 或者 一个文件中。 从库连接元数据存储与从库的应用程序元数据存储被统称为从库元数据存储,可以参考更多相关说明 使从库能够灵活应对宕机: 事务性存储引擎InnoDB创建表mysql.slave_master_info 与 表mysql.slave_relay_log_info。从库的应用程序元数据存储表更新将与事务一起提交, 也就是记录在元数据存储中的从库进度信息一直与从库的更新保持一致,即使从库宕机。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:30:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |