MySQL高级(八)、主从复制

本文讲解如何实现MySQL数据库的主从复制功能。使用的机器为Windows上的数据库作为主服务器,Linux上的数据库作为从服务器,实现一主一从的配置。

基本原理

实现主从复制,主机master和从机slave的工作方式如下图所示。
在这里插入图片描述
MySQL复制过程分成三步:

  1. master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
  2. slave将master的binary log events拷贝到它的中继日志(relay log);
  3. slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的。

复制的基本原则

  1. 每个slave只有一个master(类似Java中的单继承)
  2. 每个slave只能有一个唯一的服务器ID
  3. 每个master可以有多个salve

复制的最大问题:延时

配置过程

注意,实现一主一从的配置,要求两者的mysql版本要一致(本人使用的都是mysql5.7.25的版本),并且主从配置信息都在[mysqld]下,且最好都是小写。

修改主机配置

将主机设置为本机Windows下的数据库,其配置文件位于mysql的安装目录中的my.ini下。并修改以下的配置信息:

  1. [必须] 主机服务器唯一ID:server-id=1
  2. [必须] 启用二进制日志:bin-log=自己本地的路径/data/mysqlbin
  3. [可选] 启用错误日志:log-err=自己本地的路径/data/mysqlerr
  4. [可选] 根目录:basedir=自己本地的路径
  5. [可选] 临时目录:tmpdir=自己本地的路径
  6. [可选] 数据目录:datadir=自己本地的路径/data/
  7. [可选] read-only=0,设置主机为可读可写
  8. [可选] 设置不要复制的数据库:binlog-ignore-db=mysql
  9. [可选] 设置需要复制的数据库:binlog-do-db=主数据库名字
    在这里插入图片描述
    修改好后保存,并重启mysql服务。

修改从机配置

从机配置文件位于Linux上的/etc/my.cnf文件,修改的配置信息位于[mysqld]标签下

  1. [必须] 从服务器唯一ID:server-id=2(不能和主机相同)
  2. [可选] 启用二进制日志
    在这里插入图片描述
    修改好配置文件后,保存,重启mysql服务。

建立连接并授权

  1. 关闭主机和从机上的防火墙。windows手动关闭,linux通过systemctl stop firewalld关闭。

【主机配置】

  1. 主机给从机授权:
#%可以改为从机的ip地址,%表示任意ip都可以连
GRANT REPLICATION SLAVE ON *.* TO 'zhangsan'@'%' IDENTIFIED BY '123456';
flush privileges;
  1. 查看master的状态,并记录File和Position的值(表示要从哪个文件的哪个位置开始复制)
show master status;

在这里插入图片描述

从机配置

  1. 在从机上配置主机(主机IP需要改为自己的windows的ip,File名字和位置改为上图记录的值)
CHANGE MASTER TO MASTER_HOST='10.1.18.79', #更改ip
MASTER_USER='zhangsan',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.000001',MASTER_LOG_POS=604; #更改文件名和位置
  1. 启动主从复制功能
start slave;
  1. 查看是否配置成功
show slave status\G

下面两个参数必须都是Yes,则说明主从配置成功!
在这里插入图片描述

  1. 停止主从复制功能(测试好后再来停止)
stop slave;

测试

在经过上述的配置之后,从机可从主机复制数据。
【主机创建数据】

create database mydb58;
use mydb58;
create table dog(id int not null, name varchar(20));
insert into dog values (1, 'ww1'); #插入1号汪汪

在这里插入图片描述
【从机检查数据】
在这里插入图片描述
至此,MySQL主从复制成功配置完成。

猜你喜欢

转载自blog.csdn.net/shao_yc/article/details/106443574
今日推荐