IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 瑞吉外卖 —— 12、项目优化:主从复制、读写分离 -> 正文阅读

[大数据]瑞吉外卖 —— 12、项目优化:主从复制、读写分离

目录

1、问题说明

2、MySQL 主从复制

2.1、介绍

2.2、配置

2.2.1、主库

2.2.2、从库

2.3、测试

3、读写分离

3.1、背景

3.2、Sharding - JDBC

3.3、读写分离案例

3.3.1、引入依赖

3.3.2、在配置文件配置读写分离规则 和?允许 bean 定义覆盖配置项

4、项目实现读写分离

4.1、引入依赖

4.2、修改配置文件

5、Nginx

5.1、介绍

5.2、下载和安装?

5.3、nginx 目录结构

5.4、nginx 命令

5.4.1、查看版本

5.4.2、检查配置文件正确性

5.4.3、启动和停止 Nginx

5.4.4、重新加载配置文件

5.5、nginx 配置文件结构

5.6、nginx 具体应用

5.6.1、部署静态资源

5.6.2、反向代理

5.6.3、负载均衡


1、问题说明

2、MySQL 主从复制

2.1、介绍

2.2、配置

2.2.1、主库

① 修改配置文件 /etc/my.cnf

vim /etc/my.cnf

?添加以下配置

log-bin=mysql-bin      # 启用二进制日志
server-id=100          # 服务器唯一id

② 重启 Mysql 服务

systemctl restart mysqld

③ 登录 Mysql 数据库,执行下面的 SQL

GRANT REPLICATION SLAVE ON *.* to 'zyj'@'%' identified by 'Root@***';

注:上面SQL的作用是创建一个用户 xiaoming,密码为 Root@***,并且给 xiaoming 用户授予 REPLICATION SLAVE 权限。常用于建立复制时所需要用到的用户权限,也就是 slave 必须被 master 授权具有该权限的用户,才能通过该用户复制。

④?登录Mysql数据库,执行下面SQL,记录下结果中 File 和 Position 的值

show master status;

注:上面SQL的作用是查看Master的状态,执行完此SQL后不要再执行任何操作

2.2.2、从库

① 修改配置文件 /etc/my.cnf

vim /etc/my.cnf

如下图,添加配置?

server-id=101

?② 重启 Mysql 服务

systemctl restart mysqld

③ 登录 Mysql 数据库,执行下面的 SQL

change master to master_host='主库ip',master_user='角色用户名',master_password='角色密码',master_log_file='mysql-bin.000005',master_log_pos=主库Position;

执行完后开启线程

start slave;

④ 查看结果

show slave status\G;

若和上图三个框的内容一样,说明开启成功

2.3、测试

在主库创建数据库和表,从库也会创建响应的数据库和表

3、读写分离

3.1、背景

3.2、Sharding - JDBC

3.3、读写分离案例

读写分离步骤:

  • 导入 Maven 坐标
  • 在配置文件配置读写分离规则
  • 在配置文件允许 bean 定义覆盖配置项

3.3.1、引入依赖

        <!-- 读写分离依赖 -->
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>4.0.0-RC1</version>
        </dependency>

3.3.2、在配置文件配置读写分离规则 和?允许 bean 定义覆盖配置项

server:
  port: 8080
spring:
  shardingsphere:
    datasource:
      names:
        master,slave  # 数据源名字,可自定义,只要上下对应即可
      # 主数据源
      master:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.44.128:3306/rw?characterEncoding=utf-8&useSSL=false
        username: root
        password: zyj123
      # 从数据源
      slave:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.44.127:3306/rw?characterEncoding=utf-8&useSSL=false
        username: root
        password: zyj123
    masterslave:
      # 读写分离配置
      load-balance-algorithm-type: round_robin  # 负载均衡策略:轮询
      # 最终的数据源名称
      name: dataSource
      # 主库数据源名称
      master-data-source-name: master
      # 从库数据源名称列表,多个逗号分隔
      slave-data-source-names: slave
    props:
      sql:
        show: true #开启SQL显示,默认false
  main:
    allow-bean-definition-overriding: true  # 允许 bean 定义覆盖配置项
