整理记录下学习整个瑞吉外卖项目,详细代码可在我的Gitee仓库瑞吉外卖实战克隆下载学习使用!
2. MySQL主从复制
2.1 介绍
MySQL主从复制是一个异步的复制过程,底层是基于MySQL数据库自带的二进制日志功能。即一台或多台MySQL数据库(slave从库)从另一台MySQL数据库(Master,主库)进行日志的复制,然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。此功能是数据库自带功能,无需借助第三方工具。
2.2 步骤
- master将改变记录到二进制日志(binary log)
- slave将master的binary log拷贝到它的中继日志(relay log)
- slave 重做中继日志中的时间,将改变应用到自己的数据库中
2.3 配置-前提条件
准备好两台机器。分别安装好MySQL并启动服务成功
- 主库Master :127.0.0.1:3306
- 从库 Slave:127.0.0.2:3308
2.4 配置主库Master
- 修改MySQL数据库的配置文件my.cnf,这里主库是windows上的数据库,修改如图
- 重启主库服务,手动重启,linux则用命令
service mysql restart
即可。 - 登录主库,Mysql 5.7 版本执行SQL语句:
grant replication on *.* to 'xiaoming'@'%' identified by 'root@123456';
MySQL 8.0版本执行语句:
CREATE USER 'xiaoming'@'%' IDENTIFIED BY 'root@123456';GRANT ALL PRIVILEGES ON *.* TO 'xiaoming'@'%';
- 登录主库,执行
show master status
,记录file和position值,如图
2.5 配置从库Slave(使用的Ubuntu)
- 修改数据库配置文件my.cnf,配置与主库不一样的id,linux 命令
vim /etc/mysql/mysql.conf.d/mysqld.cnf
,i进入编辑,修改如图
- 重启服务,如图
- 登录数据库,Mysql 8.0 版本执行语句
change master to master_host='127.0.0.1',master_user='xiaoming',master_password='root@123456',master_log_file='mysql-bin.000003',master_log_pos=860,get_master_public_key=1;start slave;
,如图 - 查看从库状态,用Navicat执行命令
show slave status
,如图 - 若提示不是上图,可在从库查看错误日志,命令
vim /var/log/mysql/error.log
如图
上图是因为没加get_master_public_key=1导致,8.0版本必须得加
这里则是两库的server_id一样,可通过命令show variables like 'server_id';
来查看,执行命令set global server_id=4
来修改。