基于MyCat实现数据库读写分离

一、读写分离

 读写分离即把数据库的读写操作分布在两个数据库上或者更多的数据库上,数据库进行数据同步。

二、读写分类的实现方式

     读写分离的两种方法:使用中间件或者内部进行配置。常用如下:

     (1)配置多个数据源,根据业务需求访问不同的数据,指定对应的策略:写入访问对应的数据库,查询访问相应的数据库,不同数据库之间做好数据一致性。

     (2)动态切换数据源,根据配置的文件,业务动态切换访问的数据库。

     (3)通过MyCat来实现读写分离:使用mycat中间件,mycat连接数据库,数据源连接mycat。

三、mycat实现读写分离的安装配置

       架构图如下所示:

 

       配置之前做好数据库的主从同步。

       主从同步参考:主从复制_Romanticn_chu的博客-CSDN博客

       (1)安装配置mycat

               1、安装JDK

[root@localhost ~]# tar xf jdk-8u161-linux-x64.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local
[root@localhost local]# ln -s /usr/local/src/jdk1.8.0_161 ./java
[root@localhost local]# cd java/bin/
[root@localhost bin]# ./java -version (查看)
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM(build 25.161-b12,mixed mode)

             2、创建mycat用户

[root@localhost ~]# useradd mycat
[root@localhost ~]# passwd mycat

            3、下载软件包解压并授予权限

[root@localhost ~]# tar -xzvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz -C /usr/local
[root@localhost ~]# chown -R mycat:mycat /usr/local/mycat

           4、配置环境变量 (vim /etc/profile)

JAVA_HOME=/usr/java/java
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:$MYCAT_HOME/bin

         5、启动

/usr/local/mycat/bin/mycat start

     (2)mycat相关配置

     修改server.xml文件 (因篇幅问题,只显示了要修改的位置)

	<user name="root【此处是连接mycat的用户】" defaultAccount="true">   (全部用户)
		<property name="password">Lolipop909【连接数据库的密码,即上述用户的密码】</property>
		<property name="schemas">TESTDB</property>
		
		<!-- 表级 DML 权限设置 -->
		<!-- 		
		<privileges check="false">
			<schema name="TESTDB" dml="0110" >
				<table name="tb01" dml="0000"></table>
				<table name="tb02" dml="1111"></table>
			</schema>
		</privileges>		
		 -->
	</user>

	<user name="user">                  (只读用户)
		<property name="password">user</property>
		<property name="schemas">TESTDB</property>
		<property name="readOnly">true</property>
	</user>

</mycat:server>

   修改schema.xml文件 (其中的一些东西需统一)

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	<schema name="TESTDB(此处要跟server.xml中的一致)" checkSQLschema="false" sqlMaxLimit="100">
		<table name="test1(此处要是数据库中已存在的数据库)" dataNode="dn1" primaryKey='id' />
	</schema>
	<dataNode name="dn1" dataHost="c1" database="test1(此处要和table中相同)" />
	<dataHost name="c1" maxCon="1000" minCon="10" balance="3"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="-1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="10.1.1.181:3306" user="root"
				   password="Csbu@1234"> (此处的root可以是任意用户,但需要拥有所有权限,且该用户需已存在)
			<readHost host="hostS2" url="10.1.1.236:3306" user="root" password="Csbu@1234" />
		</writeHost>
	</dataHost>
</mycat:schema>

 重新启动mycat (/uar/local/mycat/bin/mycat start)

查看日志  若日志没有异常,且启动成功,即配置成功 (tailf -20 /usr/local/mycat/logs/mycat.log)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值