MySql-高级(主从复制) 学习笔记

尚硅谷-MySql-高级思维导图:思维导图(mmap+HTML格式)

1. 基本原理

  • MySQL 的复制是异步的、串行化的

1. 三步骤

在这里插入图片描述

  1. 主机(master) 将 改变 记录到二进制日志(binary log)。这些记录过程叫二进制日志事件(binary log events)
  2. 从机(slave) 从 主机(master)读取 binlog ,并拷贝到它的中继日志中(relay log)
  3. 从机(slave)重做中继日志中的事件,将改变应用到自己的数据库中
  • 复制的原则 :
    • MySQL 的复制是异步的、串行化的
    • 主机只能有一台,从机可以多台
    • 每一个 从机 只能有一个唯一的 服务器ID
    • 从机 从接入点开始复制,不会从头复制
  • 最大的问题 : 延时(毫秒级)(所以插入数据后,不能马上读,要过一段时间)

2. 主从机配置

1. 主从机上 MySQL 版本一致,且后台以服务运行

2. 主从都配置在 mysqld 节点下,都是小写

3. 修改 my.ini(主机) 配置文件

  • 提醒:配置前,最好备份一下 my.ini 配置文件,便于恢复
  1. 主服务器 id(必须)

    server-id=1
    
  2. 启用二进制日志(必须)

    • 建议:创建一个新的目录,最好不和 mysql 混在一起
    log-bin=(自己本地的路径)/data/mysqlbin
    # 例如
    log-bin=D:/devSoft/MySQL5.5/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=(需要复制的主数据库名)
    
  10. 设置binlog格式

    binlog_formal=STATEMENT(默认)
    
  • 补充:笔试面试会考,需要背
    • STATEMENT:会在 日志文件 中记录所有的写操作的 SQL,如果语句中有函数,例如now(),输出当前时间,由于有延时,所以会造成主从复制不一致,没有办法解决
    • ROW:在 日志 中记录,每一行的改变,虽然解决主从复制不一致,但是对表中大部分数据进行更新时,效率太低
    • MIXED:判断 SQL 语句中有没有函数,如果没有函数,就使用 STATEMENT 格式,若有函数,就使用 ROW 格式,但是只要出现系统变量,也会出现主从复制不一致

4. 修改 (从机) 配置文件

  1. 从服务器唯一id(必须)
    server-id=2
    
  2. 启用二进制日志(可选)

5. 重启 主从机 的 MySQL 服务

  • 注意 : 如果 重启时一直显示 “正在启动”,表示 配置文件配置错误,使用备份恢复,重配

6. 主从机 都关闭防火墙

  1. Windows 手动关闭
  2. Linux 虚拟机 : service iptables stop 或者 systemctl stop firewalld

7. 在主机上建立账户并授权 slave

  1. 给从机 授权、名字、密码

    # 从机数据库ip 可以直接写 % ,表示所有远程用户
    GRANT REPLICATION SLAVE ON *.* TO 'slave200806'@'从机数据库ip【%】' IDENTIFIED BY '123456';
    
  2. Subtopic;
    
  3. 刷新

    flush privileges;
    
  4. 查询主机状态

    show master status;
    

    在这里插入图片描述

    • 记录下 File 和 Position 的值
  5. 执行完此操作后不要再操作主服务器 MySQL,防止主服务器状态值变化

8. 在 Linux 从机上配置需要复制的主机

  1. 给从机 授权、名字、密码

    # 注意:主机地址要和从机地址在一个网段,即前三个字段要一样,第四个字段为 1
    CHANGE MASTER TO MASTER_HOST='主机 IP',
    
    MASTER_USER='slave200806',
    
    MASTER_PASSWORD='123456',
    # 从什么文件的,什么位置开始备份
    MASTER_LOG_FILE='前面要记住的 File值',
    MASTER_LOG_POS=前面要记住的 Position值;
    
  2. 启动从服务器复制功能

    start slave;
    
  3. 查看配置结果

    show slave status\G;
    
    • 如果以下两项为 Yes 表示配置成功
      • Slave_IO_Running
      • Slave_SQL_Running

    在这里插入图片描述

9. 主机新建库、新建表、插入数据,从机复制

10. 停止从服务复制功能

stop slave;

11. 重新配置主从机设置

reset master;
  • 注意:重新配置需要
    • 先停止服务
    • 再重新配置,即 stop slave; -> reset master;
    • 然后回到 ”从机配置“ 的第一步

12. 如果配置失败

  1. 检查有没有关闭防火墙
  2. 检查 主机状态 中的 File 和 Position 字段的值有没有变化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuan_404

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值