一、主从复制的基本概念
指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器即可充当主机,也可充当从机。MySQL主从复制的基础是主服务器对数据库修改记录二进制日志,从服务器通过主服务器的二进制日志自动执行更新。
二、主从复制的原理
分为三步:
1.master将改变记录到二进制日志(binary log),这些记录过程叫做二进制日志事件,binary log events
2.slave将master的binary log events拷贝到它的中继日志(relay log)
3.slave重做中继日志中的事件,将改变应用到自己的数据库中,MySQL复制是异步的且串行化的
原理图
三、复制的基本原则
1.每个slave只能有一个master
2.每个slave只能有一个唯一的服务器ID
3.每个master可以有多个slave
四、一主一从常见配置
1.mysql版本一致且后台以服务运行
2.主从都配置在mysqld节点下,都是小写
2.1 主机修改my.ini配置文件
2.1.1 主服务器唯一ID(必须)
server-id=1
2.1.2 启用二进制日志(必须)
log-bin=自己本地的路径/mysqlbin
示例:log-biin=D:/mysql-5.7.28-winx64/data/mysqlbin
2.1.3 启用错误日志(可选)
log-err=自己本地的路径/mysqlerr
2.1.4 根目录(可选)
basedir="自己本地路径"
示例:"D:/mysql-5.7.28-winx64/"
2.1.5 临时目录(可选)
tmpdir="自己本地路径"
2.1.6 数据目录(可选)
datadir="自己本地路径/Data/"
2.1.7 read-only=0
设置主机,允许读写操作
2.1.8 设置不需要复制的数据库和需要复制的数据库
binlog-ignore-db=主机数据库名
binlog-do-db=主机数据库名
2.2 从机修改my.ini配置文件
2.2.1 修改从机的服务器ID(必须)
保证server-id唯一
2.2.2 启用二进制日志(可选)
3.修改过配置文件后,需要重启主机和从机的后台mysql服务
4.主机和从机都关闭防火墙
5.在主机上建立账户并授权slave
5.1 grant REPLICATION on *.* to 'zhangsan'@'从机ip' identified by ‘666’;
5.2 flush privileges;
5.3 查询master的状态(记录下File和Position的值)——表示从哪个文件的哪个位置开始同步
show master status;
5.4 不要操作主机保持主机此时的状态
6.在从机上配置需要复制的主机
6,1 change master to master_host='主机ip',master_user='zhangsan',master_password='666',master_log_file='主机file值',master_log_pos=主机Position值;
6.2 start slave;——启动从机
6.3 show slave status\G
检查到Slave_IO_Running和Slave_SQL_Running两个参数都为Yes,则主从配置成功
7.关闭主从复制
stop slave;
注意:每次主从复制重启后都需要先show master status记录下File和Position的值,根据新值再重新配置一遍从机