MySQL 5.7主从同步(复制)配置

主从同步mysql数据库,在虚拟机上完成主从配置,系统是CentOS7.4,mysql版本是5.7.21

主服务器的ip:192.168.1.136 

从服务器的ip:192.168.1.144

 

1. 首先在主库(192.168.1.136)上执行:

mysql -u root -p

 

CREATE USER 'slave'@'localhost' IDENTIFIED BY 'slave';

MySQL 5.7主从同步(复制)配置

代表建立一个slave用户,密码为123456,并且,这个主库能允许从库(192.168.1.144)的ip以slave用户来登陆

 

2. 配置主库:

在/etc/my.cnf文件下增加 
server-id=1 
log_bin=mysql-bin

#binlog_format=mixed
binlog_format=row

binlog-ignore-db=mysql    #不同步的数据库

expire_logs_days=30     #自动清理30天前的log文件,可根据需要修改

 

server-id在数据库配置中必须是唯一的,重启主库的mysql

service mysqld restart


3. 在主库执行sql:
show master status;

MySQL 5.7主从同步(复制)配置

在从库进行连接主库执行如下sql: MySQL 5.7主从同步(复制)配置

这里的master_log_file 和msater_log_pos的值都来自于刚刚主库的这条sql:show master status

 

从库配置如下:

server-id=7
log_bin=mysql-bin
binlog_format=row
binlog-ignore-db=mysql
binlog-do-db=learning_system
expire_logs_days=30

skip-name-resolve

sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=8192

wait_timeout=315360000
interactive_timeout=315360000
slave-skip-errors = 1007,1008,1053,1062,1213,1158,1159
relay_log_recovery = 1
 

4. 启动主从复制

stop slave;

在从库执行:start slave; 

 

5. 检查环境是否成功

从库执行 show slave status\G

MySQL 5.7主从同步(复制)配置

Slave_IO_Running: Yes和Slave_SQL_Running: Yes都为yes代表成功了。

 flush privileges;

 

6. 测试主从复制是否好使:

在主库执行sql 

create database test;

use test;

create table test1(id int);

MySQL 5.7主从同步(复制)配置

 

在从库里查看:

MySQL 5.7主从同步(复制)配置

7. MySQL数据库的主从配置就完成,实际应用中可能会用到单个表的同步,或者部分表的同步,只需要在主库的/etc/my.cnf里加上

replicate-do-table=tablename        #只复制某个表
replicate-wild-do-table=tablename%  #只复制某些表(可用匹配符)
replicate-do-db=dbname                #只复制某个库
replicte-wild-do-db=dbname%       #只复制某些库
replicate-ignore-table=tablename  #不复制某个表

转载于:https://my.oschina.net/michaelshu/blog/1787037