导航:首页 > 操作系统 > linux安装mycat

linux安装mycat

发布时间:2023-03-22 19:27:08

A. 学习java需要什么基础

想通过自学掌握这门语言,这显然是不太现实的,
Java的奥妙之深,之复杂是很难衡量的,
而无论是网络上的Java教学视频,还是书本里的知识都有一个循序渐进的过程,
学会一步后才能了解下一步,
如果问Java在没有任何基础的情况下自学多久能掌握,答案是很难学好。
学java不难,主要是有人带你,跟着项目走那才能进步得快,才能入门,
否则自己学的不仅慢,而且不得重点。
而且这个行业已经人满为患了,初级的已经不好找了,只能尽人事看天命了!
我个人的建议是,一定要有一个能指导你的人,能到专业的学校学会更好,
不能都靠自己闭门造车,这样的行为并不聪明,
结识一位这方面的人才,时不时去问问人家问题,
不然你可能会发现一个小问题能困扰你一天,最后还不知道是什么原因。
其实也可以去电脑学校参观学习,多比较哈

B. linux常用端口号(1)

1.FTP:文件传输协议

        协议名:FTP

        软件名:vsftpd

        FTP端口:控制端口  21/TCP        数据端口:20/TCP

        FTP默认端口号为21/tcp

        TFTP        默认端口号为69/UDP

2.SSH (安全登录),SCP(文件传输),端口号重定向,默认的端口号为22/TCP

        SSH是少数被许可穿越防火墙的协议之一。通常的做法是不限制出站的SSH连接,而入站的SSH连接通常会限制到一台或者少数几台服务器上。

3.Telnet使用23端口:Telnet是一种远程登录的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。

4.NFS(网络文件系统):让网络上的不同Linux/UNIX系统及其实现文件共享

        NFS本身只是一种文件系统,没有提供文件传输的功能,但却能让我们文件共享,原因在于NFS使用RPC服务,用到NFS的地方需要启动RPC服务,无论是NFS客户端还是服务端。

        NFS和RPC的关系:NFS是一个文件系统,负责管理分享的目录,RPC负责文件的传递。

        NFS启动时至少有RPC.NFSD和RPC.mountd,2个daemon

        rpc.nfsd主要管理客户机登录NFS服务器时,判断客户机是否能登录,和客户机ID信息。

        rpc.mountd主要管理nfs的文件系统,当客户机顺利登录NFS服务器时,会去读/etc/exports文件中的配置,然后去对比客户机的权限。

        协议使用端口:

            RPC:  111  TCP/UDP    

            NFSD:  2049  TCP/UDP

            mountd:  RPC服务在NFS服务启动时默认会为mountd动态选取一个随机端口(32768--65535)来进行通讯,可以在/etc/nfsmount.conf文件中指定mount的端口。

5.NTP (网络时间协议)

        他的目的是国际互联网上传递统一,标准的时间。

        NTP同时同步指的是通过网络的NTP协议和时间源进行时间校准,前提条件,事件源输出必须通过网络接口,数据输出格式必须符合NTP协议。

        区域网内所有的PC,服务器和其他设备通过网络与时间服务器保持同步,NTP协议自动判断网络延时,并给得到的数据进行时间补偿,从而使区域网内设备时间保持统一标准。

        端口: 123/UDP

6.DNS   域名系统

        该系统用于命名组织到域层次结构中的计算机和网络服务。

        在Internel上域名和IP地址是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,他们之间的转换工作称为域名解析,域名解析需要专门的域名解析服务器来完成。

    DNS运行在UDP协议之上,使用端口号53.

    在传输层TCP提供端到端可靠的服务,在UDP端提供尽力而为的服务,其控制端口作用于UDP端口53.

    UDP53:        解析客户端的域名用UDP(速度快)

    TCP53        主从用(安全性较高)

7.PHP-FPM是一个PHPFastCGI

        默认端口:9000/TCP

