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、负载均衡
版权归原作者 Mr_zhangyj 所有, 如有侵权,请联系我们删除。