mybatis-plus:
  configuration:
    #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      id-type: ASSIGN_ID

4、项目实现读写分离

4.1、引入依赖

        <!-- 读写分离依赖 -->
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>4.0.0-RC1</version>
        </dependency>

4.2、修改配置文件

spring:
  application:
    name: reggie_take_out # 应用名称,若不配置默认为当前项目的工程名
#  datasource:
#    druid:
#      driver-class-name: com.mysql.cj.jdbc.Driver
#      url: jdbc:mysql://localhost:3306/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
#      username: root
#      password: zyj123
  shardingsphere:
    datasource:
      names:
        master,slave  # 数据源名字,可自定义,只要上下对应即可
      # 主数据源
      master:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.44.128:3306/reggie?characterEncoding=utf-8&useSSL=false
        username: root
        password: zyj123
      # 从数据源
      slave:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.44.127:3306/reggie?characterEncoding=utf-8&useSSL=false
        username: root
        password: zyj123
    masterslave:
      # 读写分离配置
      load-balance-algorithm-type: round_robin  # 负载均衡策略:轮询
      # 最终的数据源名称
      name: dataSource
      # 主库数据源名称
      master-data-source-name: master
      # 从库数据源名称列表,多个逗号分隔
      slave-data-source-names: slave
    props:
      sql:
        show: true #开启SQL显示,默认false
  main:
    allow-bean-definition-overriding: true  # 允许 bean 定义覆盖配置项

5、Nginx

5.1、介绍

5.2、下载和安装?

Windows 下载地址:nginx: download?,选择需要的版本下载即可

Linux :

安装依赖包:
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

安装wget
yum install wget

下载nginx安装包
wget http://nginx.org/download/nginx-1.16.1.tar.gz

解压
tar -zxvf nginx-1.16.1.tar.gz -C /usr/local

进入根目录
cd nginx-1.16.1/

创建安装目录
mkdir -p /usr/local/nginx

检查nginx安装环境
./configure --prefix=/usr/local/nginx

编译并安装nginx
make && make install

5.3、nginx 目录结构

5.4、nginx 命令

5.4.1、查看版本

在进入 nginx 目录下的 sbin 目录后,使用以下命令可以查看 nginx 版本

./nginx -v

5.4.2、检查配置文件正确性

在启动 Nginx 服务之前,可以先检查一下 conf/nginx.conf 文件配置的是否有错误,进入 nginx 目录下的 sbin 目录后执行如下命令:?

./nginx -t

5.4.3、启动和停止 Nginx

启动:

./nginx

启动后配置完防火墙,在浏览器访问 ip 地址即可看到如下界面:

启动后可以查看 nginx 进程

ps -ef | grep nginx

停止:

./nginx -s stop

启动后,在 logs 目录下会生成 nginx.pid 文件,里面记录的是当前 nginx 程序的 pid,停止后会消失

5.4.4、重新加载配置文件

当修改Nginx配置文件后,需要重新加载才能生效,可以使用下面命令重新加载配置文件:

./nginx -s reload

5.4.5、

修改?/etc/profile 文件

在 PATH 前加上 nginx 的 sbin 的完整路径,这里是 /usr/local/nginx/sbin:? (注意有个冒号)

PATH=/usr/local/nginx/sbin:$JAVA_HOME/bin:$PATH

修改完后重新加载

source /etc/profile

5.5、nginx 配置文件结构

全局块:从开始到 events 之前

5.6、nginx 具体应用

5.6.1、部署静态资源

5.6.2、反向代理

5.6.3、负载均衡

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:35:41  更:2022-09-21 00:37:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:07:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码