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


    🚀 优质资源分享 🚀

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

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

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

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

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

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

    Mysql主从复制

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

    主从复制介绍

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

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

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

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

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

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

    主从复制前置条件

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

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

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

    1. 修改IP

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

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

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

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

    # 查看ip存放目录
    ifconfig
    
    
    • 1
    • 2
    • 3

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

    # 进入目录
    cd /etc/sysconfig/network-scripts
    
    # 访问文件修改ip
    vi ifcfg-ens32
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    # 是否为静态IP
    BOOTPROTO='static'
    
    # 将IP改为其他IP
    IPADDR='192.168.44.129'
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    # 重启网卡
    service network restart
    
    # 查看IP
    ifconfig
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 修改UUID

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

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

    # 进入mysql
    mysql -uroot -p123456
    
    # 生成UUID
    select uuid();
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    # 查找mysql安装地址
    show variables like 'datadir';
    
    # 进入配置文件
    vim /var/lib/mysql/auto.cnf
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

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

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

    # 重启服务器
    systemctl restart network
    
    # 重启mysql
    systemctl restart mysqld
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 保证数据信息一致

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

    主从复制操作实现

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

    主从复制主库操作实现

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

    1. 修改Mysql数据库的配置文件/etc/my.cnf
    # 进入配置文件
    vim /etc/my.cnf
    
    # 在[mysqld]下面复制下面两句即可
    [mysqld]
    log-bin=mysql-bin # 启动二进制日志
    server-id=128 # 设置服务器唯一ID
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 重启mysql服务
    # 重启mysql服务
    systemctl restart mysqld
    
    
    • 1
    • 2
    • 3
    1. 登录数据库,执行下面SQL语句
    # 登录数据库
    mysql -uroot -p123456
    
    # 执行下列语句(生成一个用户,使其具有查询日志的权力)
    GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 登录数据库,执行下面SQL语句,记录信息
    # 执行语句(你将会看到日志相关信息,接下来不要对数据库操作,因为操作会导致日志信息改变)
    show master status;
    
    # 你将会看到File和Position信息
    • 1
    • 2
    • 3
  • 相关阅读:
    【Beyond Compare】大小写对比的设置
    利用百分位点函数ppf计算置信区间上下限
    MYSQL的CRUD语句(含c++代码)
    代码混淆界面介绍
    分布式锁的三种实现方式
    【Linux】UDP的服务端 + 客户端
    vue项目路由重定向之后匹配路由的问题
    模板、策略以及工厂模式
    osqp的原理ADMM(交替方向乘子法)理解
    7、【Qlib】【主要组件】Data Layer:数据框架与使用
  • 原文地址:https://blog.csdn.net/u012804784/article/details/127598093