文章目录
- 一、复制的基本原理
- 1、slave会从master读取binlog来进行数据同步
- 2、三步骤+原理图
- 二、复制的基本原则
- 三、复制的最大问题
- 四、一主一从常见配置
- 1、mysql版本一致且后台以服务运行
- 2、主机、从机都配置在==[mysqld]==结点下,都是小写
- 3、主机(==Windows10==)修改**my.ini**配置文件
- 4、 mysql主从复制起始时,从机不继承主机数据
- 5、从机(==centos7==)配置文件修改**my.cnf**的[mysqld]栏位下
- 6、 因修改过配置文件,请主机+从机都重启后台mysql服务
- 7、主机从机都关闭防火墙
- 8、在Windows主机上建立帐户并授权slave
- 9、在Linux从机上配置需要复制的主机
- 10、主机新建库、新建表、insert记录,从机复制
- 11、如何停止从服务复制功能
- 12、如何重新配置主从
- 13、注意
以下的主从复制搭建的环境介绍:
(1)主机是在Windows下搭建的数据库
(2)从机是在centos7下搭建的数据库
(3)主机和从机是在同一个网关下
一、复制的基本原理
1、slave会从master读取binlog来进行数据同步
2、三步骤+原理图
MySQL复制过程分成三步:
(1)master将改变记录到二进制日志==(binary log)==。这些记录过程叫做二进制日志事件,binary log events;
(2)slave将master的binary log events拷贝到它的中继日志==(relay log)==;
(3)slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的
注意:
(1)从机开始复制的内容是连接到主机之后的内容
(2)redis的主从复制是直接复制主机上的所有内容,只要连接上就是复制所有的内容!这是mysql和redis的主从复制的区别
(3)主从复制是靠日志文件进行操作的
二、复制的基本原则
(1)每个slave只有一个master
(2)每个slave只能有一个唯一的服务器ID
(3)每个master可以有多个salve
三、复制的最大问题
MySQL主从复制的最大问题是**“延时”**
建议:
我们在操作数据库的时候,尤其是插入数据的操作,不能刚插进去就取出(虽然时间很短),最好中间有其它事情执行之后再进行操作。
四、一主一从常见配置
1、mysql版本一致且后台以服务运行
2、主机、从机都配置在==[mysqld]==结点下,都是小写
3、主机(Windows10)修改my.ini配置文件
(1)主服务器唯一ID
server-id=1
(2)启用二进制日志
log-bin=自己本地的路径/data/mysqlbin
log-bin=D:/devSoft/MySQLServer5.5/data/mysqlbin
(3)设置不要复制的数据库
binlog-ignore-db=mysql
(4)设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字(配置完主机和从机之后,再配,记住这个地方别忘了)
(5)设置logbin格式
binlog_format=STATEMENT(默认)
binlog_format=STATEMENT(默认)
binlog_format=ROW
4、 mysql主从复制起始时,从机不继承主机数据
5、从机(centos7)配置文件修改my.cnf的[mysqld]栏位下
设置下面连个地方:
- server-id = 2
注意:my.cnf 中有server-id = 1(没有的话更好) - relay-log=mysql-relay
6、 因修改过配置文件,请主机+从机都重启后台mysql服务
centos:
systemctl restart mysqld
windows:
下面有截图
7、主机从机都关闭防火墙
(1)windows手动关闭
第一步:
安全工具关上:腾讯管家
360不影响
第二步:
(2)Linux关闭防火墙
关闭虚拟机linux防火墙 systemctl stop firewalld
8、在Windows主机上建立帐户并授权slave
GRANT REPLICATION SLAVE ON . TO 'zhangsan'@'从机器数据库IP' IDENTIFIED BY '123456';
查询master的状态
show master status;
记录下File和Position的值,后面需要用到
执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
9、在Linux从机上配置需要复制的主机
CHANGE MASTER TO MASTER_HOST='主机IP(查看后面的说明)',
MASTER_USER='zhangsan',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='File名字',
MASTER_LOG_POS=Position数字;
#示例:
CHANGE MASTER TO MASTER_HOST='192.168.124.3',
MASTER_USER='zhangsan',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.具体数字',
MASTER_LOG_POS='具体值';
主机的 IP要和从机的 IP在同一个网关之下:
主机(Windows10)从机(centos7)
启动从服务器复制功能
start slave;
show slave status\G;
下面两个参数都是Yes,则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
10、主机新建库、新建表、insert记录,从机复制
11、如何停止从服务复制功能
stop slave;
12、如何重新配置主从
stop slave;
reset master;
13、注意
mysql和redis的不同之处是,mysql是复制连接主机之后的内容,redis是复制主机上的所有内容