1.概述:
主从复制是指将主数据库的DDL语句和DML语句操作通过二进制日志传到从库数据库当中,从库对这些日志重新执行(页叫重做),从而保持从库和主库数据保持一致。MySQL支持一台主库同时向多台从库进行复制,从库也可以作为其它服务器的主库,从而实现链状复制
作用:
1)主库如果出现问题,可以切换到从库提供服务
2)实现读写分离,降低主库的访问压力
3)可以从从库中进行备份
2.原理
主从复制分三步:
3.搭建
1)准备两台服务器,并且设置防火墙(我这里是两个linux服务器):
开发指定的3306端口号 |
---|
firewall -cmd --zone=public--add-port=3306/tcp -permanent |
firewall-cmd-reload |
关闭防火墙 |
---|
systemctl stop firewalld |
systemctl disable firewalld |
关闭防火墙的两条指令都需要执行:
- 主库搭建
1)需要先配置两个变量
需要使用vim编辑器 变量配置如下
2)需要创建一个远程连接的账号,并授予主从复制权限
创建用户并设置密码,该用户可以任意连接mysql服务器 | CREATE USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码' |
分配主从复制权限 | GRANT RIPLICATION SLAVE ON *.* TO '用户名'@'%' |
创建用户
赋予权限
如果出现这样的问题
那是因为符号问题,认真检查符号,改成英文符号。
3)查看二进制坐标:
show master status |
- 从库搭建
1)配置两个变量
2)连接主库用户:
CHANGE REPLICATION SOURCE TO SOURCE_HOST='IP地址',SOURCE_USER='用户名',SOURCE_PASSWORD='密码',SOURCE_LOG_FILE='二进制文件',SOURCE_LOG_POS=坐标; |
3)同步:
4)查看主从同步状态:
如果出现以下问题
可以试着将从库重启:systemctl restart mysqld