Categories
java mysql

mycat 实例

mycat配置解释

再mycat2/conf/有配置文件

server.xml 定义数据库连接 用户

schema.xml 定义 虚拟表和实体表

rule.xml 定义分库逻辑(入库)

route.xml定义查询时实体表路由配置(查询)

简单按字段值分库
<!-- 按照学校名分表 -->
	<tableRule name="shardingBySchoolName">
		<rule>
			<columns>school_name</columns>
			<algorithm>shardingBySchoolName</algorithm>
		</rule>
	</tableRule>
<!-- 按照学校名分表 -->
	<function name="shardingBySchoolName" class="org.opencloudb.route.function.PartitionByFileMap">
		<property name="mapFile">shardingBySchoolName.txt</property>
		<property name="type">1</property>
		<property name="defaultNode">0</property>
	</function>

shardingBySchoolName.txt

爱享=0
中悦=1
DEFAULT_NODE=1
Categories
diary

中山三院数据处理记录

本来打算用mysql分库分表进行三院数据处理(最大的一张表有两亿数据)。计划是三台ubuntu每台负责一到两张大表。每个表单独建立一个库,按照用户ID分别在库中做分表功能

数据库结构如上,图片中表后缀就是用户id生成的分表序号

用的是etl工具kettle进行数据读取再入库的(*记得使用etl工具时需要进行数据分片把一个大库分成几个部分然后输入到其他库上,否则一个任务没完成也要重新开始)

细节:

第一:若单纯做数据迁移查询,数据库引擎可食用Myisam,没有innodb的行锁与机制,然而数据写入速度提高

第二:关闭mysql binlog 因为bin_log 会把数据库的写入异步保存为一个二进制文件,供slave库执行同步 ,其实会稍微影响效率

my.cnf 在[mysqld]添加 skip-log-bin 重启mysql

执行查询SHOW VARIABLES LIKE “log_bin” Value为OFF即 关闭了log_bin

第三:绝对不可以将某一个张表分往某一台服务器上。而是要把一张表水平分到多台服务器上 否则当执行某一业务(需要查询某张表时)所有网络访问和数据库连接,只落在同一台服务器上完全起不到多服务器集群的作用。(我应该前300张表在 ubuntu1 中间300张表在ubuntu2 最后300张表在ubuntu3)