8.SMTP: 是一种提供可靠且有效电子邮件传输协议。SMTP是建模在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信相关的通知

       SMTP:  端口号:25 /TCP  发邮件

        POP3:  端口号:TCP/25   收邮件

        IMAP4  端口号: TCP/143  用来提供发邮件支持附件用的。

9.Samba:

        137(UDP) ,  138(UDP) 

        139(TCP) ,   445(TCP) 提供文件共享功能

        137udp,138udp提供ip地址到主机名解析的功能

        901(TCP)

10.Mycat

        代替昂贵的Oracle的MySQL集群中间件

        默认端口8066连接Mycat

        9066管理端口

C. MySQL Mycat 分布式架构

参考: https://www.jianshu.com/p/5e0062f6cf62

图中是两组分片,红色我们称为shard1,蓝色我们称为shard2
51 52是服务器
两个3307互为主从(双主),3309是本地3307的从库

说明:没有明确说明是只在某一个节点上做的,就是两个节点都做

两台虚拟机 db01 db02
每台创建四个mysql实例:3307 3308 3309 3310

mysql软件我们之前已完成二进制安装,直接初始化即可

我们server-id规划为:db01上是7/8/9/10,db02上是17/18/19/20

"箭头指向谁是主库"
10.0.0.51:3307 <-----> 10.0.0.52:3307
10.0.0.51:3309 ------> 10.0.0.51:3307
10.0.0.52:3309 ------> 10.0.0.52:3307

两个分片,每个分片四个mysql节点
shard1:
Master:10.0.0.51:3307
slave1:10.0.0.51:3309
Standby Master:10.0.0.52:3307
slave2:10.0.0.52:3309
shard2:
Master:10.0.0.52:3308
slave1:10.0.0.52:3310
Standby Master:10.0.0.51:3308
slave2:10.0.0.51:3310

shard1
10.0.0.51:3307 <-----> 10.0.0.52:3307
db02

db01

db02

10.0.0.51:3309 ------> 10.0.0.51:3307
db01

10.0.0.52:3309 ------> 10.0.0.52:3307
db02

shard2
10.0.0.52:3308 <-----> 10.0.0.51:3308
db01

db02

db01

10.0.0.52:3310 -----> 10.0.0.52:3308
db02

10.0.0.51:3310 -----> 10.0.0.51:3308
db01

这个复制用户在谁上建都行

注:如果中间出现错误,在每个节点进行执行以下命令

常见方案:

360 Atlas-Sharding 360
Alibaba cobar 阿里
Mycat 开源
TDDL 淘宝
Heisenberg 网络
Oceanus 58同城
Vitess 谷歌
OneProxy
DRDS 阿里云

我们装的是openjdk,不是官方的那个

Mycat-server-xxxxx.linux.tar.gz
http://dl.mycat.io/

配置环境变量
我们mycat的命令也是在bin目录下

启动

8066就是对外提供服务的端口,9066是管理端口
连接mycat:

默认123456

db01:

我们一般先把原schema.xml备份,然后自己新写一个:

xml和html看起来差不多,xml是从下往上调用的
前三行我们不用看,直接从第四行schema开始看起:

定义了schema,然后以/schema结尾
为什么要用逻辑库?
业务透明化

此配置文件就是实现读写分离的配置

重启mycat

读写分离测试

总结:
以上案例实现了1主1从的读写分离功能,写操作落到主库,读操作落到从库.如果主库宕机,从库不能在继续提供服务了。

我们推荐这种架构

一写三读,
不设置双写的原因是:性能没提升多少,反而引起主键冲突的情况
配置文件:

之后重启:mycat restart

真正的 writehost:负责写操作的writehost
standby writeHost :和readhost一样,只提供读服务

我们此处写了两个writehost,默认使用第一个
当写节点宕机后,后面跟的readhost也不提供服务,这时候standby的writehost就提供写服务,
后面跟的readhost提供读服务

测试:

读写分离测试

对db01 3307节点进行关闭和启动,测试读写操作

结果应为另一台(52)的3307(17)是写,3309(19)是读
一旦7号节点恢复,此时因为7落后了,写节点仍是17

