日萌社
人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)
1.安装MyCAT:
1.cd /usr/local/
2.上传 Mycat-server-1.4-release-20151019230038-linux.tar.gz 到/usr/local/
3.tar -zxvf Mycat-server-1.4-release-20151019230038-linux.tar.gz
4.cd /usr/local/mycat/bin/
5.启动mycat:./mycat start
停止:./mycat stop
重启:./mycat restart
查看mycat启动状态:./mycat status
查看mycat启动报错信息:./mycat console
mycat 支持的命令{ console | start | stop | restart | status | dump }
Mycat的默认端口号为:8066
6.查看mycat是否启动成功:
ps aux|grep mycat
lsof -i:8066
./mycat status
./mycat console
2.配置MyCAT:
注意:配置文件修改完毕之后,记得重启MyCAT
1.配置/usr/local/mycat/conf/schema.xml:
2.配置/usr/local/mycat/conf/server.xml:
3.配置/usr/local/mycat/conf/rule.xml:
1.按照按ID值的范围进行分片:1-5000000 存储到第一个数据分片节点,5000001-10000000 存储到第二个数据分片节点
2.按一致性哈希进行分片:
当我们需要将数据平均分在几个分区中,需要使用一致性hash规则
我们找到function的name为murmur 的定义,将count属性改为3,因为我要将数据分成3片
3.启动MyCAT,客户端访问MyCAT:
1.cd /usr/local/mycat/bin/
启动mycat:./mycat start
停止:./mycat stop
重启:./mycat restart
查看mycat启动状态:./mycat status
查看mycat启动报错信息:./mycat console
mycat 支持的命令{ console | start | stop | restart | status | dump }
Mycat的默认端口号为:8066
2.查看mycat是否启动成功:
ps aux|grep mycat
lsof -i:8066
./mycat status
./mycat console
3.第一步:首先连接3306端口的MySQL数据库,根据 /usr/local/mycat/conf/schema.xml中的配置 首先创建db1、db2、db3的3个database,
然后才能在8066端口下的mycat创建“tb_order”表。
4.客户端连接mycat: Mycat的默认端口号为:8066
1.在8066端口下的mycat创建TB_ORDER表后,便会在3306端口的MySQL数据库中的db1、db2、db3的3个database中 自动创建TB_ORDER表
在MyCAT中执行插入、搜索语句时,都必须显式指定列名。
比如: 不能使用“select *”,必须“select 列名”
insert语句中不能省略列名
2.往8066端口下的mycat中的TB_ORDER表存入数据后,便会在3306端口的MySQL数据库db1、db2、db3的3个database下 自动给TB_ORDER表存入对应的数据
把 tb_order表名 替换为 TB_ORDER表名
开源数据库中间件-MyCat
如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,
传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。
它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。
但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。
这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库。如果使用关系型数据库解决海量存储的问题呢?
此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储。
1.MySQL安装与启动:
1.将MySQL的服务端和客户端安装包(RPM)上传到服务器
2.查询之前是否安装过MySQL
rpm -qa|grep -i mysql
3.卸载旧版本MySQL
rpm -e --nodeps 软件名称
4.安装服务端
rpm -ivh MySQL-server-5.5.49-1.linux2.6.i386.rpm
5.安装客户端
rpm -ivh MySQL-client-5.5.49-1.linux2.6.i386.rpm
6.启动MySQL服务
service mysql start
7.登录MySQL
mysql -u root
8.设置远程登录权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'admin' WITH GRANT OPTION;
2.MyCat安装及启动:
1.将Mycat-server-1.4-release-20151019230038-linux.tar.gz上传至服务器
2.将压缩包解压缩。建议将mycat放到/usr/local/mycat目录下。
tar -xzvf Mycat-server-1.4-release-20151019230038-linux.tar.gz
mv mycat /usr/local
3.进入mycat目录的bin目录。
启动mycat:./mycat start
停止:./mycat stop
重启:./mycat restart
mycat 支持的命令{ console | start | stop | restart | status | dump }
Mycat的默认端口号为:8066
MyCat分片-海量数据存储解决方案
1.分片指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。
数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。
2.第一种切分模式:按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切分可以称之为数据的垂直(纵向)切分。
3.第二种切分模式:根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。
4.MyCat分片策略:
1.分片相关的概念:
1.逻辑库(schema) :
前面一节讲了数据库中间件,通常对实际应用来说,并不需要知道中间件的存在,业务开发人员只需要知道数据库的概念,
所以数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库。
2.逻辑表(table):
1.既然有逻辑库,那么就会有逻辑表,分布式数据库中,对应用来说,读写数据的表就是逻辑表。
逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成。
2.分片表:是指那些原有的很大数据的表,需要切分到多个数据库的表,这样,每个分片都有一部分数据,所有分片构成了完整的数据。
总而言之就是需要进行分片的表。
3.非分片表:一个数据库中并不是所有的表都很大,某些表是可以不用进行切分的,非分片是相对分片表来说的,就是那些不需要进行数据切分的表。
3.数据分片节点(dataNode):
数据切分后,一个大表被分到不同的分片数据库上面,每个表分片所在的数据库就是一个分片节点(dataNode)。
4.节点主机(dataHost):
数据切分后,每个分片节点(dataNode)不一定都会独占一台机器,同一机器上面可以有多个分片数据库,
这样一个或多个分片节点(dataNode)所在的机器就是节点主机(dataHost),为了规避单节点主机并发数限制,
尽量将读写压力高的分片节点(dataNode)均衡的放在不同的节点主机(dataHost)。
5.分片规则(rule):
前面讲了数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到某个分片的规则就是分片规则,
数据切分选择合适的分片规则非常重要,将极大的避免后续数据处理的难度。
2.MyCat分片配置
1.配置schema.xml
schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、逻辑表以及对应的分片规则、DataNode以及DataSource。
弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。
1.schema标签:用于定义MyCat实例中的逻辑库
2.table标签:定义了MyCat中的逻辑表 rule用于指定分片规则,auto-sharding-long的分片规则是按ID值的范围进行分片 1-5000000 为第1片,
5000001-10000000 为第2片.... 具体设置我们会在第5小节中讲解。
3.dataNode标签:定义了MyCat中的数据节点,也就是我们通常所说的数据分片。
4.dataHost标签:在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。
5.当前主机上只配置了一台MySQL服务器,并且在同一台MySQL服务器上创建了3个database数据库,3个database数据库名分别是db1、db2、db3
那么需要修改schema.xml如下:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<schema name="逻辑库名" checkSQLschema="false" sqlMaxLimit="100">
<table name="逻辑表名" dataNode="多个数据分片节点名" rule="分片规则" />
</schema>
<dataNode name="数据分片节点名1" dataHost="localhost1" database="数据库名" />
<dataNode name="数据分片节点名2" dataHost="localhost1" database="数据库名" />
<dataNode name="数据分片节点名3" dataHost="localhost1" database="数据库名" />
<dataHost name="节点主机名" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql"
dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="MySQL服务器所在IP:3306" user="用户名" password="密码"></writeHost>
</dataHost>
</mycat:schema>
2.配置server.xml
1.<property name="charset">utf8</property>
server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。
在system中添加UTF-8字符集设置,否则存储中文会出现问号
2.修改user的设置,我们这里为 PINYOUGOUDB设置了两个用户
<user name="用户名">
<property name="password">用户密码</property>
<property name="schemas">逻辑库名</property>
</user>
数据库读写分离
数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。
对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,读节点的数量取决于系统的压力,通常是1-3个读节点的配置。
Mycat读写分离和自动切换机制,需要mysql的主从复制机制配合。