概述
话不多说,直接上概念:
DDL(Data Definition Language)语句: 数据定义语言
,主要是进行定义/改变表的结构、数据类型、表之间的链接等操作。常用的语句关键字有 CREATE、DROP、ALTER 等。
DML(Data Manipulation Language)语句: 数据操纵语言
,主要是对数据进行增加、删除、修改操作。常用的语句关键字有 INSERT、UPDATE、DELETE 等。
1.MySQL主从复制原理
从库 IO 线程:当 START SLAVE 语句在从库开始执行之后,从库创建一个 IO 线程,该线程连接到主库并请求主库发送 binlog 里面的更新记录到从库上。从库 IO 线程读取主库的 binlog 输出线程发送的更新并拷贝这些更新到本地文件,其中包括 relaylog 文件。
从库 SQL 线程:从库创建一个 SQL 线程,这个线程读取从库 IO 线程写到 relaylog 的更新事件并执行。
主从复制常见问题:
1)主库宕机后,数据可能丢失。
2)从库只有一个sql Thread,主库写压力大,复制很可能延时。
解决:
1)半同步复制:确保事务提交后 binlog 至少传输到一个从库 ,解决数据丢失的问题。
2)并行复制:从库多线程apply binlog,解决从库复制延迟的问题。