mysql 主从配置详解,深入理解MySQL主从原理

mysql 主从配置详解,深入理解MySQL主从原理,MySQL主从原理及配置详解

本文主要详细介绍了MySQL主从式的原理和配置信息,具有一定的参考价值。感兴趣的朋友可以参考一下。

MySQL的主从配置和原理,供你参考,具体如下

一、环境选择:

1.厘斯6.5

2.MySQL 5.7

二、什么是MySQL主从复制

MySQL主从复制是其最重要的功能之一。主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器。对于多级复制,数据库服务器既可以充当主服务器,也可以充当从服务器。MySQL主从复制的基础是主服务器记录数据库修改的二进制日志,从服务器通过主服务器的二进制日志自动更新。

三、MySQL主从复制的类型

1.基于语句的复制

在主服务器上执行的语句在从服务器上再次执行,MySQL-3.23以后支持。

缺点:时间可能不完全同步,导致偏差,执行语句的用户可能是不同的用户。

2.基于行的复制

直接从主服务器复制适配的内容,不管是哪条语句导致了内容的变化,在MySQL-5.0之后引入。

缺点:比如一个工资表有10000个用户,我们为每个用户支付1000,那么基于行的复制就要复制10000行内容,开销比较大,而基于语句的复制只需要一条语句。

3.混合型复制

默认情况下,MySQL使用基于语句的复制。当基于语句的复制出现问题时,它会使用基于行的复制,MySQL会自动选择它。

在MySQL主从复制架构中,读操作可以在所有服务器上执行,而写操作只能在主服务器上执行。虽然主从复制架构为读操作提供了扩展,但是如果写操作比较多(多个从服务器要同步来自主服务器的数据),那么主服务器必然会成为单主模型复制中的性能瓶颈。

四、原理

1.主从

主服务器上的任何更改都将保存在二进制日志中。从服务器启动一个I/O线程(实际上是主服务器的一个客户端进程),连接到主服务器请求读取二进制日志,然后将读取的二进制日志写入本地Realy log。从服务器上打开一个SQL线程,定期检查Realy log,如果发现任何变化,立即在本机上执行变化的内容。

2.主-从-从

在一个主库和多个从库的情况下,主库负责为几个从库编写和提供二进制日志。这时候可以稍微调整一下,只把二进制日志给一个从机,从机再打开二进制日志,把自己的二进制日志发给其他从机。或者干脆这个从来不记录只转发二进制日志给其他从机,这样架构的性能可能会好很多,数据之间的延迟也要稍微好一点。

【注意】

1.在旧版MySQL中,主从复制的从段不是由两个进程完成的,而是由一个进程完成的。之后,出现了很多风险和性能相关的问题。存在以下问题:

1.一个进程将使复制bin-log日志和解析日志并执行它的过程本身成为一个串行过程。性能受到一定限制,异步复制的延迟会更长。

2.从机从主机获取bin-log后,需要解析日志内容,然后自己执行。在这个过程中,主端可能会有很多变化,会有很多新的日志。如果在此阶段主服务器端的存储中存在不可修复的错误,则在此阶段所做的所有更改将永远不会被检索到。如果从端压力比较大,这个过程可能需要很长时间。

五、MySQL主从复制的过程

1.两种情况:同步复制和异步复制。大多数生产环境都采用异步复制。

2.复制的基本过程:

1.1.slave上面的I/O进程连接到主进程,并从指定文件的指定位置(或第一个日志)请求日志内容。

2.在2之后。主机收到从机IO进程的请求,负责复制的IO进程将根据请求信息读取日志指定位置后的日志信息,并返回给从机IO进程。除了日志中包含的信息之外,返回的信息还包括bin-log文件的名称以及返回的信息此次到达主端的bin-log的位置。

3.从机IO进程收到信息后,将收到的日志内容依次添加到从机relay-log文件的末尾,并在Master-info文件中记录主机bin-log的文件名和位置,以便在下次读取时可以清楚地告诉主机“bin-log中未来的日志内容需要从哪里开始,请发送给我”。

4.4后。从服务器的Sql进程检测到有新内容添加到中继日志中,它会立即将中继日志的内容解析为那些在主服务器端实际执行的可执行内容,并自行执行它们。

六、配置:

1.首先,澄清两种情况:

1.两台独立的服务器或虚拟机。

2.由模板创建的两个虚拟机。

2.以下两个服务器命名为:MySQL主服务器和MySQL从服务器。

3.主服务器和从服务器分别执行以下操作:

1.MySQL版本一致。

2.初始化表格

4.修改MySQL主服务器和MySQL从服务器:

vim /etc/my.cnf

[mysqld]

取任何名字。//启用二进制日志

Server-ID=任意数字//服务器的唯一ID,默认值为1,一般设置为IP地址的最后一位数字。

5.第一种情况,直接重启两台服务器;第二种情况,需要将两台服务器的auto.cnf文件重命名为auto.cnf.bak,然后重启MySQL服务。

6.在MySQL主服务器上设置一个帐户并授权从服务器

在*上授予奴隶。*以用户名 @% 标识的任意密码;

7.查询MySQL主服务器的状态

显示主机状态;

8.配置MySQL从属服务器

将母版更改为

Master_host=MySQL主服务器IP地址,

Master_user=之前在MySQL主服务器上创建的用户名,

Master_password=以前创建的密码,

master _ log _ file= MySQL主服务器状态下的二进制文件名,

Master _ log _ pos=主服务器状态中的位置值;

9.启用从机

启动从机;

10.检查MySQL从属服务器的状态。

显示从属状态G

考试

Slave_IO_Running: Yes //该状态必须为Yes

Slave_SQL_Running: Yes //此状态必须为Yes

全是表示主从配置成功。当MySQL主服务器更新变化时,从服务器会根据具体配置进行同步。

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

mysql 主从配置详解,深入理解MySQL主从原理