mysql主从复制

 参考MySQL入门04-MySQL主从配置

 主节点:win10,mysql5.7.15

  1,关闭防火墙或设置防火墙规则(否则从节点无法连接主节点,导致Slave_IO_Running: No):

我使用了设置一条入站规则

然后设置该‘3306端口’这条规则的作用域

或者直接关闭防火墙,之后就可以让从节点mysql远程连接到主节点了

  2,主节点授权同步用户

官方文档是分两步进行的:

mysql> CREATE USER 'repl_user'@'192.168.200.101' IDENTIFIED BY 'test111111';
mysql> GRANT REPLICATION SLAVE ON . TO 'repl_user'@'192.168.200.101';

实际上一条命令即可:

grant replication slave on *.* to 'repl_user'@'192.168.200.101' identified by 'test111111';

  3,主节点master规则设置

在my.ini中设置相关规则如下:这些主从复制规则需要在[mysqld]下编写

#主服务器的配置
#开启二进制日志
log-bin=master-bin
#为服务器添加唯一的编号
server-id=1
#只把shopping数据库的数据进行主从复制,可以设置多行
binlog-do-db=shopping
#忽略mysql数据库的操作(不对这个数据库进行主从备份,一般是系统数据库),可以设置多行
#binlog-ignore-db=mysql
#binlog-ignore-db=information_schema
#binlog-ignore-db=performance_schema
#binlog-ignore-db=sys
#下面两行用户在双主(多主循环)互相备份,表的主键自动增长问题。防止主键冲突
#auto-increment-increment=10
#auto-increment-offset=1

 重启mysql

至此,master配置完成,

从节点:ubuntu16.10,mysql5.7.17

注:网上都说 从节点mysql版本要大于等于主节点mysql版本

  1,ubuntu16.10上安装mysql5.7.17

参考Ubuntu安装MySQL5.7.10,步骤是一样的

    (1)、首先到官网下载ubuntu版本的mysql

由于ubuntu是64位的,所以我下载的是这个包:mysql-server_5.7.17-1ubuntu16.10_amd64.deb-bundle.tar

    (2)、然后将包解压到某个文件夹下面:

我就直接解压到当前文件夹下,里面包含如下文件(tar -zxvf mysql.................)

    (3)、安装deb文件

sudo dpkg -i XXXX,安装过程中注意安装顺序,如果顺序错了,会有提示信息提示具体需要先安装那些东西的。

1. mysql-common 

2. libmysqlclient20

3. libmysqlclient-dev

4.libmysqld-dev

5. mysql-community-client

6. mysql-client

7. mysql-community-source

8. mysql-community-server

只需要将这8个包安装就可以了

其中在安装mysql-community-server时需要libmecab2_0.996-1.3_amd64.deb(注意提示信息中需要的最低版本)

下载地址http://packages.ubuntu.com/yakkety/libmecab2

    (4)、前三步没有问题,则安装成功

/etc/init.d/mysql start 启动mysql

/etc/init.d/mysql stop 关闭mysql

  2,配置从节点slave规则

打开mysql配置文件:/etc/mysql/my.cnf,我的配置如下

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
server-id=3
replicate-do-db=shopping

需要设置唯一的id号,备份的数据库名称

 开启主从复制

  1,获取当前主节点的状态

主节点上锁:

mysql> FLUSH TABLES WITH READ LOCK;

主节点查看状态:

mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000002 |      447 | shopping     |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

  2,从节点配置并启动同步。查看状态

如果一开始配置了slave需要执行下面两句话

stop slave;
reset slave;

然后配置slave

change master to 
master_host='192.168.200.115',
master_user='repl_user',
master_password='test123456',
master_port=3306,
master_log_file='master-bin.000002',
master_log_pos=447;

可以看到,这个配置中的用户为刚开始在master中创建的用于备份的用户。

然后启动slave

start slave;

查看从节点的状态

mysql> show slave status G;

其中的如下两个结果都为Yes,表示成功。

  3,主节点解锁并进行插入操作验证是否正常同步

主节点解锁:

mysql> UNLOCK TABLES;

主节点shopping数据库下的某个表增加一条数据,若从节点也同步增加了这条数据,则可以验证成功

原文地址:https://www.cnblogs.com/ljdblog/p/6278582.html