1.概念
- 指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器
- 主服务器中的数据自动复制到从服务器中
- 即就是主数据库做什么,从数据库做什么
2.主从复制工作原理
- Master数据库只要发生变化,立马记录到Binary log日志文件中
- Slave数据库启动一个I/O thread连接Master数据库,请求Master变化的二进制日志
- Slave I/O获取到的二进制日志,保存到自己的Relay log日志文件中
- Slave有一个SQL thread定期检查Realy log是否变化,变化就更新数据
3.使用mysql主从的原因
- 实现服务器的负载均衡
- 通过复制实现数据的异地备份
- 提高数据库系统的可用性
4.主从复制的原理(position)
- 异步复制(主从复制)master节点不会关心slave节点的状态,只需要写自己的数据即可
- 能不能完成复制看slave节点的io线程和sql线程是否开启
- mysql的主从配置又叫replication,AB复制,基于binlog二进制日志
- 主数据库必须开启binlog二进制日志才能进行复制
- mysql的主从复制(异步复制)(基于position)把一个事件拆开来复制
- 并不是以一个完整的事件为单位来进行复制
主库开启binlog日志(设置log-bin参数)
主从server-id不同
从库服务器能连同主库
master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
从库生成两个线程,一个i/o线程,一个SQL线程,i/o线程去请求主库的binlog,sql线程进行日志回放来复制
slave将master的binary log events拷贝到它的中继日志(relay log);
slave重做中继日志中的事件,将更改应用到自己的数据上。
- 注意:
- 一开始两个mysql必须一模一样,否则会报错 master自己做自己的,写在自己的日志里
- slave能否同步成功取决于IO线程,和SQL线程回放日志 IO通过联系master拿到master的二进制日志,SQL回放日志
- slave节点的数据总比master节点的数据慢
5.实验步骤
实验环境:
- master节点:number1,ip为172.25.254.1
- slave节点:number2,ip为172.25.254.2
- 测试:真机,ip为172.25.254.76
配置master节点(number1上)
- 在官网上下载mysql的包
mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar
tar xf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar
#解压- 安装所需要的rpm包
yum install mysql-community-client-5.7.25-1.el7.x86_64.rpm
mysql-community-common-5.7.25-1.el7.x86_64.rpm
mysql-community-libs-5.7.25-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
mysql-community-server-5.7.25-1.el7.x86_64.rpm -y