balance属性
负载均衡类型,目前的取值有3种:

writeType属性
负载均衡类型,目前的取值有2种:

switchType属性
-1 表示不自动切换
1 默认值,自动切换
2 基于MySQL主从同步的状态决定是否切换 ,心跳语句为 show slave status

datahost其他配置
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1">

maxCon="1000":最大的并发连接数
minCon="10" :mycat在启动之后,会在后端节点上自动开启的连接线程,长连接,好处是连接速度快,弊端是占内存
tempReadHostAvailable="1"
这个一主一从时(1个writehost,1个readhost时),可以开启这个参数,如果2个writehost,2个readhost时
<heartbeat>select user()</heartbeat> 监测心跳

其他参数sqlMaxLimit自动分页,必须在启用分表的情况下才生效

创建测试库和表:

我们重启mycat后连接到8066

发现跟一个库一样,实际上已经分到不同的物理硬件上了

分片:对一个"bigtable",比如说t3表
热点数据表 核心表
(1)行数非常多,800w下坡
(2)访问非常频繁

分片的目的:
(1)将大数据量进行分布存储
(2)提供均衡的访问路由

分片策略:
范围 range 800w 1-400w 400w01-800w 不适用于业务访问不均匀的情况
取模 mod (取余数) 和节点的数量进行取模
枚举 按枚举的种类分,如移动项目按省份分
哈希 hash
时间 流水

优化关联查询(否则join的表在不同分片上,效率会比单库还要低)
全局表
ER分片

案例:移动统一:先拆出边缘业务,再按地域分片,但对应用来说是统一的

vim rule.xml
<tableRule name="auto-sharding-long">
<rule>
<columns>id</columns>
<algorithm>rang-long</algorithm>
</rule>
<function name="rang-long"
class="io.mycat.route.function.AutoPartitionByLong">
<property name="mapFile">autopartition-long.txt</property>
</function>
===================================
vim autopartition-long.txt
0-10=0
11-20=1

创建测试表:
mysql -S /data/3307/mysql.sock -e "use taobao;create table t3 (id int not null primary key auto_increment,name varchar(20) not null);"

mysql -S /data/3308/mysql.sock -e "use taobao;create table t3 (id int not null primary key auto_increment,name varchar(20) not null);"

测试:
重启mycat
mycat restart
mysql -uroot -p123456 -h 127.0.0.1 -P 8066
insert into t3(id,name) values(1,'a');
insert into t3(id,name) values(2,'b');
insert into t3(id,name) values(3,'c');
insert into t3(id,name) values(4,'d');
insert into t3(id,name) values(11,'aa');
insert into t3(id,name) values(12,'bb');
insert into t3(id,name) values(13,'cc');
insert into t3(id,name) values(14,'dd');

取余分片方式:分片键(一个列)与节点数量进行取余,得到余数,将数据写入对应节点
vim schema.xml
<table name="t4" dataNode="sh1,sh2" rule="mod-long" />
vim rule.xml
<property name="count">2</property>

准备测试环境

创建测试表:
mysql -S /data/3307/mysql.sock -e "use taobao;create table t4 (id int not null primary key auto_increment,name varchar(20) not null);"
mysql -S /data/3308/mysql.sock -e "use taobao;create table t4 (id int not null primary key auto_increment,name varchar(20) not null);"

重启mycat
mycat restart

测试:
mysql -uroot -p123456 -h10.0.0.52 -P8066

use TESTDB
insert into t4(id,name) values(1,'a');
insert into t4(id,name) values(2,'b');
insert into t4(id,name) values(3,'c');
insert into t4(id,name) values(4,'d');

分别登录后端节点查询数据
mysql -S /data/3307/mysql.sock
use taobao
select * from t4;

mysql -S /data/3308/mysql.sock
use taobao
select * from t4;

t5 表
id name telnum
1 bj 1212
2 sh 22222
3 bj 3333
4 sh 44444
5 bj 5555

