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等可视化连接工具对主库做建表、插入、删除、修改等操作

从库会随之更新

原文地址:https://www.cnblogs.com/luxd/p/11434272.html