mysql的主从复制和读写分离

mysql的主从复制和读写分离

主从复制的模式

1、mysql的默认模式

异步模式,主库会更新完事务之后会立刻把结束返回给从服务器,并不关系从库是否收到,以及从库是否处理成功

网络问题可能没有同步,或者是其他因素的影响导致同步失败

特点:快 效率高

2、全同步模式

主库在更新完事务之后,立即把结果返回到从库,所有库执行完毕之后才能继续下一个同步,安全,性能收到影响

3、半同步复制

介乎于异步和全同步之间,主库更新完事务之后,也是同步到从库,同步完成之后又有一个等待时间

等待时间是一个tcp/ip的往返时间

5毫秒左右。

即在一定程度上保证了效率,也在一定程度上保证了数据的完整性

架构模式:高可用架构一般都是奇数台,一主两从、两主三从

主从复制的模式

主可以复制到从

从不可以复制到主
在这里插入图片描述

主主模式:都是主的情况下,都可以互相复制

主从复制的延迟大怎么解决

1、网络问题、防火墙的原因

2、硬件设备问题,cpu内存和磁盘出了问题

3、配置文件写错了。

配置文件当中进行设置的方式提高数据的安全性

数据库的存储引擎要是innodb:配置之前要先看一线配置文件设置是不是innodb

双一设置:

innodb_flush_log_at_trx_commit=1

每次提交都会刷新事物日志,确保事务的持久性,但是会影响性能

sync_binlog=1

每次提交事务,将二进制日志和内容保存到磁盘,确保日志的持久性,提高了安全性,

性能化设置

sync_binlog=10

最多提交几次事务会进行磁盘刷新。日志内容保存到磁盘

innodb_flush_log_at_trx_commit=2

每次更新都保存在内存中,不进行刷新。

innodb_buffer_pool_size=60m

控制innodb缓冲池的大小,增大可以提高数据库的性能,但是占用的是系统内存,配置的时候要注意合理化时间

主从复制如何实现:

实现是基于mysql的二进制日志,根据主库的二进制文件的标志位,实现主和从的同步

主从服务器之间,服务器的时间要同步。

架构:

三台服务器

一主两从

安装软件

在这里插入图片描述

查看时间 如果时间不同步先同步时间

date

ntpdate ntp.aliyun.com

修改配置文件

log-slave-updates=true

允许从服务器复制二进制日志,从而实现数据复制和同步

在这里插入图片描述

修改完主后重启配置文件

进入数据库

设置连接 密码 赋权

在这里插入图片描述

mysql> CREATE USER 'myslave'@'20.0.0.%' IDENTIFIED WITH mysql_native_password BY '123456';
 GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'20.0.0.%';
  FLUSH PRIVILEGES;

在这里插入图片描述

从服务器

添加配置文件

在这里插入图片描述

relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
relay_log_recovery=1

relay-log=relay-log-bin

从服务器获取二进制日志的开头,开启从库的二进制日志

relay-log-index=slave-relay-bin.index

二进制日志的索引文件的名称

relay——log_recovery=1

配置从服务器在启动时

配置完后也重启

从二

修改配置文件和从一基本一样 修改完重启

在这里插入图片描述

从一从二进入数据库

change master to master_host='20.0.0.40',master_user='myslave',master_password='123456',master_log_file='master-bin.000002 ',master_log_pos=2901;

master这一段 和857

在这里插入图片描述

start

查看这两个为yes即是成功

出现no即查看配置文件

Slave_lO_Running:yes

从库和主机的读写通信是否正常 出现no即查看配置文件

slave_SQL_Running:yes

检查从库的状态进程是否在正常运行

在这里插入图片描述

主从都要做这个配置

在这里插入图片描述

报错后重启一下

在这里插入图片描述

没用就重置

在这里插入图片描述

然后重新配置一下

在这里插入图片描述

读写分离

主从架构当中,主库负责写,从库负责读

读写分离 主库只写 从库只读

读写分离的方式

1、代码 开发人员纯靠代码完成,设计到数据库的二次开发,性能好,不需要额外的硬件设备

2、中间层代理,代理服务器。基于客户端和主从架构之间有一个代理服务器收到客户端的请求之后 通过客户端的sql语句来进行判断,读转到从,写转到主

Amoeba:读写分离最常见的客户代理软件,计算代码开发的一个软件

添加两台试验机

一台代理服务器安装 jdk1.6环境 Amoeba

一台客户端

实验

先安装Java环境

在这里插入图片描述

移动位置

在这里插入图片描述

修改全局配置文件 profile

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin

source /etc/profile

修改完刷新一下

解包

在这里插入图片描述

赋权

在这里插入图片描述

验证成功

在这里插入图片描述

主库创建用户

CREATE USER 'amoeba'@'20.0.0.%' IDENTIFIED WITH mysql_native_password BY '123456';

GRANT REPLICATION SLAVE ON *.* TO 'amoeba'@'20.0.0.%';

GRANT ALL PRIVILEGES ON *.* TO 'amoeba'@'20.0.0.%';

flush privileges;

在这里插入图片描述

两个从库 输入赋权语句 并刷新

在这里插入图片描述

代理服务器 修改配置文件

在这里插入图片描述

修改主配置文件

在这里插入图片描述

删掉两个注释 确定库名 和主从

在这里插入图片描述

修改配置文件

在这里插入图片描述

23行 下面添加

在这里插入图片描述

27行

修改

在这里插入图片描述

46 修改ip地址 修改主的ip地址

在这里插入图片描述

53添加从 需要复制

在这里插入图片描述

66行

在这里插入图片描述

验证 后台运行

在这里插入图片描述

查看端口

在这里插入图片描述

客户机安装

在这里插入图片描述

修改主的配置文件 和从的 将日志打开 然后重启服务

在这里插入图片描述

客户机

在这里插入图片描述

主从 查看日志

在这里插入图片描述

客户机 创建表

在这里插入图片描述

在主上查表

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值