Mysql主从复制

实验环境

    ubuntu-16.04.1

    mysql 5.7.16

    xshell_5.0.0.37

    VirtualBox 5.0.24.8355

    Navicat 9

实验步骤

    1.首先创建一个mysql的用户,用户、密码都为ubuntu,并且允许远程访问。

GRANT ALL PRIVILEGES ON *.* TO 'ubuntu'@'%'IDENTIFIED BY 'ubuntu' WITH GRANT OPTION;

FLUSH PRIVILEGES;

    2.在mysql的配置文件中加入配置,目录为/etc/mysql/my.cnf

#master节点

[mysqld]

#mysql的数据目录

#datadir=/mydata/data

#主服务器二进制日志文件前缀名

log-bin=master-bin

# 索引文件

log-bin-index=master-bin.index

# 开启innodb的一表一个文件的设置

innodb_file_per_table=1

# 必须是唯一的

server-id=112

#slave节点

[mysqld]

#mysql的数据目录

#datadir=/mydata/data

#禁用二进制日志,从服务器不需要二进制日志文件

#log-bin=mysql-bin

#设置中继日志

relay-log=relay-log

#中继日志索引

relay-log-index=relay-log.index

# 开启innodb的一表一个文件的设置

innodb_file_per_table=1

#id不要和主服务器的一样

server-id=113

    注意:server-id要为唯一

    3.进入用户名为ubuntu的master节点mysql,输入下面命令查看。

show master status\G

Mysql主从复制_第1张图片
master status

      注意:我们这里需要记下File,Position的指之后再slave节点中需要进行配置。

    4.进入用户名为ubuntu的slave节点mysql,输入下面命令查看。

show slave status;

      查看slave节点的状态

change master to master_host='192.168.3.112',master_user='ubuntu',master_password='ubuntu',master_log_file='master-bin.000001',master_log_pos=154;

      添加复制数据的主服务器ip、用户和密码。以及二进制日志名和复制位置

add slave

start slave;#运行

stop slave;#停止

Mysql主从复制_第2张图片
slave status error

    5.一般的来说上述操作就能完成主从复制,但是,我这里还是没有成功,Slave_IO_Running:NO

并且下方有报错:

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work

      这里它说UUID重复,网上一般说server-id要求唯一,没有注意server-uuid,因为他们大多都是自己在每一台机器上面独立安装mysql的,我偷懒在虚拟机中克隆了一下,并且是在克隆之前安装完成了的mysql,所有生成的uuid会一样。

    6.那么我们就需要将server-uuid搞成不一样的,但是我一开始并没有设置datadir,原来的配置文件也找不到这个选项。

      可以进入mysql中查找datadir,类似server-id,server-uuid的值也都能找到

show variables like 'server_id';

show variables like 'server-uuid';

show variables like 'datadir';

    7.找到datadir的位置为/var/lib/mysql/,查看auto.cnf文件,他们的server-uuid的配置文件果然一样

master server-uuid
Mysql主从复制_第3张图片
slave server-uuid

 

    8.将其中的一台机器的auto.cnf文件备份一份,以防万一。

mv auto.cnf auto.cnf.bk

      之后重启mysql

sudo service mysql restart

      那么随着mysql的重启原来的auto.cnf没有了,mysql就会将它重新生成一个新的auto.cnf。

    9.进入slave查看slave status

Mysql主从复制_第4张图片
slave status success

    10.测试一下是不是能实现主从复制


Mysql主从复制_第5张图片
master before


Mysql主从复制_第6张图片
slave before

create database test;

Mysql主从复制_第7张图片
master after


Mysql主从复制_第8张图片
slave after

      这样就实现了主从复制了。

你可能感兴趣的:(Mysql主从复制)