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';
代表建立一个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;
在从库进行连接主库执行如下sql:
这里的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
Slave_IO_Running: Yes和Slave_SQL_Running: Yes都为yes代表成功了。
flush privileges;
6. 测试主从复制是否好使:
在主库执行sql
create database test;
use test;
create table test1(id int);
在从库里查看:
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