项目优化-

前言

用户浏览菜品,添加购物车,下单等操作最终都会反映成一个sql,操作数据库。

但是当前系统只部署了一台数据库,读和写所有压力都由一台数据库承担,压力大;如果数据库服务器磁盘损坏则数据丢失,单点故障。我们要从这两个方面来优化项目。

一、Mysql主从复制

1.介绍 

 2.配置

提前准备好两台服务器,分别安装Mysql并启动服务成功。我用windows上的mysql作为主库,linux上的mysql作为从库。

(1)配置Windows主库

①修改Mysql的配置文件

找到 my.ini文件

在[mysqld]下面增加配置:

[mysqld]
log-bin=mysql-bin  #启用二进制日志
server-id=100       #服务器唯一ID(唯一即可)

②重启mysql服务

③创建用于同步的用户账号(用于master与slave通信)

登录mysql数据库

mysql -uroot -p

执行语句创建用户授权

CREATE USER 'xiaohei'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'xiaohei'@'%';
FLUSH PRIVILEGES;

 

④查看主库状态,记录二进制文件名和位置

show master status;

二进制文件为 LAPTOP-2PQ440VH-bin.000118,位置为2726。

之后这里不要有任何操作,否则文件和文章会变。

(2)配置linux从库

①修改mysql的/etc/my.cnf文件


 

②重启mysql

 

③登录mysql数据库,执行下面的sql

change master to master_host='192.168.2.81',master_user='xiaohei',master_password='123456',master_log_file='LAPTOP-2PQ440VH-bin.000118',master_log_pos=2726;

start slave;

 ④查看从库的状态

show slave status;

 复制下来看看

两个都为yes说明成功。

在Navicat中测试一下,也是成功的。

二、读写分离案例

 1.SHarding-JDBC介绍

2.入门案例

 

        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>4.0.0-RC1</version>
        </dependency>
spring:
  shardingsphere:
    datasource:
      names:
        master,slave
      # 主数据源
      master:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/rw?characterEncoding=utf-8
        username: root
        password: 123456
      # 从数据源
      slave:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.19.129:3306/rw?characterEncoding=utf-8
        username: root
        password: 123456
    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:
#   引入的SpringBoot、DruidDataSource这两个框架里的配置类都要创建数据源这个对象,现在默认值为false,不允许覆盖,导致创建的bean是冲突的,我们来设为true,允许后创建的datasource覆盖前面的。
    allow-bean-definition-overriding: true

 主从复制的环境前面已经搭建好了,接下来在主库中创建我们原来的业务数据库并导入相关表结构和数据。导入依赖、配置文件即可了。

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值