瑞吉外卖实战项目全攻略——优化篇第二天

优质资源分享

学习路线指引(点击解锁) 知识定位 人群定位
Python实战微信订餐小程序 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
Python量化交易实战 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

瑞吉外卖实战项目全攻略——优化篇第二天

该系列将记录一份完整的实战项目的完成过程,该篇属于优化篇第二天,主要负责完成读写分离问题

案例来自B站黑马程序员Java项目实战《瑞吉外卖》,请结合课程资料阅读以下内容

该篇我们将完成以下内容:

  • Mysql主从复制
  • 读写分离案例
  • 项目实现读写分离

Mysql主从复制

该小节会介绍Linux系统上Mysql的主从复制的全流程

主从复制介绍

Mysql主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能

我们将一台或多台从库(slave)从一台主库(master)进行日志复制然后解析日志并应用到本身,最终实现多台数据库保持数据一致

我们先给出主从复制的流程图:

瑞吉外卖实战项目全攻略——优化篇第二天_第1张图片

下面我们简单介绍一下流程:

  • master将改变记录到二进制文件(Binary log)
  • slave将master的binary log拷贝到它的中继日志(relay log)
  • slave重做中继日志的事件,将改变应用到自己的数据库中

主库只能有一个数据库,但从库可以有多个数据库

主从复制前置条件

我们要完成Mysql数据库的主从复制,就需要拥有两台数据库,我们通常采用虚拟机来准备

我们在前面的Linux课程中已经配置了一台虚拟机,我们只需要将该虚拟机进行克隆即可获得另一台相同的虚拟机:

瑞吉外卖实战项目全攻略——优化篇第二天_第2张图片

但是需要注意的是我们克隆后的虚拟机的IP和UUID是相同的,我们需要将他们修改过来:

  1. 修改IP

如果你的虚拟机没有设置静态IP,那么你生成的克隆虚拟机将不存在这个问题,但你仍需要重设UUID

如果你的虚拟机设置了静态IP,那么克隆机的IP将不做改变,我们这里需要修改克隆机的IP

首先重新生成MAC地址,双击网络配置器,点击高级,生成MAC地址:

瑞吉外卖实战项目全攻略——优化篇第二天_第3张图片

然后进入虚拟机中,输入以下命令查看ip存放目录:

# 查看ip存放目录
ifconfig

进入ip存放目录,修改ip:

# 进入目录
cd /etc/sysconfig/network-scripts

# 访问文件修改ip
vi ifcfg-ens32

进入后我们需要查找这两部分:

# 是否为静态IP
BOOTPROTO='static'

# 将IP改为其他IP
IPADDR='192.168.44.129'

最后重启网卡,查看当前IP即可:

# 重启网卡
service network restart

# 查看IP
ifconfig

  1. 修改UUID

我们的克隆机需要修改UUID,否则无法显示主从复制操作

首先我们进入mysql,自动生成一个UUID复制下来:

# 进入mysql
mysql -uroot -p123456

# 生成UUID
select uuid();

然后查找mysql安装地址并进入配置文件中:

# 查找mysql安装地址
show variables like 'datadir';

# 进入配置文件
vim /var/lib/mysql/auto.cnf

将配置文件中UUID删除,并复制为刚刚生成的UUID即可:

[auto]
server-uuid=7c872b6f-538d-11ed-b0fd-000c299055af

最后重启服务器并重启mysql即可:

# 重启服务器
systemctl restart network

# 重启mysql
systemctl restart mysqld

  1. 保证数据信息一致

目前我们的两台数据库中的信息要保持一致,否则我们在后续操作时会导致错误

主从复制操作实现

下面我们分别从主库和从库两方面来配置主从复制条件

主从复制主库操作实现

下面我们开始主库的配置条件:

  1. 修改Mysql数据库的配置文件/etc/my.cnf
# 进入配置文件
vim /etc/my.cnf

# 在[mysqld]下面复制下面两句即可
[mysqld]
log-bin=mysql-bin # 启动二进制日志
server-id=128 # 设置服务器唯一ID

  1. 重启mysql服务
# 重启mysql服务
systemctl restart mysqld

  1. 登录数据库,执行下面SQL语句
# 登录数据库
mysql -uroot -p123456

# 执行下列语句(生成一个用户,使其具有查询日志的权力)
GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';

  1. 登录数据库,执行下面SQL语句,记录信息
# 执行语句(你将会看到日志相关信息,接下来不要对数据库操作,因为操作会导致日志信息改变)
show master status;

# 你将会看到File和Position信息

你可能感兴趣的:(android,flask,python,后端,计算机)