sharding-by-intfile
vim schema.xml
<table name="t5" dataNode="sh1,sh2" rule="sharding-by-intfile" />

vim rule.xml
<tableRule name="sharding-by-intfile">
<rule> <columns>name</columns>
<algorithm>hash-int</algorithm>
</rule>
</tableRule>

<function name="hash-int" class="org.opencloudb.route.function.PartitionByFileMap">
<property name="mapFile">partition-hash-int.txt</property>
<property name="type">1</property>
<property name="defaultNode">0</property>
</function>

partition-hash-int.txt 配置:
bj=0
sh=1
DEFAULT_NODE=1
columns 标识将要分片的表字段,algorithm 分片函数, 其中分片函数配置中,mapFile标识配置文件名称

准备测试环境
mysql -S /data/3307/mysql.sock -e "use taobao;create table t5 (id int not null primary key auto_increment,name varchar(20) not null);"

mysql -S /data/3308/mysql.sock -e "use taobao;create table t5 (id int not null primary key auto_increment,name varchar(20) not null);"
重启mycat
mycat restart
mysql -uroot -p123456 -h10.0.0.51 -P8066
use TESTDB
insert into t5(id,name) values(1,'bj');
insert into t5(id,name) values(2,'sh');
insert into t5(id,name) values(3,'bj');
insert into t5(id,name) values(4,'sh');
insert into t5(id,name) values(5,'tj');

a b c d
join
t

select t1.name ,t.x from t1
join t
select t2.name ,t.x from t2
join t
select t3.name ,t.x from t3
join t

使用场景:
如果你的业务中有些数据类似于数据字典,比如配置文件的配置,
常用业务的配置或者数据量不大很少变动的表,这些表往往不是特别大,
而且大部分的业务场景都会用到,那么这种表适合于Mycat全局表,无须对数据进行切分,
要在所有的分片上保存一份数据即可,Mycat 在Join操作中,业务表与全局表进行Join聚合会优先选择相同分片内的全局表join,
避免跨库Join,在进行数据插入操作时,mycat将把数据分发到全局表对应的所有分片执行,在进行数据读取时候将会随机获取一个节点读取数据。

vim schema.xml
<table name="t_area" primaryKey="id" type="global" dataNode="sh1,sh2" />

后端数据准备
mysql -S /data/3307/mysql.sock
use taobao
create table t_area (id int not null primary key auto_increment,name varchar(20) not null);

mysql -S /data/3308/mysql.sock
use taobao
create table t_area (id int not null primary key auto_increment,name varchar(20) not null);

重启mycat
mycat restart

测试:
mysql -uroot -p123456 -h10.0.0.52 -P8066

use TESTDB
insert into t_area(id,name) values(1,'a');
insert into t_area(id,name) values(2,'b');
insert into t_area(id,name) values(3,'c');
insert into t_area(id,name) values(4,'d');

A
join
B
为了防止跨分片join,可以使用E-R模式
A join B
on a.xx=b.yy
join C
on A.id=C.id
<table name="A" dataNode="sh1,sh2" rule="mod-long">
<childTable name="B" joinKey="yy" parentKey="xx" />
</table>

D. 想做java开发,都要学什么

首年的学java基础,然后是数据库,现在用的多的数据库Oracle和Mysql。增删改查是最基本的,最好sql调优也要会,然后就是前端的东西,html,css,js,jquery等,还有会一些前端框架,BootStrap,Vue,Vue是现在最火的前端框架,最好学一下。最后就是一些比较火的框架,持久层的Mybatis,Spring,SpringMvc等,现在很火的Springboot都要学,微服务治理框架SpringCloud。还有其他的一些技术,redis,Linux操作系统,es等。都学完了差不多就可以找工作了

