MYSQL的主从复制
1. 基本原理
MySQL的复制是异步的、串行化的
2. 执行步骤
- 主机(master) 将改变记录到二进制日志(binary log,简称binlog)。这些记录过程叫二进制日志事件;
- 从机(slave)从主机(master)读取binlog,并拷贝到中继日志(relay log)
- 从机(slave)重做中继日志的事件,将改变应用到自己的数据库中
- 复制的原则
- MySQL的复制是异步的、串行化的
- 主机只能有一台,从机可以多台
- 每一个从机只能有一个唯一的服务器ID
- 从机从接入点开始复制,不会从头复制
- 最大的问题:延时(毫秒),即主从数据读取的延时
3. 主从机的配置
- 主从机的MySQL版本保持一致,后台以服务运行
- 主从配置在mysql节点下,都是小写
- 修改my.ini(主机)配置文件
- 注意:配置前,最好先提前备份my.ini文件,便于恢复
1.主服务器id(必须)
# 服务器id
server id 1
2.启用二进制日志(必须)
- 建议:创建一个新的目录,最好别和mysql混在一起
log-bin=(自己本地的路径)/data/mysqlbin
# 例如
log-bin=D:/devSoft/MySQL5.5/data/mysqlbin
3.启用错误日志(可选)
#错误日志配置
log-err=(自己本地的路径)/data/mysqlerr
4.根目录(可选)
#根目录
basedir="自己本地的路径"
5.临时目录(可选)
#临时目录
tmpdir="自己本地的路径"
6.数据目录(可选)
#数据目录
datadir="自己本地的路径/Data/"
7.设置只读(可选)
#设置只读
read-only=0
8.设置不要复制的数据库(可选)
#设置不要复制的数据库
binlog-ignore-db=mysql
9.设置需要复制的数据库(可选)
- 注意:这里这个数据库先不要创建,先写上名字,等到主从库都搭建完毕后,再创建
#设置需要复制的数据库
binlog-do-db=(需要复制的主数据库名)
10.设置binlog格式
#设置binlog格式
binlog_formal=STATEMENT(默认)
- 补充:
- STATEMENT:会在日志文件中记录所有的写操作SQl,如果语句有函数,如now(),输出当前时间,由于延时关系,会造成主从复制不一致,难以解决
- ROW:在日志中记录每一行的改变,虽然解决主从复制不一致,但是对表中大部分数据进行更新时,效率太低
- MIXED:判断SQL语句中有没有函数,如果没有函数,就是用STATEMENT格式,若有函数,就是用ROW格式,但是只要出现系统变量,会出现主从复制不一致
4. 修改(从机)配置文件
- 从服务器唯一id(必须)
#从服务器唯一id server-id=2
- 启用二进制日志(可选)
5. 重启主从机的MySQL服务
- 注意:如果重启时一直显示“正在启动”,表示配置文件配置错误,使用备份恢复,重新配置
6. 主从机都关闭防火墙
- Windows手动关闭
- Linux虚拟机:service iptables stop 或者 systemctl stop firewalld
7. 在主机上建立账户并授权slave
- 给从机授权、名字、密码
# 从机数据库ip 可以直接写 % ,表示所有远程用户
GRANT REPLICATION SLAVE ON *.* TO 'slave200806'@'从机数据库ip【%】' IDENTIFIED BY '123456';
2.订阅
Subtopic;
3.刷新
flush privileges;
4.查询主机状态
show master status;
)
- 记录下File和Position的值
8. 在Linux从机配置需要复制的主机
1.给从机 授权、名字、密码
#注意:主机地址要和从机地址在一个网段,即前三个字段要一样,第四个字段为 1
CHANGE MASTER TO MASTER_HOST='主机 IP',
MASTER_USER='slave200806',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='前面要记住的 File值',MASTER_LOG_POS=前面要记住的 Position值;
2.启动从服务器复制功能
start slave;
3.查看配置结果
show slave status\G;
- 如果以下两项为Yes表示配置成功
- Slave_IO_Running
- Slave_SQL_Running
)
9. 主机新建库、新建表、插入数据,从机复制
10. 停止从服务复制功能
stop slave;
11. 重新配置主从机设置
reset master;
- 注意:重新配置需要
- 先停止服务
- 重新配置,即stop slave;-> reset master;
- 然后回到“从机配置”第一步
12. 如果配置失败
- 检查有没有关闭防火墙
- 检查主机状态中的File与Position字段的值有没有变化
Enjoy Reading This Article?
Here are some more articles you might like to read next: