MySQL5.6主从复制的配置

实验环境

  1. 主库机器IP: 10.10.10.248
  2. 从库机器IP: 10.10.10.166
  3. 数据库版本: Mysql 5.6
  4. 操作系统: Ubuntu 14.04

配置主库

修改/etc/mysql/my.cfg配置,在[mysqld]下面添加:

1
2
3
4
5
6
7
8
9
10
11
12
# 启动二进制文件
log-bin=mysql-bin

# 服务器ID
server-id=1

# 要同步的数据库(多个可重复指定)
#binlog-do-db=api
#binlog-do-db=blog

# 不要同步的数据库
#replicate-ignore-db=test

保存后重启mysql:

1
sudo /etc/init.d/mysql restart

创建一个用户,并授权给从服务器

登录mysql

1
mysql -uroot -p

创建用户kyg并授权给从服务器:

1
grant replication slave on *.* to 'kyg'@'10.10.10.166' identified by 'kyg';

master

最后别忘了刷新权限:

1
flush privileges;

查看主库状态

1
show master status;

记录下FilePosition的值,后面配置从库时会用到

master-status

配置从库

修改/etc/mysql/my.cfg配置,在[mysqld]下面添加:

1
2
# 从库ID
server-id=2

保存后重启mysql:

1
sudo /etc/init.d/mysql restart

登录mysql,并配置相关参数:

1
2
3
4
5
6
change master to  
master_host = '10.10.10.248',
master_user = 'kyg',
master_password = 'kyg',
master_log_file = 'mysql-bin.000004',
master_log_pos = 120;

查看从库状态

1
show slave status \G;

会发现从库还没开启复制

slave-status1

这时候就需要开启从库的复制功能start slave;

slave-status2

上面的截图再往下滚动, 可能会看见报错:

1
error connecting to master 'kyg@10.10.10.248:3306' - retry-time: 60  retries: 7

这是由于主库配置了bind-address:127.0.0.1, 为了简单,我直接把这一行配置注释了(有安全隐患)

停止从库的复制功能:

1
stop slave

测试

在主库创建一个数据库blog

然后在从库中查看所有数据库

1
show databases;

show-db

会发现从库从主库中复制了一个数据库, 实验已经成功,其他CRUD请自行实验