E. linux操作系统中 cat /proc/devices /*cat,这个里面的星号是什么意思,加和不加有什么区别

cat /proc/devices可以查到该目录下所有挂在的软硬件设备吧
/*cat 这个是不是你打错什么命令了,我还没见过这个命令呢

*是所有操作系统中的通配符,就是可以匹配所有的内容。比如有下面四个词:
中国人
中国
中华人民共和国
中国政府

这四个词可以使用 中* 就可以全部匹配到!

F. linux下的 数据库 有哪些

你要的全在下面:数据库已经有4代了产品很多。

DBA课程更新内容大纲:

序章 DBA职业体系与数据库产品趋势

G. Mycat集群部署(高可用)

MyCat 官方推荐使用 HAProxy 做 MyCat 的高可用负载均衡代理。
HAProxy 是一款提供高可用性、负载均衡以及基于 TCP(第四层)和 HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。
MyCat 服务主机上需要开放检测端口用来检测 mycat 服务的状态,提供给 HAProxy 对 MyCat 的服务状态进行检测判断。
检测 mycat 服务状态以通过xinetd 来实现, 使得HAProxy 可以用 httpchk 来检测 MyCat 的存活状态。

1、安装xinetd:

2、修改配置
检查是否有includedir /etc/xinetd.d,如果没有该配置需要加上:

3、检查 /etc/xinetd.d 目录
检查是否有 /etc/xinetd.d 目录,如果没有该目录需要加上:

4、配置存活状态检测
增加 MyCat 存活状态检测服务配置:

5、配置服务脚本
添加服务脚本/usr/local/bin/mycat_status:

6、添加可执行权限

7、配置启动服务
在 /etc/services 中加入 mycat_status 服务:

保存后重启:

9、开放端口
MyCat 服务主机的防火墙上打开 48700 端口:

设置开机启动:

[:[port]] 指定将客户端连接请求发往此服务器时的目标端口,此为可选项
[param*] 为此 server 设定的一系列参数,均为可选项,参数比较多,下面仅说明几个常用的参数:
weight: 权重,默认为 1,最大值为 256, 0 表示不参与负载均衡
backup: 设定为备用服务器,仅在负载均衡场景中的其他 server 均不可以启用此 server;
check: 启动对此 server 执行监控状态检查,其可以借助于额外的其他参数完成更精细的设定;
inter: 设定监控状态检查的时间间隔,单位为毫秒,默认为 2000,
也可以使用 fastinter 和 downinter 来根据服务器端专题优化此事件延迟
rise: 设置 server 从离线状态转换至正常状态需要检查的次数(不设置的情况下,默认值为 2);
fall: 设置 server 从正常状态转换至离线状态需要检查的次数(不设置的情况下,默认值为 3);
cookie: 为指定 server 设定 cookie 值,此处指定的值将会在请求入站时被检查,第一次为此值挑选的 server 将会被后续的请求所选中,其目的在于实现持久连接的功能;
maxconn: 指定此服务器接受的最大并发连接数,如果发往此服务器的连接数目高于此处指定的值,其将被放置于请求队列,以等待其他连接被释放。

默认情况下 haproxy 是没有日志的,如果有需要则配置系统的 syslog, 也就是 linux 系统中的 rsyslog 服务。

修改配置

增加haproxy日志配置文件

修改配置:

配置生效:

阅读全文

与linux安装mycat相关的资料

热点内容
苹果笔记本t2加密芯片怎么打开 浏览:796
安卓如何把手机投屏至电视 浏览:737
方舟编译器现在可提速哪些软件 浏览:58
微信加密为什么是黑屏 浏览:473
android去电状态 浏览:602
苹果13如何加密视频 浏览:813
linuxweblogic缓存 浏览:67
云服务器不同地域 浏览:946
python闹钟怎么打 浏览:686
虚拟主机服务器有什么区别 浏览:833
算法与程序的奥秘章节检测 浏览:377
找pdf 浏览:530
与服务器连接断开如何处理 浏览:833
服务器维修预计十分钟什么意思 浏览:170
黑马程序员主打教学是什么 浏览:41
python九乘法表怎么编写 浏览:974
思维方式pdf 浏览:656
tcc社区app怎么注册 浏览:941
央视网下载加密 浏览:455
命令行访问服务器 浏览:37