mysql主从同步
前提:准备好mysql数据库服务器 1主N从 环境:centos7 mysql版本5.7
一.主从同步原理
master:主 slave从
同步主要是slave服务器通过IO线程去读取主服务器的日志文件也就是 主服务器mysql的日志文件binary log,然后存入slave的relay log中(中继日志文件),mysql会通过sql线程将relay log写入数据库中。
主从同步分已下几步:
1)master将CRUD的数据操作记录再本地的 二进制日志中(binary log);该过程称为:二进制日志事件
2)slave将master的binary log拷贝到自己的relay log(中继日志文件)中
3)中继日志事件,将数据读取到自己的数据库中
二.配置主服务器mysql配置文件
一般mysql配置文件都放在/etc/my.cnf
1)在配置文件中填写配置信息
[mysqld]
#二进制日志文件
log-bin=mysql-bin
#日志错误文件(可选)
log-error=mysql-error
#设置server-id,唯一值,标识主机
server-id=1
不同步哪些数据库(可选)
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
只同步哪些数据库,除此之外,其他不同步 (可选)
binlog-do-db = game
binlog-do-db = game1
2)重启服务 并添加mysql用户权限
(1)重启mysql服务
service mysql restart
(2)分配权限
/*1.进入mysql*/
mysql -uroot -p
/*2.分配权限
%允许任何IP访问
也可以写成192.168.1.% 允许192.168.1的网段访问
*/
GRANT REPLICATION SLAVE ON*.*TO 'root'@'%';
/*3.刷新权限*/
flush privileges;
/*4.查看status状态,记下二进制文件名File 和 Position位置,配置从库时使用*/
show master status;
/*
也可以另外创建用户分配权限
CREATE USER 'slave_userid'@'%' IDENTIFIED BY 'slave_pwd';
查看用户是否创建成功
select user,host from mysql.user;
分配权限(IP为可访问该 master的IP,任意IP就写'%')
GRANT REPLICATION SLAVE ON . TO 'slave_userid'@'%';
*/
三、配置从服务器
1)修改配置文件
#1.进入配置文件
vim /etc/my.cnf
#2.添加一行
server-id=2 #设置server-id,唯一值,标识主机
#可以指定需要同步的数据库 replicate-do-db=DatabaseName (主服务器允许同步所有库,但是从服务器可以选择同步部分数据库)
#3.重启服务
service mysql restart
2)进入mysql配置信息
/*1.登录进入mysql ,*/
mysql -u root -p
/*2.执行同步sql语句(主服务器IP地址,用于主从的用户名,密码,二进制文件名,位置)*/
CHANGE MASTER TO
MASTER_HOST='192.168.0.201',
MASTER_USER='slave_userid',
MASTER_PASSWORD='slave_pwd',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=755;
/*3.启动slave同步进程*/
start slave;
/*4.查看slave状态,当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了*/
show slave status\G
/*测试 在master主数据库 添加数据库和表 在slave从服务器查看*/
注意:两台服务器端口记得开放3306