mysql主从复制的配置方法和原理简介

  • Post author:
  • Post category:mysql




1.介绍

MySQL主从复制是一个异步的复制过程,

底层是基于Mysql数据库自带的二进制日志功能

。就是

一台或多台MysQL数据库(slave,即从库)从另一台MNySQL数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致

。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。

MySQL复制过程分成三步:

  • master将改变记录到二进制日志(binary log)
  • slave将master的binary log拷贝到它的中继日志(relay log)
  • slave重做中继日志中的事件,将改变应用到自己的数据库中

    在这里插入图片描述



2.具体操作

首先准备两台装有mysql的OS(如果使用虚拟机,不要使用克隆之后改IP的方式,直接新建两个虚拟机)


1.配置主库Master


1.1首先修改mysql的配置文件

vim /etc/my.cnf

在[mysqld]后添加

log-bin=mysql-bin
server-id=100

log-bin=mysql-bin表示启动二进制日志,server-id=100表示唯一ID

然后wq退出保存

1.2重启mysql服务

systemctl restart mysqld

1.3登录到mysql

mysql -u root -p

登录后执行以下SQL

grant REPLICATION SLAVE on *.* to 'sirius'@'%' identified by 'Chd1998__';

注:上面SQL的作用是创建一个用户sirius,密码为Chd1998__,并且给xiaoming用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须是被master授权具有该权限的用户,才能通过该用户复制。

1.4执行

show master status;

记录结果当中的以下值,之后便不要再进行任何操作,防止结果发生改变

在这里插入图片描述


2.配置从库Slave


现在操作另一个mysql服务器

2.1首先修改mysql的配置文件

vim /etc/my.cnf

在[mysqld]后添加

server-id=101

在这里插入图片描述

2.2重启mysql服务

systemctl restart mysqld

2.3登录到mysql

mysql -u root -p

登录后执行以下SQL

change master to master_host='主库master的ip地址',master_user='sirius',master_password='Chd1998__',master_log_file='mysql-bin.000001',master_log_pos=439;

master_host为主库master的ip地址,master_user、master_password为步骤1.3当中创建的用户名和密码,master_log_file、master_log_pos为步骤1.4当中查询到的两个值

执行成功后开启slave

start slave;

2.4查看一下从库的状态

show slave status;

显示的结果可能比较混乱,我们可以将其复制到文本编辑器查看。

结果很多,但我们重点看以下两个,如果都是yes,说明配置成功

在这里插入图片描述



3.测试

在主数据库master创建一个databases

在这里插入图片描述

会发现从数据库slave也创建了一个

在这里插入图片描述



版权声明:本文为qq_44371305原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。