MyCat

什么是MyCat简单直接点就是,MyCat其实就是一个数据库的中间件!一般我们都是app直接到数据库!有了MyCat以后,就是app到MyCat然后再访问数据库。# MyCat的搭建## linux系统的搭建简介:MyCat是java开发的,所以安装前要在你的系统的先安装jdk1.7以上的版本才可以。安装步骤:先创建一个mycat用户,然后搭建jdk1.7以上版本的java环境!下载mycat并且安装,修改配置然后启动mycat。 wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && http://resources.sir6.cn/oneinstack/install.sh --apache_option 1 --tomcat_option 2 --jdk_option 2 --pureftpd --redis --memcached --iptables --reboot ### 相关知识查看java的版本java -version stylus[root@bogon ~]# java -versionjava version "1.8.0_192"Java(TM) SE Runtime Environment (build 1.8.0_192-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)[root@bogon ~]#分片:****什么是分片?如果我们的数据库比较多,我们可以采用以下几种方式!如,用户,我们可以将用户分在不同的数据库里!比如订单,我们的订单达到一定的程度的时候,可以按照时间来进行存放订单。#### 常用的分片算法简单的取模:我们可以这样举一个例子。看下图,我们可以根据用户id的余数,来觉得到底要把数据存储到什么位置。余数是1的,存放的数据库1,余数是2的,我们可以将这个用的用户信息存放数据库2.
这样的做法优点是能将数据很平均的分配到每一个数据,但是不能有小数,只能分配整数。下面是在myCat找那个,配置文件中的分片配置
哈希取模:哈希取模是将数据的值,计算出来,然后再进行取模!我们刚才的的根据用户的id,因为这个是整数所以我们可以直接用来进行取模,但是如果是让你用用户名的话,我们可以采用先将用户的名进行哈希,然后再进行取模运算
哈希取模可以用作多中数据类型,如日期,字符串等。
枚举分片:枚举其实,就是我们事先定义好键和值,然后分配到不同的数据库里去。举一个最简单的例子,我现在有一大批的用户,然后我要把济南的用户全部放在济南的数据库去,北京的放在北京的数据库里面,我就可以采用这种方法。
# MyCat文件配置
## MyCat的基本配置### schema.xml 文件配置文件用途:配置逻辑库和逻辑表,匹配逻辑表所存储的节点,配置对应的数据节点以及物理数据配置信息。#### schema 标签定义逻辑库 <schema name="testdb" checkSQLschema="false" sqlMaxLimit="1000"> </schema>name: 定义逻辑库的名字sqlMaxLimit: 现实返回结果集的排行,-1表示关闭结果集checkSQLschema: 判断检查发送的sql中是否带库名。#### table 标签定义逻辑表 <table name="customer_login" primarkey="customer_id" dataNode="logindb01,logindb02" rule="customer_login"> </table>dataNode: 定义数据库所存储的数据节点rule: 定义了逻辑分片的规则,对应rule.xmd中的<tableRule>#### dateNode定义逻辑表存储的物理数据库 <dataNode name="imooc" dataHost="mysql01113" database="imooc_db"> </dataNode>name : 定义数据节点的名称,必须是唯一的dataHost: 定义分片所在的物理机database: 定义物理数据库名称#### dataHost 标签定义后端数据库主机信息 <dataHost name="mysql0103" maxComm="1000" minCon="10" balance="3" writeType="0" daTable="mysql" dbDriver=“native” switchType="1" > <dataHost>balance : 定义是否负载均衡- 0:不开启读写分离- 1:全部的readHost与stand by writeHost 参与 select 语句的负载均衡- 2:所有的readHost和writeHost都参与select 语句的负载均衡- 3: 所有的readHost都参与select语句的负载均衡#### heartbeat 检测心跳heartbeat 标签检测数据库是否正常使用,是dataHost的子标签 <hearbeat>select user()</hearbeat>#### 整体配置的实例 <writeHost host="192.168.1.3" url="192.168.1.3:3306" user="im_mycat" password="123456"> <readHost host="192.168.1.4" url="192.168.1.4:3306" user="im_mycat" password="123456"> </readHost> <writeHost>- 定义一组数据库,<readHost> 依赖于 <writeHost>- user和password 为后端数据库中的用户# 实战操作## 准备数据库,并且导入数据库这一步的操作是为了模仿我们真实项目的数据库,下面的才是真正的开始操作 mysql -u root -p imooc_db < imooc_db.sql mysql -u roor -p 自己数据库名字 < 数据库的文件 ## 将我们项目的数据库导出,用下面的命令 mysqldump --master-data=2 --single-transaction --routines --triggers --events -uroot -p imooc_db >bak_imooc.sql--master-data =2 :来记录节点1当前二进制 --single-transaction :保证备份是在同一个事物种的--routines:触发器--events:事件## 将自己备份好的文件copy到其他的服务器上去 scp bak_imooc.sql root@10.211.55.8:/home/parallels/Desktop ## 在节点一上创建一个主从复制的账号> 创建一个账号,账号名是im_repl,在网段10.211.55下的所有网段都有效,创建一个密码是123456 create user 'im_repl'@'10.211.55.%' identified by '123456'; 对我们刚刚创建的这个账号进行授权, grant replication slave on . to 'im_repl'@'10.211.55.%'; ## 在副数据库上创建一个复制连路 change master to master_host='10.211.55.7', master_user='im_repl' ,master_password='123456' ,MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=5865082; master_host:主机的IP地址 master_user:主机用来复制的账号 master_password:主机复制的密码 MASTER_LOG_FILE:开始同步的日志文件名 MASTER_LOG_POS:开始复制的事物日志点 ## 查看配置完的状态 show slave status\G;## 解决主副数据库名字不一样的问题> 重新将主从复制的数据库上库名上重写成order_db change replication filter replicate_rewrite_db=((imooc_db,order_db));
改完后的状态
改完后的状态
## 开始启动主从复制 start slave显示的是这样的,第一个是Connecting,说明是没有启动成功!有可能是3306端口没有开启,你可以关闭防火墙再试试
> 但是还是会保错 The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it). 这个原因是因为这些服务器Master_Server_Id是重复的。>怎么修改找到mysql的配置文件 /etc/my.cnf,打开将下面的文件修改成一个不和其他服务器重复的
修改完以后重新启动mysql服务器 service mysqld restart;> 再次启动进行查看。
# 垂直分库

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容