淮北网站三合一建设公司,营销号视频生成器网页版,织梦网站图片设置多大,深圳注册公司费用04、读写分离
4.1、介绍
读写分离#xff0c;简单地说是把对数据库的读和写操作分开#xff0c;以对应不同的数据库服务器。主数据库提供写操作#xff0c;从数据库提供读操作#xff0c;这样能有效地减轻单台数据库的压力。
通过Mycat即可轻易实现上述功能#xff0c;…04、读写分离
4.1、介绍
读写分离简单地说是把对数据库的读和写操作分开以对应不同的数据库服务器。主数据库提供写操作从数据库提供读操作这样能有效地减轻单台数据库的压力。
通过Mycat即可轻易实现上述功能不仅可以支持MySQL也可以支持Oracle和SQL Server。 在应用程序与服务器之间加入MycatMycat将应用程序的insert/update/delete操作路由到主库master然后同步到从库slaveMycat将应用程序的select操作路由到从库slave。
4.2、一主一从读写分离
1、原理
MySQL的主从复制是基于二进制日志binlog实现的。 2、环境准备
准备两台服务器一台作为master另一台作为slave。
环境搭建看2.3章节
create database itcast;use itcast;create table tb_user(id int(11) not null,name varchar(50) not null,sex varchar(1),primary key (id)
)engineinnodb default charsetutf8;insert into tb_user(id,name,sex) values(1,Tom,1);
insert into tb_user(id,name,sex) values(2,Trigger,0);
insert into tb_user(id,name,sex) values(3,Dawn,1);3、配置
Mycat控制后台数据库的读写分离和负载均衡由schema.xml文件datahost标签的balance属性控制。
balance属性负载均衡策略目前取值有4种
参数值含义0不开启读写分离机制所有读操作都发送到当前可用的writeHost上1全部的readHost与备用的writeHost都参与select语句的负载均衡主要针对于双主双从模式2所有的读写操作都随机在writeHost、readHost上分发3所有的读请求随机分发到writeHost对应的readHost上执行writeHost不负担读压力balance可以设置为1或者3。 schema.xml
schema nameITCAST_RW checkSQLschematrue sqlMaxLimit100 dataNodedn7
/schemadataNode namedn7 dataHostdhost7 databaseitcast /dataHost namedhost7 maxCon1000 minCon10 balance1writeType0 dbTypemysql dbDriverjdbc switchType1 slaveThreshold100heartbeatselect user()/heartbeatwriteHost hostmaster urljdbc:mysql://192.168.88.135:3306?useSSLfalseamp;serverTimezoneAsia/Shanghaiamp;characterEncodingutf8 userroot password123456 readHost hostslave urljdbc:mysql://192.168.88.132:3306?useSSLfalseamp;serverTimezoneAsia/Shanghaiamp;characterEncodingutf8 userroot password123456 /readHost/writeHost
/dataHostserver.xml
user nameroot defaultAccounttrueproperty namepassword123456/propertyproperty nameschemasSHOPPING,ITCAST,ITCAST_RW/property
/user4、测试
连接Mycat并在Mycat中执行DML、DQL查看是否能够进行读写分离。
在从库修改了数据通过Mycat进行查询数据读取的是从库修改后的数据结果。
通过Mycat进行插入数据若主库出现了新增数据则一定是往主库写数据因为要是写入从库从库不会同步到主库主库就不会出现新增数据。
问题主节点Master宕机后业务系统就只能够读而不能写入数据了。
4.3、双主双从
1、介绍
一个主机Master1用于处理所有写请求它的从机Slave1和另一台主机Master2还有它的从机Slave2负责所有读请求。当Master1主机宕机后Master2主机负责写请求Master1、Master2互为备机。架构图如下 2、准备工作
需要准备5台服务器具体的服务器及软件安装情况如下
服务器安装软件说明192.168.200.210MyCat、MySQLMyCat中间件服务器192.168.200.211MySQLM1192.168.200.212MySQLS1192.168.200.213MySQLM2192.168.200.214MySQLS2
关闭以上服务器的防火墙
systemctl stop firewalld
systemctl disable firewalld3、搭建
1主库配置(Master1-192.168.200.211)
① 修改配置文件 /etc/my.cnf
# mysql服务ID保证整个集群环境中唯一取值范围1~2^32-1默认为1
server-id1# 指定同步的数据库
binlog-do-dbdb01
binlog-do-dbdb02
binlog-do-dbdb03# 在作为从数据库的时候有写入操作也要更新二进制日志文件
log-slave-updates② 重启服务器
systemctl restart mysqld2主库配置(Master2-192.168.200.213)
① 修改配置文件 /etc/my.cnf
# mysql服务ID保证整个集群环境中唯一取值范围1~2^32-1默认为1
server-id3# 指定同步的数据库
binlog-do-dbdb01
binlog-do-dbdb02
binlog-do-dbdb03# 在作为从数据库的时候有写入操作也要更新二进制日志文件
log-slave-updates② 重启服务器
systemctl restart mysqld3两台主库创建用户并授权
① 登录mysql创建远程连接的账号并授予主从复制的权限
# 创建itcast用户并设置密码该用户可在任意主机连接该MySQL服务
CREATE USER itcast% IDENTIFIED WITH mysql_native_password BY Root123456;
# 为itcast%用户分配主从复制权限
GRANT REPLICATION SLAVE ON *.* TO itcast%;② 通过指令查看两台二进制日志坐标
show master status;4从库配置(Slave1-192.168.200.212)
① 修改配置文件 /etc/my.cnf
# mysql服务ID保证整个集群环境中唯一取值范围1~2^32-1默认为1
server-id2② 重启服务器
systemctl restart mysqld5从库配置(Slave2-192.168.200.214)
① 修改配置文件 /etc/my.cnf
# mysql服务ID保证整个集群环境中唯一取值范围1~2^32-1默认为1
server-id4② 重启服务器
systemctl restart mysqld6两台从库配置关联的主库
① 登录mysql设置主库配置
CHANGE REPLICATION SOURCE TO SOURCE_HOSTxxx.xxx,SOURCE_USERxxx,SOURCE_PASSWORDxxx,SOURCE_LOG_FILExxx,SOURCE_LOG_POSxxx;CHANGE MASTER TO MASTER_HOSTxxx.xxx.xxx.xxx,MASTER_USERxxx,MASTER_PASSWORDxxx,MASTER_LOG_FILExxx,MASTER_LOG_POSxxx;注意 slave1对应的是master1slave2对应的是master2。 ② 启动两台从库主从复制 开启同步操作
start slave; ③ 查看主从同步状态
show slave status\G; 7两台主库相互复制
① Master2复制Master1Master1复制Master2。
CHANGE MASTER TO MASTER_HOSTxxx.xxx.xxx.xxx,MASTER_USERxxx,MASTER_PASSWORDxxx,MASTER_LOG_FILExxx,MASTER_LOG_POSxxx;② 启动两台主库主从复制 开启同步操作
start slave; ③ 查看主从同步状态
show slave status\G; 4、测试
分别在主库Master1、Master2上执行DDL、DML语句查看涉及到的数据库服务器的数据同步情况。
create database db01;use db01;create table tb_user(id int(11) not null,name varchar(50) not null,sex varchar(1),primary key (id)
)engineinnodb default charsetutf8;insert into tb_user(id,name,sex) values(1,Tom,1);
insert into tb_user(id,name,sex) values(2,Trigger,0);
insert into tb_user(id,name,sex) values(3,Dawn,1);insert into tb_user(id,name,sex) values(4,Jack Ma,1);
insert into tb_user(id,name,sex) values(5,Coco,0);
insert into tb_user(id,name,sex) values(6,Jerry,1);4.4、双主双从读写分离
1、配置
Mycat控制后台数据库的读写分离和负载均衡由schema.xml文件dataNode标签的balance属性控制通过writeType及switchType来完成失败自动切换的。 balance1 代表全部的readHost和stand by writeHost参与select语句的负载均衡简单地说当双主双从模式M1-S1,M2-S2,并且M1与M2互为主备正常情况下M2,S1,S2都参与select语句的负载均衡 writeType 0写操作都转发到第1台writeHostwriteHost1挂了会切换到writeHost2上1所有的写操作都随机地发送到配置的writeHost上 switchType -1不自动切换 1自动切换
2、测试
登录Mycat测试查询及更新操作判定是否能够进行读写分离以及读写分离的策略是否正确。
当主库挂掉一个之后是否能够自动切换。