目录
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、负载均衡
|