MySQL配置主从复制

一,概述

主从复制是指将主数据库的DDL和 DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。

MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。

image-20240904091904505

二,原理

image-20240904092136697

从上图来看,主从复制分成三步:

  1. Master主库在事务提交时,会把数据变更记录在二进制日志BinLog中
  2. 从库读取主库的二进制日志文件BinLog,写入到从库的中继日志Relay log
  3. slave重做中继日志中的事件,将改变反应它自己的数据

三,搭建

3.1 环境准备

image-20240904094333560

3.2 主库配置

  1. 修改配置文件/etc/my.cnf

    # mysql服务id,保证整个集群环境中唯一,取值范围:1~2的32次方-1,默认为1
    server-id=1
    #是否只读,1代表只读,0代表读写
    read-only=0
    #忽略的数据,指不需要同步的数据库
    #binlog-ignore-db=mysql
    #指定同步的数据库
    #binlog-do-db=db01
    
  2. 重启MySQL服务

    systemctl restart mysqld
    
  3. 登录MySQL,创建远程连接的账号,并赋予主从复制权限

    #创建 slave 用户,并设置密码,该用户可以在任意主机连接该MySQL服务
    create user 'slave'@'%' identified with mysql_native_password By '123456';
    #为 slave用户配置主从复制权限
    grant replication slave on *.* to 'slave'@'%';
    
  4. 通过指令,查看二进制日志的坐标

    show master status;
    

    字段含义:

    • file:从哪个日志文件开始推送日志文件
    • position:从哪个位置开始推送日志
    • binlog_ignore_db:指定不需要同步的数据库

3.3 从库配置

  1. 修改配置文件/etc/my.cnf

    # mysql服务id,保证整个集群环境中唯一,取值范围:1~2的32次方-1,默认为1
    server-id=2
    #是否只读,1代表只读,0代表读写
    read-only=1
    
  2. 重启MySQL服务

    systemctl restart mysqld
    
  3. 登录mysql,配置主库配置

    CHANGE REPLICATION SOURCE TO SOURCE_HOST='master的ip地址',SOURCE_USER='上述配置的用户',SOURCE_PASSWORD='密码',SOURCE_LOG_FILE='上述的file名',SOURCE_LOG_POS='上述的postition';
    

    上述是8.0.23中的语法,如果mysql是8.0.23之前的版本,执行如下SQL

    CHANGE MASTER TO MASTER_HOST='MASTER的ip地址',MASTER_USER='上述的用户名',MASTER_PASSWORD='密码',MASTER_LOG_FILE='log文件',MASTER_LOG_POS=上述的postition;
    
    参数名 含义 8.0.23之前
    SOURCE_HOST 主库ip地址 MASTER_HOST
    SOURCE_USER 连接主库的用户名 MASTER_USER
    SOURCE_PASSWORD 连接主库的密码 MASTER_PASSWORD
    SOURCE_LOG_FILE binlog日志文件名 MASTER_LOG_FILE
    SOURCE_LOG_POS binlog日志文件位置 MASTER_LOG_POS
  4. 开启同步操作

    start replica; 	#8.0.22之后
    start slave; 	#8.0.22之前
    
  5. 查看主从同步状态

    show replica status;  	#8.0.22之后
    show slave status; 		#8.0.22之前
    

    只要如下是yes代表成功

posted @ 2024-09-04 10:21  wdadwa  阅读(21)  评论(0)    收藏  举报