十五天MySQL学习计划(运维篇-完结)读写分离-第十五天
读写分离
1.读写分离
读写分离,简单的说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主服务器提供写操作,从数据库提供读操作,这样能有效的减轻单台数据库的压力。
通过mycat即可轻易实现上述功能,不仅可以支持mysql,也可以支持oracle和sql server。
2.一主一从
MySQL的主从复制,是基于二进制日志实现的。
3 .一主一从读写分离
mycat控制后台数据库的读写分离和负载均衡由schema.xml文件datahost标签的balance属性控制。
配置1
配置2
参数值 | 含义 |
---|---|
0 | 不开启读写分离机制,所有读操作都发送到当前可用的writehost上 |
1 | 全部的readhost与备用的writehost都参与select语句的负载均衡(主要针对于双主双从模式) |
2 | 所有的读写操作都随机在writehost,readhost上分发 |
3 | 所有的读请求随机分发到writehost对应的readhost上执行,writehost不负担读压力 |
4.双主双从
一个主机master用于处理所有写请求,它的从机slave1和另一台主机maste2还有它的从机slave2负责所有的主请求。当master1主机宕机后,master2主机负责写请求,master1,master2互为备机,架构图如下:
1.主库配置-第一台主库
1.修改配置文件/etc/my.cnf
#mysql服务ID,保证整个集群环境中唯一
server-id=1
#指定同步的数据库
binlog-do-db=db01
binlog-do-db=db02
binlog-do-db=db03
#在作为数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates
2.重启MySQL服务器
systemctl restart mysqld
2.主库配置第二台
1.修改配置文件/etc/my.cnf
#mysql服务ID,保证整个集群环境中唯一
server-id=3
#指定同步的数据库
binlog-do-db=db01
binlog-do-db=db02
binlog-do-db=db03
#在作为数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates
2.重启MySQL服务器
systemctl restart mysqld
3.两台主服务器都需要配置
1.两台主库创建账户并授权(8.0)
#创建授权用户,并设置密码,该用户可在任意主机连接该MySQL服务
create user 'itcast'@'%' identified with mysql_native_password by '1234.Com';
#为itcat用户分配主从复制权限
grant replication slave on *.* to 'itcast'@'%';
2.通过指令,查看两台主库的二进制日志名字和坐标位置
show master status;
4.从服务器配置(两台)
1.修改配置文件/etc/my.cnf
#mysql服务ID,保证整个集群环境中唯一
#第一台
server-id=2
#第四台
server-id=4
2.重启MySQL服务器
systemctl restart mysqld
3.两台从库配置关联主库
change master to master_host='xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;
需要注意slave1对应的是master1,slave2对应的是master2.
启动两台从库主从复制,查看从库状态
start slave;
show slave status\G
5.两台主服务器相互做主从
master2复制master1,master1复制master2
change master to master_host='xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;
启动查看两台主服务器的主从复制
start slave;
show slave status\G
6.测试
分别在两台主库master1,master2上执行DDL,DML语句,查看涉及到数据库服务器的数据同步情况。
5.双主双从读写分离
mycat控制后台数据库的读写分离和负载均衡由schema.xml文件datahost标签的balance属性控制,通过writeType及switchType来完成失败自动切换的。、
balance="1"
代表全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1-》S1,M2-》S2.并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡;
write Type
0:写操作都转发到第1台writeHost,writeHost1挂了,会切换到writeHost2上;
1:所有操作都随机的发送到配置的writeHost上;
switchType
-1:不自动切换
1:自动切换
测试
登录mycat,测试查询及更新操作,判定是否能够进行读写分离,以及读写分离的策略是否正确。
当主库挂掉一个之后,是否能够自动切换。
6.总结
1.介绍
读写分离是为了降低单台服务器的访问压力,写走主库,读走从库。
2.一主一从
MySQL主从复制是基于二进制日志binlog实现的。master,salve
3.一主一从读写分离
<writehost> <readhost/> <writeHost>,balance属性
4.双主双从
两台主库,相互复制,互为主备,增强MySQL的可用性文章来源:https://www.toymoban.com/news/detail-449959.html
5.双主双从读写分离文章来源地址https://www.toymoban.com/news/detail-449959.html
<writehost> <readhost/> <writeHost>,balance属性 writetype switchType
salve
3.一主一从读写分离
<writehost> <readhost/> <writeHost>,balance属性
4.双主双从
两台主库,相互复制,互为主备,增强MySQL的可用性
5.双主双从读写分离
<writehost> <readhost/> <writeHost>,balance属性 writetype switchType
到了这里,关于十五天MySQL学习计划(运维篇-完结)读写分离-第十五天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!