专业做二手房的网站大宗商品交易平台有哪些
目录
1、概述
2、环境准备
3、读写分离实验
3.1、安装jdk
3.2、安装Mycat
3.3、配置Mycat
3.3.1、配置schema.xml
3.3.2、配置server.xml
3.4、修改主从机远程登陆权限
3.4.1、主机
3.4.2、从机
3.5、启动Mycat
3.6、登录Mycat
3.7、验证
1、概述
- 读写分离就是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。
 - 通过MyCat即可轻易实现上述功能。 
- 【注】Mycat是一个开源数据库中间件,是一个实现了MySQL协议的的数据库中间件服务器,我们可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问Mycat,而Mycat再使用用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,包括SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。
 
 - 下面为一主一从的图解:  
 
2、环境准备
- 主机:阿里云服务器Ubuntu22.04
 - 从机:本地电脑Win10
 - Mycat1.6(从机Win10上)
 - java环境:jdk1.8
 - 数据库:Mysql8.0.34
 
- 读写分离是基于主从复制的,如何搭建主从复制可以看这篇文章:数据库进阶教学——主从复制(Ubuntu22.04主+Win10从)-CSDN博客
 - 搭建好主从复制环境后,在从机中查看主从复制信息,显示如下。 
 
3、读写分离实验
3.1、安装jdk
- 使用mycat是需要java环境的,先查看本地电脑上是否安装了java环境。 
- 【注】mycat1.6需要的jdk版本不能太新,不然会报错!用jdk1.8就行。
 
 - 我这已经安装好了,没有安装的可以参考:超详细JDK1.8安装与配置_jdk1.8安装教程及环境变量配置-CSDN博客
 
3.2、安装Mycat
- 理论上,应该将Mycat安装在一个独立的服务器上,然后配置Mycat与主库和从库建立连接,通过Mycat提供的读写分离配置,将读操作分发到从库,将写操作分发到主库。
 - 这里为了方便,直接在本地电脑(从库)上安装Mycat。Mycat资源:Win10安装Mycat_mycat windows-CSDN博客(不知道为啥官网打不开)。 
- 【注】因为我的本地电脑没有外网,所以mycat只能装在我的本地电脑中。如果装在服务器上,它将不能访问我的本地电脑。而我的本地电脑是可以访问服务器的。
 
 - 【注】下面是在Win10中安装Mycat。
 - 下载压缩包并解压。 
 - 配置环境变量: 
- 新增环境变量MYCAT_HOME,配置mycat的根目录。 
 - 新增Path变量。 
-  
%MYCAT_HOME%\bin 
 -  
 
 - 新增环境变量MYCAT_HOME,配置mycat的根目录。 
 - 修改配置文件mycat/conf/wrapper.conf  
-  
# 添加java路径 wrapper.java.command=D:\App\Java\jdk-1.8\ wrapper.java.command=%JAVA_HOME%/bin/java.exe# 修改内存 wrapper.java.additional.10=-Xmx4G wrapper.java.additional.11=-Xms1G 改为: wrapper.java.additional.10=-Xmx512M wrapper.java.additional.11=-Xms64M 

 -  
 
3.3、配置Mycat
3.3.1、配置schema.xml
- Mycat控制后台数据库的读写分离和负载均衡由schema.xml文件datahost标签的balance属性控制。
 - balance参数值: 
- 0:不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
 - 1:全部的readHost与备用的writeHost都参与select语句的负载均衡(主要针对于双主双从模式)。
 - 2:所有的读写操作都随机在writeHost,readHost上分发。
 - 3:所有的读请求随机分发到writeHost对应的readHost上执行,writeHost不负担读压力。
 
 - schema.xml位置: 
 - 选择要实现读写分离的数据库,要在文件中修改对应的名字。 

-  
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"><schema name="MASTER_RW" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema><!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"/> --><dataNode name="dn1" dataHost="localhost1" database="db01" /><dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- can have multi write hosts --><writeHost host="master" url="123.56.xxx.xxx:3306" user="root" password="root"> <readHost host="slave" url="127.0.0.1:3306" user="root" password="root"/></writeHost></dataHost></mycat:schema> 
 - 重点关注以下几个参数: 
 
3.3.2、配置server.xml
- server.xml的位置。 
 - 修改逻辑库。 
-  
<!--以下设置为应用访问帐号权限 --> <user name="root" defaultAccount="true"><property name="password">root</property> # mycat登录密码<property name="schemas">MASTER_RW</property> </user> <!--以下设置为应用只读帐号权限 --> <user name="user"><property name="password">user</property><property name="schemas">MASTER_RW</property><property name="readOnly">true</property> </user> 
 -  
 
3.4、修改主从机远程登陆权限
- mycat需要通过权限访问主库和从库。
 
3.4.1、主机
- 进入数据库,输入命令: 
-  
update user set host='%' where user = 'root'; flush privileges; # 刷新权限 
 -  
 
3.4.2、从机
-  进入数据库,输入命令: 
-  
update user set host='%' where user = 'root'; flush privileges; # 刷新权限 
 -  
 
3.5、启动Mycat
- 以管理员打开终端,进入 mycat/bin,启动mycat。 
-  
mycat.bat start - 启动失败: 

- 查看日志文件wrapper.log。 
 
 - 解决办法: 
- 修改配置文件mycat/conf/wrapper.conf
 
 
 -  
 - 再次启动,成功。 
 
3.6、登录Mycat
- 使用终端登录mycat。 
-  
mysql -u root -p -h127.0.0.1 -P8066 
 -  
 - 登录成功,查看其中的数据。 
 
3.7、验证
- 在mycat的终端插入一条数据。  
-  
insert into tb_user(id,name,sex) values(4,'master',0); 
 -  
 - 查看主库的数据,已经插入了新数据。 
 -  
 - 查看从库的数据,并没有插入新数据。 

- 说明插入操作是在主库中进行的。
 
 - 【注】这是因为主从复制和读写分离配置的都是3306端口,使用了读写分离后,主从复制就会失效。只需要用完读写分离后,再打开主从复制即可。
 - 在mycat中执行查询操作。 

- 查询到的数据与从库一致,说明查询操作是在从库中进行的。
 
 - 重新开启主从复制。在从库的数据库中执行下列命令: 
-  
stop slave; set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; start slave; show replica status\G; 
-  

 
 -  
 - 查看从库数据,已经与主库保持一致。 
 - 再次在mycat中执行查询操作。 
 - 验证完毕。
 









 
 


