mysql一主两从读写分离搭建

  1. 搭建一主两从的架构是为了将数据库的读写操作分离开来,master数据库写数据,slave数据库查数据,以此来提升数据库的性能,一主两从的架构原理为主库接收到写入数据的请求后往数据库里写入数据,binlog日志记录下这一操作,主库会通过dump线程将这一操作推送给slave,slave写入到relaylog中,再由sql线程读取,执行数据更新

mysql一主两从读写分离搭建_第1张图片

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

名称

ip

master

10.1.60.80

slave1

10.1.60.114

slave2

10.1.60.115

  1. 三台主机均关闭防火墙

systemctl stop firewalld

  1. 三台主机均关闭selinux

setenforce 0

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

https://blog.csdn.net/ApexPredator/article/details/129259973?spm=1001.2014.3001.5502

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

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

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

systemctl restart mysqld

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

mysql -uroot -p

show variables like 'log_%';

mysql一主两从读写分离搭建_第2张图片

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

mysql -uroot -p

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

flush privileges;

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

show master status;

mysql一主两从读写分离搭建_第3张图片

10.配置两台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;

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

show slave status\G

mysql一主两从读写分离搭建_第4张图片

12.测试主从功能是否生效

12.1master数据库创建数据

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');

12.2查看master数据库binlog日志状态

show master status;

mysql一主两从读写分离搭建_第5张图片

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

mysql -uroot -p

show databases;

use test;

show tables;

select * from student;

mysql一主两从读写分离搭建_第6张图片

12.4查看slave库主从同步状态

show slave status\G

mysql一主两从读写分离搭建_第7张图片

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

你可能感兴趣的:(mysql,mysql,运维)