linux下mysql主从复制(第二篇读写分离) mycat 中间件

            linux下mysql主从复制(第二篇读写分离) mycat 中间件

接着上篇文档补全,mysql 读写分离,在上篇文章案例下准备好Mycat-server-1.4-release-20151019230038-win.tar.gz 解压包

1.解压后的文件如下:

1.1 接下来进入到conf 目录下配置四个文件server.xml、schema.xml、rule.xml、log4j.xml 下面一一介绍

  1.2 首先在我们主服务上面test 库下新建两张表如下:

CREATETABLE`t_users` (
  `user_id`varchar(64) NOTNULLCOMMENT注册用户ID‘,
  `user_email`varchar(64) NOTNULLCOMMENT注册用户邮箱,
  `user_password`varchar(64) NOTNULLCOMMENT注册用户密码,
  `user_nikename`varchar(64) NOTNULLCOMMENT注册用户昵称,
  `user_creatime` datetime NOTNULLCOMMENT注册时间,
  `user_status` tinyint(1) NOTNULLCOMMENT验证状态  1:已验证  0:未验证,
  `user_deleteflag` tinyint(1) NOTNULLCOMMENT删除标记  1:已删除 0:未删除,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDBDEFAULTCHARSET=utf8;
 
-- -------------------------------------
-- Table structure for `t_message`微博表
-- -------------------------------------
DROPTABLEIFEXISTS`t_message`;
CREATETABLE`t_message` (
  `messages_id`varchar(64) NOTNULLCOMMENT微博ID‘,
  `user_id`varchar(64) NOTNULLCOMMENT发表用户,
  `messages_info`varchar(255) DEFAULTNULLCOMMENT微博内容,
  `messages_time` datetime DEFAULTNULLCOMMENT发布时间,
  `messages_commentnum`int(12) DEFAULTNULLCOMMENT评论次数,
  `message_deleteflag` tinyint(1) NOTNULLCOMMENT删除标记 1:已删除 0:未删除,
  `message_viewnum`int(12) DEFAULTNULLCOMMENT被浏览量,
  PRIMARY KEY (`messages_id`),
  KEY`user_id` (`user_id`),
  CONSTRAINT`t_message_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES`t_users` (`user_id`)
) ENGINE=InnoDBDEFAULTCHARSET=utf8;

1.3配置server.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
	<system>
	<property name="defaultSqlParser">druidparser</property>
	<property name="charset">utf8</property> 

	</system>    <!--添加user 此用户可以读写-->
   <user name="mycat">
    <property name="password">mycat</property>
    <property name="schemas">mycat</property>
    </user>
      <!--添加user 此用户只能读-->
   <user name="mycat_red">
    <property name="password">mycat_red</property>
    <property name="schemas">mycat</property>
	<property name="readOnly">true</property>
    </user>
</mycat:server>

1.4配置schema.x    <?xml version="1.      <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
      <mycat:schema xmlns:mycat="http://org.opencloudb/">

	<schema name="mycat" checkSQLschema="true" sqlMaxLimit="100">
          <table name="t_users" primaryKey="user_id" dataNode="dn1" rule="rule1"/>
          <table name="t_message" type="global" primaryKey="messages_id" dataNode="dn1" />
	</schema>
	<dataNode name="dn1" dataHost="jdbchost" database="test"/>
          <dataHost name="jdbchost" maxCon="1000" minCon="10" balance="1"
                writeType="0" dbType="mysql" dbDriver="native" switchType="1"
                slaveThreshold="100">
		<heartbeat>select user()</heartbeat>

		<writeHost host="hostMaster" url="192.168.226.128:3306" user="root"
			password="123456">
		</writeHost>
		<writeHost host="hostSlave" url="192.168.226.128:3306" user="root"
			password="123456" />

	    </dataHost>

     </mycat:schema>
  1.5配置rule.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://org.opencloudb/">
	 <tableRule name="rule1">
        <rule>
            <columns>user_id</columns>
            <algorithm>func1</algorithm>
        </rule>
    </tableRule>
    <function name="func1" class="org.opencloudb.route.function.AutoPartitionByLong">
  	<property name="mapFile">autopartition-long.txt</property>
    </function>
</mycat:rule>

 1.6 配置log4j.xml只需要把level 改成debug 就行,报错可以在log看到错误信息方便定位      <level value="debug" /> 

ps:至此我们四个配置文件就配置完成了进入bin目录下启动我们的mycat吧!如下     

启动后我们进入navicat 新建两个链接:

    可读可写链接如下:

   只可读链接如下:

结构如下:

    看到区别了吗,莫名其妙多了主服务上面的三张表,到此为止你就可以进行测试了,简单的读写分离也就完成了!

最后说一句,MyCat 很好的管理了我们读写分离的用户最后附上读连接进行写操作的时候爆出来错误

ps :到此结束,小白教程,不喜勿喷,有问题留言,多谢大神指教!!!!!!!!!!!!!!!

原文地址:https://www.cnblogs.com/tjlboke/p/9709620.html

时间: 2024-09-30 22:55:38

linux下mysql主从复制(第二篇读写分离) mycat 中间件的相关文章

Linux下Mysql主从复制

一.前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载.而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失. 二.MySQL主从复制(读写分离)和集群的区别:我对MySQL也是刚开始研究,不是很专业.我的理解是:1.主从复制(读写分离):一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用

mysql学习(3)-linux下mysql主从复制

前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载.而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失. MySQL主从复制(读写分离)和集群的区别: 1.主从复制(读写分离):一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用于数据查询操作).局限性:(1)配置好主从复制之后,同一张表

Linux下MySQL主从复制(二)

MySQL的一主多从模式 原理结构图 配置步骤 1.主服务器:  1. 改变server id   2. 启用二进制日志文件   3. 创建具有复制的用户123123 具体操作请看:http://www.crazyrui.pw:8088/index.php/2017/07/23/linux_mysql_savle_1/ 2.第一个从服务器配置  1. 改变server id   2. 启用relay_log   3. 连接主服务器      mysql>change master to MAST

linux下mysql基于mycat做主从复制和读写分离之基础篇

Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , mycat1.6-RELEASE jdk1.7及其以上版本2.实现步骤一(mycat实现读写分离) 1.首先在两台服务器安装mysql 1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rp

mysql配置主从复制 第二篇

经过查询资料,终于把mysql主从复制搞定了.此版本是mysql5.0的. 好了,开始说步骤. 首先,上篇已经说过了,需要复制一份安装文件到另外一个盘.接下来修改注册表. 好了,完了之后,我们修改mysql根目录下的my.ini文件. 当然,修改之前你需要备份一下.省的以后启动不起来. ----------------------------------------- 首先修改你要配置的主数据库的my.ini ----------------------------------------- [

MySQL主从同步、读写分离配置步骤、问题解决笔记

根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用.       为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master)           192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i6

&lt;邮件服务postfix+mysql&gt;MAIL第二篇

环境:本服务是建立在第一篇的基础之上的,最好搭建好第一篇 玩此服务的前提是你的系统装好了msql和postfix服务. Postfix+mysql主要是把邮件服务的发与mysql结合使用.当然mysql要是一直是在命令行下使用也不是很方便对吧,下面我们来看linux图形化下mysql的使用: 下面的软件包. phpMyAdmin-2.11.3-all-languages.tar.gz是以php的格式结合Apache通过网页的形式管理mysql. 既然是使用网页管理mysql,当然很定得将这个软件

MySQL主从同步、读写分离配置步骤

现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用. 为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master) 192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1 1.登录Master服务器,修改my.cnf,添加如下内容: server-id = 1 //数据库ID号,

MySQL Proxy 实现MySQLDB 读写分离

一.简述 MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测.分析或改变它们的通信.它使用灵活,没有限制,常见的用途包括:负载平衡,故障.查询分析,查询过滤和修改等等. MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负 载平衡.对于应用来说,MySQL Proxy是完全透明的,应用