01
背 景
background
目前常见的新型违法犯罪网站大多采用PHP+MySql的单服单库直连的部署方法,也是我们在实战和支撑仿真重构过程中遇到的较多的部署类型。
在一次支撑过程中遇到了一种数据库采用MySql+MyCat中间件的分布式存储方案的新型违法犯罪网站,数据库源分散在几台不同地方的服务器,那么如何对这种使用MyCat技术进行数据的获取?在本文中将分享介绍方法思路。
02
介 绍
introduce
关于MyCat产品介绍和原理网上有很多,这里不再具体详述。
1
MyCat的结构
在MyCat的整体结构中,分为两个部分:上面是逻辑结构、下面是物理结构。
在逻辑结构中主要是一些逻辑库、逻辑表、分片规则、分片节点等逻辑结构的处理规则。
在物理理结构中就是具体的数据存储节点,也就是各分表分库读写等数据具体存储的服务器。
2
MyCat的配置文件
在MyCat安装目录下的conf目录里有三个重要的配置文件分别为server.xml、schema.xml、rule.xml。
2.1 server.xml配置文件:包含了MyCat的系统配置信息,主要有两个重要的标签:system、user。
其中我们提取要看的就是user这个标签。
图上表示设置了MyCat的用户名和密码是root和123456,此账号密码就是外部程序连接用的,可以使用mysql终端命令来查看mysql逻辑库为leo。
如果不习惯也可以使用可视化界面管理软件连接如Navicat Mysql或MySQL Workbench(端口默认为:8066,相应防火墙权限要开放。)
在所有数据库源节点和MyCat服务器通讯都正常的情况下,用数据库管理软件连接MyCat就可以看到所有分布在不同数据库节点服务器上的分库或分片的所有数据聚合的数据信息。
2.2 schema.xml配置文件:涵盖了MyCat的逻辑库、逻辑表、分片规则、分片节点及节点主机-数据源的配置。
下面以读写分离的配置为事例,如下所示:
图中设置了1个逻辑节点node1,这个node1对应逻辑主机host1,host1配置了writehost=mysql01,readhost=mysql02,真实的物理数据库连接账号密码为leo/leo
在如上的xml文件中我们只需要关注4个标签,schema/table/dataNode/dataHost, writehost是dataHost的子标签,readhost是writehost的子标签。
其中schema定义了要读写分离的库,dataNode定义了逻辑主机dataHost和库名,dataHost定义了逻辑主机对应的物理主机,可以有多个写主机,每个写host可以对应多个读host。writehost和readhost则包含具体的数据库连接信息。
需要注意的是这里只有url部分和账号密码部分包含真正的DB连接信息,其他的诸如dbnode,dbhost,database,host等属性全部是虚拟的属于逻辑结构层,同样的可以在其主机上使用mysql终端命令来查看mysql信息或使用Navicat界面管理软件连接(端口为:3066,相应防火墙权限要开放。)
2.3 rule.xml配置文件:定义所有拆分表的规则,主要包含两类标签:tableRule、Function,这个略过。
03
方 法
method
通过上述介绍,我们知道了其实主要的就是找到上面那些文件,然后通过里面的配置确定数据库所有源服务器。
1
判 断
1.1连接到服务器主机,使用命令行工具(如Putty)或者远程桌面工具(如Windows自带的远程桌面连接)Xshell等远程管理工具。
1.2进入MyCat的安装目录,Linux系统通常在/usr/local/mycat或/opt/mycat目录下。
1.3查看MyCat的启动状态。通过执行以下命令可以查看MyCat的启动状态和信息:
如果MyCat已经启动,会输出类似如下的信息:
如果MyCat未启动,会输出状态信息:
如果发现MyCat已经启动,则可以认为服务器主机上使用了MyCat中间件。
如果未启动,则可以排除服务器主机使用MyCat中间件的可能性。
1.4另外,在服务器主机上也可以通过查看进程列表,来判断服务器上是否运行了MyCat。可以执行以下命令查看进程列表:
如果返回进程列表中含有类似
/usr/local/mycat/bin/mycat或者/opt/mycat/bin/mycat的信息,说明服务器主机上正在运行MyCat中间件。如果未找到相关进程,则可以排除服务器主机使用MyCat中间件的可能性。
需要注意的是,如果服务器主机上没有安装MyCat,但其它服务器上使用了MyCat,也可以通过网络连接访问到主机上的数据库,这时需要查看网站应用程序的配置文件或代码,确认是否使用了 MyCat 中间件,或者查看数据库连接信息,是否指向了 MyCat 的代理端口。
2
线 索
在MyCat安装目录下的conf找到server.xml、schema.xml,找出相关重要信息如IP主机,进行调证、检材分析等。
3
取 证
3.1数据源
如果是线上的在允许的情况下,开放涉及的MyCat服务器主机的8066端口远程访问。
使用Navicat mysql软件远程联连接MyCat,查看数据及数据库操作。
如果是所有检材仿真后的,注意所有关联的MyCat主机和节点数据库主机的配置信息都要修改为VM对应的内网IP。然后就可以查看数据及数据库操作。
3.2网站重构
网站仿真重构时,也要注意网站数据库的连接配置文件相应IP修改为对应的VM内网IP。
如果网站的数据库连接配置文件中存在多台MyCat中间件调度,则站点的数据库做了集群,同样可以用上面的方式逐一找出源,并尽快进行调证。
3.3注意事项
调证时要注意如有数据盘,数据盘里包含存放数据文件,有些服务商直接拷取云系统镜像,防真时有可能数据盘没有挂载上,如果仿真时没有发现数据库文件,要注意把数据盘挂载上去。
还有一种情况是数据盘里面有挂载一个docker服务,MyCat或MySql也有可能存放在docker里面实际根据连接信息,具体操作。
04
总 结
summarize
MySql数据库使用了MyCat技术,加上多集群方案,使得网站应用程序的数据分散,服务器多,对我们的调证服务器数量和数据的聚合归集,都有一定的不便性,如果调证不完整,仿真重构网站时也会遇到麻烦,所以通过分享学习,希望大家都能顺利调证出所有相关服务器。