共计 2415 个字符,预计需要花费 7 分钟才能阅读完成。
这期内容当中丸趣 TV 小编将会给大家带来有关 MySQL 主从复制的原理分析是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
一、基本原理
MySQL 复制过程分成三步:
1)、master 将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
2)、slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);
3)、slave 重做中继日志中的事件,将改变应用到自己的数据库中。MySQL 复制是异步的且串行化的。
简单来说: slave 会从 master 读取 binlog 来进行数据同步
MySQL 的复制(replication)是一个异步的复制。
实现整个复制操作主要由三个进程完成的,其中两个进程在 Slave(Sql 进程和 IO 进程),另外一个进程在 Master(IO 进程)上。
要实施复制,首先必须打开 Master 端的 binary log(bin-log)功能,否则无法实现。
因为整个复制过程实际上就是 Slave 从 Master 端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。
复制的详细过程:
(1)Slave 上面的 IO 进程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
(2)Master 接收到来自 Slave 的 IO 进程的请求后,通过负责复制的 IO 进程根据请求信息读取制定日志指定位置之后的日志信息,返回给 Slave 的 IO 进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到 Master 端的 bin-log 文件的名称以及 bin-log 的位置;
(3)Slave 的 IO 进程接收到信息后,将接收到的日志内容依次添加到 Slave 端的 relay-log 文件的最末端,并将读取到的 Master 端的 bin-log 的文件名和位置记录到 master-info 文件中,以便在下一次读取的时候能够清楚的高速 Master“我需要从某个 bin-log 的哪个位置开始往后的日志内容,请发给我”;
(4)Slave 的 Sql 进程检测到 relay-log 中新增加了内容后,会马上解析 relay-log 的内容成为在 Master 端真实执行时候的那些可执行的内容,并在自身执行。
原则:
每个 slave 只有一个 master;
每个 slave 只能有一个唯一的服务器 ID;
每个 master 可以有多个 salve;
二、一主一从相关配置
演示主机为 Windows (配置文件为 my.ini 文件),从机为 Linux(配置文件为 my.cnf)
1、主机配置(windows 的 my.ini)
1)、[必须]主服务器唯一 ID;
2)、[必须]启用二进制日志;log-bin= 自己本地的路径 /data/mysqlbin。log-bin=D:/devSoft/MySQLServer5.5/data/mysqlbin。
3)、[可选]启用错误日志 log-err= 自己本地的路径 /data/mysqlerr。log-err=D:/devSoft/MySQLServer5.5/data/mysqlerr。
4)、[可选]根目录 basedir= 自己本地路径。basedir= D:/devSoft/MySQLServer5.5/。
5)、[可选]临时目录 tmpdir= 自己本地路径。tmpdir= D:/devSoft/MySQLServer5.5/。
6)、[可选]数据目录 datadir= 自己本地路径 /Data/。datadir= D:/devSoft/MySQLServer5.5/Data/。
7)、[可选]设置不要复制的数据库 binlog-ignore-db=mysql。
8)、[可选]设置需要复制的数据库 binlog-do-db= 需要复制的主数据库名字。
2、从机配置 (linux 的 my.cnf)[必须] 从服务器唯一 ID;
[可选]启用二进制日志;
3、因修改过配置文件,请主机 + 从机都重启后台 mysql 服务 4、主从机都关闭 linux 防火墙
windows 手动关闭;
关闭虚拟机 linux 防火墙 service iptables stop;
5、在 Windows 主机上建立帐户并授权 slave
GRANT REPLICATION SLAVE ON *.* TO zhangsan @ 从机器数据库 IP IDENTIFIED BY 123456。
刷新一下配置 flush privileges;。
查询 master 的状态。show master status; 记录下 File 和 Position 的值;
执行完此步骤后不要再操作主服务器 MYSQL,防止主服务器状态值变化。
6、在 Linux 从机上配置需要复制的主机
配置
CHANGE MASTER TO MASTER_HOST= 主机 IP ,MASTER_USER= zhangsan ,MASTER_PASSWORD= 123456 ,MASTER_LOG_FILE= File 名字 ,MASTER_LOG_POS=Position 数字;
启动从服务器复制功能,start slave;。
查看配置下面两个参数都是 Yes,则说明主从配置成功!Slave_IO_Running: Yes。Slave_SQL_Running: Yes。
CHANGE MASTER TO MASTER_HOST= 192.168.124.3 , MASTER_USER= zhangsan , MASTER_PASSWORD= 123456 , MASTER_LOG_FILE= mysqlbin. 具体数字 ,MASTER_LOG_POS= 具体值;
7、主机键表,看从机有没有 8、如何停止主从服务复制功能
在 linux 下面输入 stop slave;。
上述就是丸趣 TV 小编为大家分享的 MySQL 主从复制的原理分析是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。