mysql一主两从读写分离搭建

一、前言

搭建一主两从的架构是为了将数据库的读写操作分离开来,master数据库写数据,slave数据库查数据,以此来提升数据库的性能

主从工作流程

1.master节点接收到写入操作,执行该操作后会将该操作写入到binlog日志中

2.salve节点通过io线程同步master节点中的binlog日志,并且将同步的日志写入到relaylog日志中,master节点会通过log dump线程将binlog日志传输给slave的io线程

3.slave节点通过sql线程执行relaylog日志中的操作

通过以上的工作流程会发现主从同步是一个异步同步

此处使用了三台主机,主机配置信息如下表所示

名称

ip

master

10.1.60.80

slave1

10.1.60.114

slave2

10.1.60.115

二、配置

三台主机均关闭防火墙

systemctl stop firewalld

三台主机均关闭selinux

setenforce 0

三台主机均安装数据库,搭建过程参考我下面的博客

yum安装mysql 5.7_yum安装mysql5.7_Apex Predator的博客-优快云博客

三台主机均在数据库配置文件末尾加上以下配置,开启binlog

server_id=1    #三台主机不能配置相同的数字
log_bin=mysql_bin
binlog_format=mixed
max_binlog_size=1g
expire_logs_days=7

三台主机均重启数据库服务

systemctl restart mysqld

三台主机均查看binlog是否启动

mysql -uroot -p

show variables like 'log_%';

master数据库上创建slave数据库用于同步的账户

mysql -uroot -p

grant replication slave on *.* to 'test'@'%' identified by 'Qwe@1234'; #(replication slave是专门配置复制用户的权限

flush privileges;

查看master数据库上的binlog文件与pos点(slave配置需要用到

show master status;

配置两台slave数据库,开启同步功能,并设置只读模式

mysql -uroot -p

change master to

master_host='10.1.60.80',

master_user='test',

master_password='Qwe@1234',

master_log_file='mysql-bin.000001',

master_log_pos=589;

start slave;

set global read_only=1;

查看read_only状态

SELECT @@global.read_only;

查看两台slave数据库同步是否正常启动(slave_IO_Running和slave_SQL_Running状态都为yes

show slave status\G

测试主从功能是否生效

master数据库创建数据

mysql -uroot -p

create database test;

use test;

create talbe student (

id int,

name varchar(20)

);

insert into student values(1,'xiaoming'),(2,'xiaohong'),(3,'xiaolin');

查看master数据库binlog日志状态

show master status;

查看slave数据库是否有同步生成test库与student表

mysql -uroot -p

show databases;

use test;

show tables;

select * from student;

查看slave库主从同步状态

show slave status\G

将三台主机地址转交给开发的时候,注明master主机只接收写请求,slave主机只接收读请求,以实现读写分离的操作(也可以通过配置一个中间件去代理区分读写请求,区分后将请求转发到与之相对应的主机上,可使用的中间件例如使用myproxy、mycat等

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值