mysql 主从复制 读写分离

mysql

在企业应用中,成熟的业务通常数据量都比较大,单台mysql在安全性、高可用性和高并发方面都无法满足实际需求,配置多台主从数据库服务器实现读写分离能增加上述能力

主从复制原理

在这里插入图片描述

  • 只在主服务器上写入,只在从服务器上读取
  • 主数据库处理事务性查询,而从数据库处理select查询
  • 数据库复制用于将事务性查询的变更同步到集群中的从数据库

mysql主从复制类型

  • 基于语句的复制。从服务器执行主服务器执行过的一样的SQL语句,mysql默认采用此种复制,效率较高。
  • 基于行的复制。仅把改变的内容复制过去,而不是把命令在从服务器再执行一遍。
  • 混合类型的复制。默认先采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。

读写分离原理

  • 读写分离是让主服务器处理事务性操作(增删改查),从服务器处理读(select)操作

读写分离的方案

  • 基于程序代码内部实现(在代码中根据 select、insert 进行路由分类,这类方法也是目前生产环境应用最广泛的。)
  • 基于中间代理层实现(mysql-proxy、amoeba)

✋mysql主从复制-同步时间

先关闭主从的防火墙

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

主从服务器同步时间
主服务器地址;172.16.10.116/24
在这里插入图片描述

yum -y install ntp #ntp同步时钟网络协议
vim /etc/ntp.conf

server 127.127.10.0  #末行添加本地网段为时间源
fudge 127.127.10.0 stratum 8 #设置时间层级为8。

在这里插入图片描述

在这里插入图片描述

配置完开启服务ntpd
在这里插入图片描述

在这里插入图片描述
从服务器地址:172.16.10.119/24;172.16.10.115/24
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

yum install -y ntp ntpdate
systemctl start ntpd
service ntpd start
usr/sbin/ntpdate 172.16.10.116

在这里插入图片描述

主服务器mysql配置

在这里插入图片描述

在这里插入图片描述

GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'172.16.10.%' IDENTIFIEED BY 'abc123';

flush privileges;

show master status;

在这里插入图片描述

从服务器mysql配置

server-id = 2
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index#默认位置在usr/local/mysql/data

修改完重启
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

change master to master_host='172.16.10.116' , master_user='myslave',master_password='abc123',master_log_file='mysql-bin.000010',master_log_pos=154;
# 指定master服务器ip,用户名,密码,二进制文件名和偏移量(主的mysql    show master status;)

start slave;						#启动同步,如有报错执行 reset slave;
show slave status\G					#查看 Slave 状态
//确保 IO 和 SQL 线程都是 Yes,代表同步正常。
Slave_IO_Running: Yes				#负责与主机的io通信
Slave_SQL_Running: Yes				#负责自己的slave mysql进程

这里修改过一次,文件名和偏移量不要对照前面的。
在这里插入图片描述

在这里插入图片描述

主从复制效果验证

在这里插入图片描述

在这里插入图片描述

mysql读写分离

amoeba地址:172.16.10.113
在这里插入图片描述
amoeba是基于jdk1.5 开发的,所以官方推荐使用 jdk1.5 或 1.6 版本,高版本不建议使用。
将所需安装包传到opt目录下
在这里插入图片描述
可执行文件复制到/usr/local/
在这里插入图片描述
赋予执行权限
在这里插入图片描述

./jdk-6u14-linux-x64.bin #执行
按空格到最后一行
按yes   enter

在这里插入图片描述
重命名一下
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
执行全局配置文件,查看java版本
在这里插入图片描述
amoeba
创建并解压amoeba到/usr/local/amoeba
在这里插入图片描述
递归赋权755 ,开启amoeba
在这里插入图片描述

配置amoeba读写分离,slave负载均衡

在master、slave1、slave2 的mysql上开放权限给 amoeba 访问
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

30行修改
在这里插入图片描述
32行修改
在这里插入图片描述
115修改
在这里插入图片描述

117去掉注释,修改
在这里插入图片描述

23行注释掉,如果库中没有test会报错
在这里插入图片描述
26修改
在这里插入图片描述
28去掉注释,修改
在这里插入图片描述

45行,主服务器名master
在这里插入图片描述
48设置主服务器地址
在这里插入图片描述
52设置从服务器名slave1
在这里插入图片描述
55设置从服务器slave1地址
在这里插入图片描述
复制上面的模板,设置从服务器2 slave2
在这里插入图片描述
65修改
在这里插入图片描述
71修改
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
客户机验证

yum install -y mysql mysql-server
mysql -uamoeba -pabc123 -h 172.16.10.113 -P8066

在两台从服务器的一张表内添加不同的内容
在这里插入图片描述
在这里插入图片描述
客户机从两台从服务器上轮询查找内容
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值