---
title: 部署Mycat分库分表
description: "1. 在三个数据库中，为每个数据库创建一张业务表。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmycat_03_0024.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmycat_03_0024.html
indexId: cdaf12af08339fdf8f8048c3e4f89075043abd8b0fe9edf93057a4a7854fdfc169
---
# 部署Mycat分库分表

1. 在三个数据库中，为每个数据库创建一张业务表。
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 dn1: #连接数据库 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql1.sock -Dsysbench #执行建表操作 CREATE TABLE `test1` ( `id` int(11) NOT NULL, `name` varchar(50) NOT NULL DEFAULT '', `indate` datetime NOT NULL DEFAULT '1910-01-01 00:00:00', PRIMARY KEY (`id`) ) ENGINE=InnoDB; dn2: #连接数据库 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql2.sock -Dsysbench #执行建表操作 CREATE TABLE `test2` ( `id` int(11) NOT NULL, `name` varchar(50) NOT NULL DEFAULT '', `indate` datetime NOT NULL DEFAULT '1910-01-01 00:00:00', PRIMARY KEY (`id`) ) ENGINE=InnoDB; dn3: #连接数据库 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql3.sock -Dsysbench #执行建表操作 CREATE TABLE `test3` ( `id` int(11) NOT NULL, `name` varchar(50) NOT NULL DEFAULT '', `indate` datetime NOT NULL DEFAULT '1910-01-01 00:00:00', PRIMARY KEY (`id`) ) ENGINE=InnoDB;

2. 修改schema.xml文件。

  a. 打开文件。
    1 vim /usr/local/mycat/conf/schema.xml

  b. 按“i”进入编辑模式，添加如下内容。
    1 2 3 <table name="test1" dataNode="dn1" > </table> <table name="test2" dataNode="dn2" > </table> <table name="test3" dataNode="dn3" > </table>

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
3. 重启Mycat并查看状态。
  1 2 3 mycat stop mycat start mycat status

4. 插入测试数据。

  a. 打开文件。
    1 vim /home/testdist.sh

  b. 按“i”进入编辑模式，添加如下内容。
    1 2 3 4 5 6 7 8 9 10 11 12 13 #!/bin/bash for i in {1..10000} do /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "insert into test1(id,name) values($i,'ccc')" done for i in {10001..20000} do /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "insert into test2(id,name) values($i,'ccc')" done for i in {20001..30000} do /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "insert into test3(id,name) values($i,'ccc')" done

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 执行脚本。
    1 sh /home/testdist.sh

5. 确认数据分布。
  1 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql1.sock -Dsysbench -e "select max(id) from test1"

  1 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql2.sock -Dsysbench -e "select max(id) from test2"

  1 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql3.sock -Dsysbench -e "select max(id) from test3"

  30000条数据分布在不同数据库的不同表里。
