zoukankan      html  css  js  c++  java
  • 简单,详细,实现一个MySQL主从复制

    记录一个简单实现MySQL的主从复制吧,淦

    两个Linux环境安装同版本MYSQL,并且保持两个库的数据一致

    注意:不同版本容易出问题处理起来还比较麻烦(如下)

       库表不同会出现如下情况

      

    主数据库:8.xxx.x.13

    从数据库:47.160.66.164

    一、配置主服务器

      1、修改mysql配置文件,开启二进制日志并设置 server-id

    [mysqld]
    log-bin=mysql-bin    #开启二进制日志
    server-id=13         #设置server-id,唯一,我用的是ip后两位    
    

       2、重启MySQL,登录root账户 创建同步用户

    # 创建同步用户
    CREATE USER root_sync@47.106.66.164 IDENTIFIED BY 'rootsync@2021';

     

    # 分配权限
    GRANT REPLICATION SLAVE ON *.* TO root_sync@47.106.66.164;
    
    # 刷新权限
    FLUSH PRIVILEGES;

     

    查看master状态,记录二进制文件名(mysql-bin.000001)和位置(3054)

     

     二、配置从服务器

      1、同样修改mysql配置文件,设置 server-id

    [mysqld]
    server-id=164   #server-id, 唯一
    

      2、重启MYSQL,执行同步SQL语句(需要主服务器主机名、端口、用户名、密码、二进制文件的名称和位置):

       如果报错提示 ERROR 3021 (HY000):

    ERROR 3021 (HY000): This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL '' first.
    

      先关闭IO线程,再执行同步

    STOP SLAVE IO_THREAD;   #关闭线程
    

      3、启动slave同步进程,查看其状态

    # 启动slave
    START SLAVE;
    
    # 查看状态
    SHOW SLAVE STATUSG;

     Slave_IO_Running、Slave_SQLRunning均为Yes即成功

    三、验证

      当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。主数据库建立数据库,删除数据库,插入数据表,备数据库是否即时同步

    四、主库开启二进制日志后默认记录所有库所有表的操作,可以指定同步或不同步某些库

    # 不同步的数据库
    binlog-ignore-db = mysql
    
    # 只同步的数据库
    binlog-do-db = bosen-shop
    

      上述方案指定需要同步的库可能会导致数据不一致,可以在从库配置 replicate-wild-do-table、replicate-wild-ignore-table代替

    # 不同步的数据库
    replicate-wild-ignore-table=mysql.%
    
    # 只同步的数据库
    replicate-wild-do-table=bosen-shop.%

      

  • 相关阅读:
    token认证、JWT
    DRF序列化、认证、跨域问题
    JS 作用域 p1
    如何配置图标
    关于批量更新与删除
    windows 公司内部搭建禅道(项目管控)
    JS 创建自定义对象的方式方法
    apicloud 消息推送与接收
    apicloud 自定义模块的开发与上架注意事项
    apicloud 第一篇
  • 原文地址:https://www.cnblogs.com/linnuo/p/14973787.html
Copyright © 2011-2022 走看看