MySQL5.7主从复制之基本原理与详细配置

环境说明:

​  主数据库:Windows7-MySQL5.5

   ​从数据库:Linux(CentOS7.0)-MySQL5.7

  配置实现:一主(写主机)一从(读主机)

区别Redis:

​   相同点:都只有一台主机,可以有多台从机。

​   不同点:Redis是从头复制,MySQL是从接入点复制;

​    Redis是计时的,MySQL是延时的!

笔记大纲

  • 主从复制的基本原理

  • 主从复制的基本原则

  • 主从复制的最大问题

  • 一主一从常见配置【12步骤】


1.主从复制的基本原理

(1)slave会从master读取binlog来进行数据同步。

(2)复制三步骤

​   master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events

​ ​    slavemasterbinary log events拷贝到它的中继日志(relay log);
​ ​    slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的。

MySQL5.7主从复制之基本原理与详细配置_第1张图片

2.主从复制的基本原则

(1)每个slave只有一个master(读主机);
(2)每个slave只能有一个唯一的服务器ID;
(3)每个master可以有多个salve(写主机)。

3.主从复制的最大问题

​   存在延时,如果做了读写分离,当我们插入后数据,不要立刻去读,否则读的数据是空,因为从数据库还来不及复制,复制需要时间(毫秒级)。

4.一主一从常见配置

(1)mysql版本一致且后台以服务运行(在这里我的是不一致的!)
(2)主从都配置在[mysqld]结点下,都是小写
(3)主机修改my.ini配置文件
server-id=1
log-bin=E:/(001)DevelopSoftware/MySQL5.5-log/data/mysqlbin
binlog-ignore-db=mysql
binlog-do-db=mydb_1024
binlog_format=STATEMENT	

MySQL5.7主从复制之基本原理与详细配置_第2张图片

主服务器唯一ID

server-id=1

启用二进制日志

log-bin=自己本地的路径/data/mysqlbin #[自己本地的路径/data]\mysqlbin是文件

设置不要复制的数据库

binlog-ignore-db=mysql#配置文件中数据库名不要写大写,MySQL数据库不能区分

设置需要复制的数据库(注意:此时不要新建数据库、表!)

binlog-do-db=需要复制的主数据库名字

设置binlog的格式

binlog_format=STATEMENT(默认)		
格式 优点 缺点
STATEMENT(声明模式) 效率高 不能识别函数,会造成主从数据复制数据不一致
ROW(行模式) 不记录写操作的SQL, 记录执行完SQL每一行的改变(主从复制数据一致) 批量操作,效率低
MIXED 对插入语句进行判断,有函数,切入到行模式;没有函数,就基于写的操作 识别不了MySQL中@@ host name<系统变量>
(4)mysql主从复制起始时,从机不继承主机数据
(5)从机配置文件修改my.cnf的[mysqld]栏位下

在Linux中输入命令 :

cd /etc/

vim my.cnf

MySQL5.7主从复制之基本原理与详细配置_第3张图片

	server-id=2 #注意符号间无空格
	relay-log=mysql-relay 
(6)因修改过配置文件,请主机+从机都重启后台mysql服务

  重启主机windows–MySQL5.5

MySQL5.7主从复制之基本原理与详细配置_第4张图片

  重启主机linux-MySQL5.7

MySQL5.7主从复制之基本原理与详细配置_第5张图片

(7)主机从机都关闭防火墙

  windows手动关闭

MySQL5.7主从复制之基本原理与详细配置_第6张图片
  关闭虚拟机linux防火墙 systemctl stop firewalld

MySQL5.7主从复制之基本原理与详细配置_第7张图片

(8)在Windows主机上建立帐户并授权slave

  提示:如果步骤(9)查询从机状态不符合要求,则直接执行步骤(11)(12),重新配置!!!

  GRANT REPLICATION SLAVE ON *.*TO ‘codinglin’@‘从机器数据库IP’ IDENTIFIED BY ‘123456’;

GRANT all privileges ON *.* TO 'slave1024'@'%' IDENTIFIED BY '1234'; #授权并创建用户

  查询master的状态

show master status;

MySQL5.7主从复制之基本原理与详细配置_第8张图片

  记录下File和Position的值

  执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化!!

(9)在Linux从机上配置需要复制的主机

配置Linux上配置主从相关信息

#DOS窗口ifconfig查看[以太网适配器 VMware Network Adapter VMnet8]:IPV4地址的值
CHANGE MASTER TO MASTER_HOST='192.168.XXX.XX',
MASTER_USER='zhangsan',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.具体数字',MASTER_LOG_POS=具体值;

MySQL5.7主从复制之基本原理与详细配置_第9张图片
​ 启动从服务器复制功能

 start slave;

查看从机状态

	show slave status\G #(下面两个参数都是Yes,则说明主从配置成功!)
	Slave_IO_Running: Yes
	Slave_SQL_Running: Yes

MySQL5.7主从复制之基本原理与详细配置_第10张图片

(10)主机新建库、新建表、insert记录,从机复制(配置成功)
CREATE DATABASE mydb_1024;
CREATE TABLE mytbl(ind INT,`name` VARCHAR(20));
INSERT INTO mytbl VALUES(1,'daxia');
SELECT * FROM mytbl;

  windows-主数据查看插入数据:

MySQL5.7主从复制之基本原理与详细配置_第11张图片

  linux- 从数据库查看插入数据:
MySQL5.7主从复制之基本原理与详细配置_第12张图片

(11)停止从服务复制功能
stop slave;
(12)重新配置主从
reset master;	

  ☞本人博客:https://coding0110lin.blog.csdn.net/  欢迎转载,一起技术交流吧!

你可能感兴趣的:(MySQL)