https://blog.csdn.net/why15732625998/article/details/80463041
上面是一个完整的实战连接
总的来说,就是mysql本身是支持主从复制的,一个master可以有多个slave,而每个slave只能有一个master。
通过mysql client来设置主从的配置信息,以及更改my.cnf文件来设置。
主要的原理是slave会通过网络请求master的binlog,可以得到binlog的文件内容,通过这些内容,slave去回放执行sql,从而达成与master一样的数据内容。由于binlog是会分成多个文件的,所以两者的通信还会随着时间更改请求的binlog文件名。
master对slave授权复制的权限:

这样在master中的增删改查,会自动同步到slave
主从复制存在延时,如果读写分离,同时使用master和slave的话,需要考虑数据一致性,尤其要保证读能读到最新写的数据,避免延时导致的读不到的情况。https://segmentfault.com/a/1190000038420324
关于DDL和DML
SQL语言共分为四大类:查询语言DQL,控制语言DCL,操纵语言DML,定义语言DDL。
DQL:可以简单理解为SELECT语句;
DCL:GRANT、ROLLBACK和COMMIT一类语句;
DML:可以理解为CREATE一类的语句;
DDL:INSERT、UPDATE和DELETE语句都是;
主从复制存在的问题
-
主库宕机后,数据可能丢失;
-
主从同步延迟。
MySQL数据库主从同步延迟产生原因
原因分析
MySQL的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高。Slave的SQL Thread线程将主库的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是随即的,不是顺序的,成本高很多。另一方面,由于SQL Thread也是单线程的,当主库的并发较高时,产生的DML数量超过slave的SQL Thread所能处理的速度,或者当slave中有大型query语句产生了锁等待那么延时就产生了。
常见原因:Master负载过高、Slave负载过高、网络延迟、机器性能太低、MySQL配置不合理。
主从延时排查方法
通过监控 show slave status 命令输出的Seconds_Behind_Master参数的值来判断:
NULL,表示io_thread或是sql_thread有任何一个发生故障;
0,该值为零,表示主从复制良好;
正值,表示主从已经出现延时,数字越大表示从库延迟越严重。