Mysql主从原理和复制配置详细讲解

Posted lonuve

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql主从原理和复制配置详细讲解相关的知识,希望对你有一定的参考价值。

如果配置了多个从服务器或者多个主服务器又涉及到相应的负载均衡问题,关于负载均衡具体的技术细节还没有研究过,今天就先简单的实现一主一从的主从复制功能

将主数据库中的DDL和DML操作通过二进制日志(BINLOG)传输到从数据库上,然后将这些日志重新执行(重做);从而使得从数据库的数据与主数据库保持一致。

1、主数据库出现问题,可以切换到从数据库。

2、可以进行数据库层面的读写分离,

3、可以在从数据库上进行日常备份

技术图片

Binary log:主数据库的二进制日志

Relay log:从服务器的中继日志

第一步:master在每个事务更新数据完成之前,将该操作记录串行地写入到binlog文件中。

第二步:salve开启一个I/O Thread,该线程在master打开一个普通连接,主要工作是binlog dump process。如果读取的进度已经跟上了master,就进入睡眠状态并等待master产生新的事件。I/O线程最终的目的是将这些事件写入到中继日志中。

第三步:SQL Thread会读取中继日志,并顺序执行该日志中的SQL事件,从而与主数据库中的数据保持一致。

主服务器:

开启二进制日志

配置唯一的server-id

获得master二进制日志文件名及位置

创建一个用于slave和master通信的用户账号

从服务器:

配置唯一的server-id

使用master分配的用户账号读取master二进制日志

启用slave服务

安装数据库步骤省略。。。

1.修改mysql配置

找到主数据库的配置文件my.ini,在[mysqld]部分插入如下:

2.重启mysql,创建用于同步的用户账号

打开mysql会话shell>mysql -hlocalhost -uname -ppassword

创建用户并授权:用户:repl密码:123456

3.查看master状态,记录二进制文件名(mysql-bin.000001)和文件的位置(0):

每次master数据库重启后日志文件名会加1(例如:mysql-bin.000002),slave库会自动去获取新的文件,不需要重新配置...

1.修改mysql配置

同样找到my.cnf配置文件,添加server-id

2.重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):

3.启动slave同步进程:

4.查看slave状态:

当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。

接下来就可以进行一些验证了,比如在主master数据库的slave_test数据库的一张表中插入一条数据,在slave的slave_test库的相同数据表中查看是否有新增的数据即可验证主从复制功能是否有效,还可以关闭slave(mysql>stop slave;),然后再修改master,看slave是否也相应修改(停止slave后,master的修改不会同步到slave),就可以完成主从复制功能的验证了。

master端:

以上是关于Mysql主从原理和复制配置详细讲解的主要内容,如果未能解决你的问题,请参考以下文章

MySQL主从复制的原理及配置方法(比较详细)

docker 配置mysql8主从复制出现的问题

MySQL主从复制原理配置

MySQL 主从复制 详细实例讲解 与 常见错误解决方法

MySQL主从复制原理深入讲解

mycat系列一基于 Docker 搭建 MySQL 主从复制的详细教程