主从复制可以很好解决一个服务器压力太大的缺点 在实际情况中可以让读一个库 增删查一个库
具体步骤由图可知首先主库master会生成二进制日志
从库可以开辟一条io线程来读取主库二进制日志从而在从库中生成中继日志
然后从库再开辟一条sql线程用来把io线程写过来的的中继日志进行重做
这样就实现主从复制
首先查看防火墙是否开启mysql端口号3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent 开启3306端口
firewall-cmd --zone=public --list-ports 查看开启端口
systemctl start mysqld 启动sql指令
打开配置文件修改Mysql数据库的配置文件/etc/my.cnf
log-bin=mysql-bin #[必须]启用二进制日志
server-id=200 #[必须]服务器唯一ID(唯一即可)
重启Mysql服务
systemctl restart mysqld
登录mysql,并执行如下指令,创建用户并授权:
GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
登录Mysql数据库,查看master同步状态
show master status;
到此主库的配置基本结束 到次界面就可以去配置从库
修改Mysql数据库的配置文件/etc/my.cnf
server-id=201 #[必须]服务器唯一ID
重启Mysql服务
systemctl restart mysqld
登录Mysql数据库,设置主库地址及同步位置
change master tomaster_host='192.168.200.200',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=154;
查看从数据库的状态
show slave status/G
<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://192.168.200.200:3306/rw?characterEncoding=utf-8
username: root
password: root
# 从数据源
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.200.201:3306/rw?characterEncoding=utf-8
username: root
password: root
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
如果想在linux随意访问nginx需要修改变量配置
server {
listen 82;
server_name localhost;
location / {
proxy_pass http://192.168.247.130:8080; #反向代理配置,将请求转发到指定服务
}
}
在nginx中配置负载均衡
打开nginx的配置文件nginx.conf并增加如下配置:
#upstream指令可以定义一组服务器
upstream targetserver{
server 192.168.200.201:8080;
server 192.168.200.201:8081;
}
server {
listen 8080;
server_name localhost;
location / {
proxy_pass http://targetserver;
}
}
注意: 上述所有涉及到的端口号,都需要在对应的服务器的防火墙中开放,或者彻底关闭防火墙
#upstream指令可以定义一组服务器
upstream targetserver{
server 192.168.200.201:8080 weight=10;
server 192.168.200.201:8081 weight=5;
}
上述配置的weight权重是相对的,在上述的配置中,效果就是,在大数据量的请求下,最终8080接收的请求数是8081的两倍。
标签:主从复制,name,常用命令,192.168,server,nginx,master,mysql From: https://www.cnblogs.com/yanxuezhou/p/16875045.html