zoukankan      html  css  js  c++  java
  • MySQL主从复制

    主从复制:

      mysql要做到主从复制,其实依靠的是二进制日志,即:假设主服务器叫A,从服务器叫B;主从复制就是

      B跟着A学,A做什么,B就做什么。那么B怎么同步A的动作呢?现在A有一个日志功能,把自己所做的增删改查的动作

      全都记录在日志中,B只需要拿到这份日志,照着日志上面的动作施加到自己身上就可以了。这样就实现了主从复制。

    环境:

      主库:阿里云 MySQL5.7 (Windows Server2008)

      从库:个人计算机 MySQL5.7 (Win 10)

    1、配置master(主库)

      找到MySQL的配置文件,一般位于MySQL安装位置根目录或者Data文件目录中

      在[mysqld]下边,添加以下三个参数

        log-bin=mysql-bin  //将mysql二进制日志取名为mysql-bin

        binlog_format=mixed //二进制日志的格式,有三种:statement/row/mixed,具体分别不多做解释,这里使用mixed

        server-id=101 //为服务器设置一个独一无二的id便于区分,这里使用ip地址的最后一位充当server-id

     2、配置slave(从库)

      步骤同1,server-id不同即可

    3、分别重启主库从库

    4、在主库上为从库分配一个账号

    Microsoft Windows [版本 6.1.7601]
    版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
    
    C:UsersAdministrator>mysql -u root -p
    Enter password: ****
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 10
    Server version: 5.7.20-log MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
    
    mysql> grant replication slave on *.* to 'slave'@'%' identified by 'slave';
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> show master status;
    +------------------+----------+--------------+------------------+---------------
    ----+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_
    Set |
    +------------------+----------+--------------+------------------+---------------
    ----+
    | mysql-bin.000002 |     1483 |              |                  |
        |
    +------------------+----------+--------------+------------------+---------------
    ----+
    1 row in set (0.00 sec)
    
    mysql>

     其中“grant replication slave on *.* to 'slave'@'%' identified by 'slave';” ,在主库上为slave账号分配了replication 权限

    “show master status;” 查看主服务器BIN日志的信息(执行完之后记录下这两值,然后在配置完从服务器之前不要对主服务器进行任何操作,因为每次操作数据库时这两值会发生改变).

    5、配置从库

    mysql> stop slave;
    ERROR 2006 (HY000): MySQL server has gone away
    No connection. Trying to reconnect...
    Connection id:    3
    Current database: mysql
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> show slave status;
    Empty set (0.00 sec)
    :: 此处配置的是主库的地址
    mysql> change master to master_host='**.**.**.**';
    Query OK, 0 rows affected (0.07 sec)
    
    mysql> change master to master_user='slave';
    Query OK, 0 rows affected, 2 warnings (0.04 sec)
    
    mysql> change master to master_password='slave';
    Query OK, 0 rows affected, 2 warnings (0.04 sec)
    :: 与上一步在主库上查询的结果一致即可
    mysql> change master to master_log_file='mysql-bin.000002';
    Query OK, 0 rows affected, 1 warning (0.04 sec)
    :: 与上一步在主库上查询的结果一致即可
    mysql> change master to master_log_pos=1483;
    Query OK, 0 rows affected (0.04 sec)
    :: 开始主从复制
    mysql> start slave;
    Query OK, 0 rows affected (0.01 sec)

    6、配置完成

    如果上述步骤都正常执行完毕,那么现在就配置完成了

    使用Navicat等可视化连接工具对主库做建表、插入、删除、修改等操作

    从库会随之更新

  • 相关阅读:
    4. Android框架和工具之 android-async-http
    3. Android框架和工具之 xUtils(BitmapUtils)
    自定义多列排序:C++/Java实现
    Java套接字
    Java泛型
    线程同步之生产者消费者
    面向对象之深复制与浅复制
    谈谈多线程
    递归与尾递归
    单例模式:Instance
  • 原文地址:https://www.cnblogs.com/luxd/p/11434272.html
Copyright © 2011-2022 走看看