MySQL是现在普遍使用的数据库,但是如果宕机了必然会造成数据丢失。为了保证MySQL数据库的可靠性,就要会一些提高可靠性的技术。MySQL主从复制可以做到实时热备数据。本文介绍MySQL主从复制原理及其配置过程。
术语:主从复制——master slave replication(M-S模式)。
实际上,它的原理思路很简单。MySQL 中有一种日志叫做 bin 日志(二进制日志),这个日志会记录下所有修改了数据库的SQL语句。主从复制的原理其实就是"从"服务器向"主"服务器请求这个日志文件,"主"服务器会把这个 bin 日志复制到"从"服务器上执行一遍,这样"从"服务器上的数据就和"主"服务器上的数据相同了。
流程图:
图解:
主服务器必须启用二进制日志(log-bin),记录任何修改了数据库数据的事件;从服务器开启一个线程(I/O Thread)把自己扮演成 MySQL 的客户端,通过 MySQL 协议,请求主服务器的二进制日志文件中的事件;主服务器启动一个线程(Dump Thread),检查自己二进制日志中的事件,跟对方请求的位置对比,如果不带请求位置参数,则主服务器就会从第一个日志文件中的第一个事件一个一个发送给从服务器;从服务器接收到主服务器发送过来的数据把它放置到中继日志(relay log)文件中。并记录该次请求到主服务器的具体哪一个二进制日志文件内部的哪一个位置(主服务器中的二进制文件会有多个,其名结尾以6位数递增);从服务器启动另外一个线程(SQL Thread ),把 relay log 中的事件读取出来,并在本地再执行一次。主服务器:192.168.43.75从服务器:192.168.43.111mysql版本:mysql-8.0系统:主 Windows10,从 Windows7
查看主服务器状态信息:
注:这里的文件名和位置值会在后面的配置中用到。
一定要刷新权限:
flush privileges;主服务器配置完成。
此时会启动 IO Thread 和 SQL Thread 这两个线程。
(停止复制线程:stop slave)
查看从服务器状态信息:
MySQL主从配置到此完成。
在主服务器上新建一个数据库test:
在从服务器上查看:
测试通过,完美。
当我们配置好MySQL主从同步时,原本是可以实现主从同步的,但是重启机器后就发现无法同步了。
MySQL Replication 中 slave 机器上有两个关键的线程,死一个都不行,一个是 Slave_IO_Running,一个是 Slave_SQL_Running。一个负责与主机的 IO 通信,一个负责自己的 slave mysql 语句执行。
1)如果是Slave_SQL_Running:No,如图。
解决办法:
> stop slave; > set global sql_slave_skip_counter=1; > start slave;2)如果是Slave_IO_Running:No,如图。
解决办法:查看主服务器状态:
查看从服务器状态:
找到问题所在:Master_Log_File没有对应。
> stop slave; > change master to master_log_file='mysql-bin.000026',master_log_pos=0; > slave start; > show slave status\G;得解。
至此,转载请注明出处。
转载于:https://www.cnblogs.com/wcwnina/p/11336024.html
相关资源:垃圾分类数据集及代码