«

MySQL主从复制

时间:2023-2-27 23:03     作者:wen     分类: MySQL


复制的基本原理:

MySQL复制过程分成三步:

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

复制的基本原则:

每个slave只能有一个master
每个slave只能有一个唯一的服务器ID;
每个master可以有多个salve;

复制的最大问题:

延时

一主一从常见配置:(因为环境问题,主机win,从机Linux)

  1. MySQL版本一致且后台以服务运行
  2. 主从都配置在[mysqld]节点下,都是小写
  3. 主机修改my.ini配置文件
    1. [必须]主服务器唯一ID
      server_id=1
    2. [必须]启用二进制日志文件
      log-bin=自己本地的绝对路径/mysqlbin
      log-bin=E:/phpstudy_pro/Extensions/MySQL5.7.26/data/mysqlbin
    3. [可选]启用错误日志
      log-err=自己本地的绝对路径/mysqlerr
      log-bin=E:/phpstudy_pro/Extensions/MySQL5.7.26/data/mysqlerr
    4. [可选]根目录
      basedir=自己本地的绝对路径
      basedir=E:/phpstudy_pro/Extensions/MySQL5.7.26/
    5. [可选]临时目录
      tmpdir=自己本地的绝对路径
      tmpdir=E:/phpstudy_pro/Extensions/MySQL5.7.26/
    6. [可选]数据目录
      datadir=自己本地的绝对路径/data/
      datadir=E:/phpstudy_pro/Extensions/MySQL5.7.26/data/\
    7. [可选]主机,读写都可以
      read-only=0
    8. [可选]设置不要复制的数据库
      binlog-ignore-db=mysql
    9. [可选]设置需要复制的数据库
      binlog-do-db=需要复制的主数据库名字
  4. 从机修改my.cnf配置文件
    1. [必须]主服务器唯一ID
      server_id=2
    2. [可选]启用二进制日志文件
  5. 因修改过配置文件,请主机+从机都重启后台MySQL服务
    service mysql stop 停止
    service mysql start 启动
    ps -ef|grep mysql 查看服务进程
  6. 主机从机都关闭防火墙[重点]
    Windows收到关闭
    service iptables stop
  7. 在Windows主机上建立账号并授权slave
    1. GRANT REPLICATION SLAVE ON . TO 'zhangsan'@'从机数据库ip' IDENTIFIED BY '123456';给从机分配一个权限
    2. flush privileges;刷新权限
    3. show master status;查看master的状态,记录下File和Position的值
  8. 在Linux从机上配置需要复制的主机
    1. CHANGE MASTER TO MASTER_HOST='主机ip',MASTER_USER='zhangsan',MASTER_PASSWORD='123456',MASTER_LOG_FILE='file名字',MASTER_LOG_POS=Position数字;
    2. 启动从服务器复制功能
      start slave;
    3. show slave status\G;
      show slave status
      Slave_IO_Running:Yes
      Slave_SQL_Running:Yes|
      两个参数都是Yes,则说明主从配置成功!
  9. 主机新建库、新建表、insert记录,从机复制
  10. 如何停止从机服务复制功能
    stop slave;
    还有就是
    error connecting to master 'zhangsan@192.168.124.2:3306' - retry-time: 60 retries: 23
    从机连不上主机,看下防火墙问题,然后 GRANT REPLICATION SLAVE ON . TO 'zhangsan'@'%' IDENTIFIED BY '123456';改成所有ip都能连接(测试下,不要在生产环境上这么用,不安全)

标签: mysql优化