小工具      在线工具  汉语词典  css  js  c++  java

Mycat 垂直拆分--分库

Java,软件&&安装,Linux 额外说明

收录于:42天前

数据库由很多表组成,每个表对应不同的业务。垂直切分是指将表按照业务进行分类,分布到不同的数据库,从而将数据或压力分担到不同的图书馆。 ,如下所示:

一个问题:在两台主机上的两个数据库中的表,能否关联查询?
答案:不可以关联查询

分库的原则是:关系密切的表应该在一个数据库中,不相关的表可以分为不同的数据库。

垂直分库不能在旧数据库上进行,需要在新的空数据库上进行。

首先在两台机器上创建两个数据库,然后通过Mycat创建需要的空表(分布在两台机器上的数据库中)。

最后,只需将旧数据库中的数据倒入两个新数据库中即可。

Mycat和Mysql环境的搭建和之前的文章一样。

主从IP解释如下:

192.168.1.9 主机 dn1

192.168.1.109 从 dn2

1.首先修改mycat的scheme.xml配置文件

vim /usr/local/mycat/conf/schema.xml

schema.xml配置如下:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
              <table name="customer" dataNode="dn2"></table>
        </schema>
        <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
                /> -->
        <dataNode name="dn1" dataHost="localhost1" database="orders" />
        <dataNode name="dn2" dataHost="localhost2" database="orders" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="192.168.1.9:3306" user="root"
                                   password="123456">
                </writeHost>
        </dataHost>
        <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM2" url="192.168.1.109:3306" user="root"
                                   password="123456">
                </writeHost>
        </dataHost>

</mycat:schema>

2、分别在主从机上登录mysql,创建2个空数据库订单

# 分别在数据节点dn1和dn2上创建数据库订单。

# 登录mysql

cd /usr/local/mysql/bin

./mysql -u root -p

123456

#创建数据库订单

创建数据库订单;

注意:分库操作不是在原来的旧数据库上进行的。您需要准备两台机器,分别安装新的数据库。

3.启动Mycat并启动子库

mycat登录: mysql -u mycat -p -h 192.168.1.9 -P 8066

密码:123456

通过mycat创建如下4张表,建表语句如下:

#客户表 rows:10万 CREATE TABLE customer(

id INT AUTO_INCREMENT,

NAME VARCHAR(200),

PRIMARY KEY(id)

);

创建订单表 rows:100万

CREATE TABLE orders(

id INT AUTO_INCREMENT,

order_type INT,

customer_id INT,

amount DECIMAL(10,2),

PRIMARY KEY(id)

);

#订单详细表 rows:100万

CREATE TABLE orders_detail(

id INT AUTO_INCREMENT,

detail VARCHAR(2000),

order_id INT,

PRIMARY KEY(id)

);

#订单状态字典表 rows:20

CREATE TABLE dict_order_type(

id INT AUTO_INCREMENT,

order_type VARCHAR(200),

PRIMARY KEY(id)

);

4. 分库验证

和之前的schema.xml配置一样,customer表会被分配到dn2节点,即从机(192.168.1.109)。

其他表将分配给 dn1,即主机 (192.168.1.109)。

也就是说,通过mycat将mycat逻辑库中的四张表划分到两台不同的机器上,成功实现数据库垂直分区操作,如下图:

. . .

相关推荐

额外说明

Vue3 —— 新的组件及一些改变(Fragment、Teleport、Suspense、其他的改变)

系列文章目录 内容 参考链接 Vue3 创建 Vue3.0 工程 Vue3 - Composition API(零) setup函数、ref函数、reactive函数、响应式、reactive对比ref Vue3 - Composition API(一)

额外说明

【虚拟仿真】Unity3D打包WEBGL后播放视频(VideoPlayer组件)

推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 本篇文章实现Unity3D打包WEBGL后播放视频,如

额外说明

【C++11保姆级教程】auto和decltype

文章目录 前言 总结 一、auto 1.初识auto关键字 2.auto使用 二、decltype 1.初识decltype 2.使用decltype 总结 前言 在C++11中引入了一些新的关键字和特性,其中包括auto和decltype。这两个关键字

额外说明

【Java 进阶篇】MySQL数据库范式详解

范式是数据库设计中的一种理论方法,旨在通过减少数据冗余来提高数据存储的有效性和完整性。在MySQL数据库中,范式设计是一个重要的概念,它有助于组织和管理数据,确保数据的一致性和可靠性。本文将深入探讨数据库范式,包括不同范式的概念、优缺点以及示例代码。 什

额外说明

django-web开发使用七牛云上传图片

现在开发过程中往往上传图片视频都会托管到第三方平台,不会直接保存到自己的服务器上,主要是出于服务器维护成本及安全性考虑,现在介绍django-web开发使用七牛云上传文件七牛官方网站 一、关于七牛上传文件的思路 1、客户端上传文件到七牛前,需要先从七牛服

额外说明

为什么 MySQL 选择 Repeatable Read 作为默认隔离级别

为什么 MySQL 选择 Repeatable Read 作为默认隔离级别? 我们知道,ANSI/ISO SQL-92 标准定义了 4 种隔离级别,从低到高依次为: 读未提交(Read Uncommitted)、读已提交(Read Committed)、

额外说明

二十二、Pod存储之volume

Pod 的存储之volume ​容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。其次,在Pod 中同时运

额外说明

Windows系统缺少zipfldr.dll文件问题

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个zipfldr.dll文件(

ads via 小工具