学习MySQL主从复制与读写分离看这个就够了,公开课视频笔记,

本文详细介绍了MySQL的主从复制过程,包括不同复制形式的实现步骤,重点讲解了一主一从的配置方法。同时,探讨了利用MySQL读写分离提升系统性能的原理,以及如何通过mysql-proxy作为中间件实现读写分离。
摘要由CSDN通过智能技术生成

MySQL复制过程

在这里插入图片描述
从库会产生io,sql两个线程,从库的io线程会请求主库的binlog,主库会产生一个logdump线程,用于向从库传binlog,从库将得到的binlog写入中继文件relaylog中,sql线程读取中继文件中的日志,并解析成sql语句逐一执行

主从复制的形式

1、一主一从
单向同步数据,往往用于数据备份
在这里插入图片描述
2、主主复制
在这里插入图片描述
3、一主多从
读写分离的模型,主库用于写,从库用于读
在这里插入图片描述
4、多主一从
做备份
在这里插入图片描述
5、级联复制
在这里插入图片描述

主从复制步骤(一主一从)

1、在两台数据库中分别创建数据库

--注意两台必须全部执行
create database msb;

2、在主服务器开启binlog。mysql默认binlog是关闭的,不开binlog不能进行复制

vi /etc/my.cnf
#在mysqld模块中添加如下配置信息
log-bin=master-bin #二进制文件名称
binlog-format=ROW  #二进制日志格式
server-id=1		   #要求各个服务器的id必须不一样
binlog-do-db=msb   #同步的数据库名称

在这里插入图片描述
3、在主服务器配置从服务器登录主服务器的账号授权

#授权操作
set global validate_password_policy=0;
set global validate_password_length=1;
grant replication slave on *.* to 'root'@'%' identified by '123456';
#刷新权限
flush privileges;

在这里插入图片描述
4、从服务器的配置

#修改配置文件,执行以下命令打开mysql配置文件
vi /etc/my.cnf
#在mysqld模块中添加如下配置信息
log-bin=master-bin	#二进制文件的名称
binlog-format=ROW	#二进制文件的格式
server-id=2			#服务器的id

在这里插入图片描述

5、重启主服务器的mysqld服务,查看master的状态

#重启mysql服务
service mysqld restart
#登录mysql数据库
mysql -uroot -p
#查看master的状态
show master status;

得到前三个字段值为后续从库连接做准备
在这里插入图片描述
6、重启从服务器并进行相关配置

#重启mysql服务
service mysqld restart
#登录mysql
mysql -uroot -p
#连接主服务器
change master to master_host='192.168.150.111',master_user='root',master_password='123456',master_port=3306,master_log_file='master-bin.000001',master_log_pos=154;

在这里插入图片描述

7、开启从库,查看信息

#启动slave
start slave
#查看slave的状态
show slave status\G(注意没有分号)

从库信息从上到下
等待主库传递信息
主库地址
主库用户名
主库端口
连接重试多长时间
主库binlog文件叫什么
主库binlog文件从哪开始
从库中继文件叫什么
从库中继文件从那开始
继承的主库的哪个文件
io线程,sql线程的状态必须都是yes
在这里插入图片描述
8、测试能否进行复制

master:在这里插入图片描述
在这里插入图片描述
之后看从库发现由tbl这个表
在这里插入图片描述
主库插入操作
在这里插入图片描述
再看从库发现也由id为1的行
在这里插入图片描述
但是在从库中插一条数据,
在这里插入图片描述
在主库中并没由查到,因为咱这是单向的
在这里插入图片描述
完成

读写分离简介

在这里插入图片描述
让master承担写业务,让slave承担读业务,master将写操作的变更同步给slave

MySQL读写分离能提高系统性能的原因在于

​ 1、物理服务器增加,机器处理能力提升。拿硬件换性能。

​ 2、主从只负责各自的读和写,极大程度缓解X锁和S锁争用。

​ 3、slave可以配置myiasm引擎,提升查询性能以及节约系统开销。

​ 4、master直接写是并发的,slave通过主库发送来的binlog恢复数据是异步。

​ 5、slave可以单独设置一些参数来提升其读的性能。

​ 6、增加冗余,提高可用性。

利用mysql-proxy作中间件

1、硬件配置

master 192.168.85.11
slave 192.168.85.12
proxy 192,168.85.14

2、首先在master和slave上配置主从复制
3、进行proxy的相关配置

#1、下载mysql-proxy
https://downloads.mysql.com/archives/proxy/#downloads
#2、上传软件到proxy的机器
直接通过xftp进行上传
#3、解压安装包
tar -zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
#4、修改解压后的目录
mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit mysql-proxy
#5、进入mysql-proxy的目录
cd mysql-proxy
#6、创建目录
mkdir conf
mkdir logs
#7、添加环境变量
#打开/etc/profile文件
vi /etc/profile
#在文件的最后面添加一下命令
export PATH=$PATH:/root/mysql-proxy/bin
#8、执行命令让环境变量生效
source /etc/profile
#9、进入conf目录,创建文件并添加一下内容
vi mysql-proxy.conf
添加内容
[mysql-proxy]
user=root
proxy-address=192.168.85.14:4040
proxy-backend-addresses=192.168.85.11:3306
proxy-read-only-backend-addresses=192.168.85.12:3306
proxy-lua-script=/root/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
log-file=/root/mysql-proxy/logs/mysql-proxy.log
log-level=debug
daemon=true
#10、开启mysql-proxy
mysql-proxy --defaults-file=/root/mysql-proxy/conf/mysql-proxy.conf
#11、查看是否安装成功,打开日志文件
cd /root/mysql-proxy/logs
tail -100 mysql-proxy.log
#内容如下:表示安装成功
2019-10-11 21:49:41: (debug) max open file-descriptors = 1024
2019-10-11 21:49:41: (message) proxy listening on port 192.168.85.14:4040
2019-10-11 21:49:41: (message) added read/write backend: 192.168.85.11:3306
2019-10-11 21:49:41: (message) added read-only backend: 192.168.85.12:3306
2019-10-11 21:49:41: (debug) now running as user: root (0/0)

4、进行连接

#mysql的命令行会出现无法连接的情况,所以建议使用客户端
mysql -uroot -p123 -h192.168.85.14 -P 4040
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值