接上一篇:企业实战_10_MyCat Mysql 主复制总结
https://gblfy.blog.csdn.net/article/details/118652742

文章目录

  • 一、准备工作
    • 1. 实现思路
    • 2. 配置MyCat垂直分库
    • 3. 环境配置
    • 4. 在master节点创建mycat用户
    • 5. 赋予操作数据库权限
  • 二、schema.xml文件配置
    • 2.1. 基础模板 样例
    • 2.2. 实际配置
    • 2.3. dataHost标签
    • 2.4. dataNode标签
    • 2.5. schema标签
  • 三、server.xml文件配置
  • 四、启动mycat调试
    • 4.1. 启动mycat
    • 4.2. 启动mycat异常
    • 4.2. 解决方案
    • 4.3. 重新启动mycat
    • 4.4. Mycat验证配置
    • 4.5. 操作日志
一、准备工作
1. 实现思路
第一步 由后台3个物理数据库抽取为一个逻辑数据路
第二步 各个数据节点只保存自己模块的表数据
第三步 删除冗余数据

2. 配置MyCat垂直分库
步骤 说明
使用schema.xml配置逻辑库
使用server.xml配置系统变量及用户权限
由于没有用到水平分片顾不许配置rule.xml

3. 环境配置
主机名 IP地址 角色 数据库
node1 192.168.92.101 MYSQL、mycat imooc_db(主机物理)
node2 192.168.92.102 MYSQL order_db(从机物理)
node3 192.168.92.103 MYSQL product_db(主机物理)
node4 192.168.92.104 MYSQL customer_db(从机物理)

4. 在master节点创建mycat用户
create user im_mycat@'192.168.92.%' identified by '123456';
5. 赋予操作数据库权限
grant  select,insert,update,delete,execute on *.* to im_mycat@'192.168.92.%';

注:在主机上创建用户,从机也会创建,这个用户是让mycat来操作数据库的

二、schema.xml文件配置
2.1. 基础模板 样例
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><!-- 配置逻辑库和逻辑表 --><schema name="逻辑库" checkSQLschema="false"  sqlMaxLimit="100"><table name="逻辑表"          primaryKey="逻辑表主键"          dataNode="数据节点名"/></schema><!-- 配置数据节点 --><dataNode name="数据节点名"    dataHost="主机节点名" database="物理数据库" /><!-- 配置主机节点 --><dataHost  name="物理数据库主机节点" maxCon="1000" minCon="10"  balance="3" writeType="0" dbType="数据库类型" dbDriver="native" switchType="1" ><heartbeat>select user()</heartbeat><writeHost host="物理数据库ip" url="物理数据库ip:端口" user="操作物理数据库的mysql用户" password="密码"></writeHost></dataHost>
</mycat:schema>
2.2. 实际配置
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--
name:逻辑库名
checkSQLschema=false:查询sql中是否包含数据库名,忽略校验
sqlMaxLimit:定义了默认返回前端的数据的行数
-->
<schema name="imooc_db" checkSQLschema="false" sqlMaxLimit="100">
<!--
name:逻辑表名
primaryKey:逻辑主键和后端真是表中的主键保持一致
dataNode:引用的数据节点
-->
<table name="order_master" primaryKey="order_id"  dataNode="ordb" />
</schema><!--数据节点
name:数据节点名称
dataHost:引用下面配置的dataHost
database:后端mysql的物理数据库名称 -->
<dataNode name="ordb" dataHost="mysql92102" database="order_db" /><!--mycat连接后端mysql的数据节点的连接信息
name:数据主机名 (自定义数据库+节点简写)
maxCon=1000:后端mysql允许mycat连接的最大连接数1000
maxCon=10:后端mysql允许mycat连接的最小连接数10
balance=3:在从机中负载均衡分发请求
writeType=0:写的类型,后端多个writeType怎样处理读请求
dbType:数据库类型
dbDriver:原生mysql驱动
switchType=1:交换类型,如果不是主从复制,此参数无意义-->
<dataHost name="mysql92102" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1"><!--心跳检测-->    <heartbeat>select user()</heartbeat><!--写主机user:操作读写的mycat用户password:操作读写的mycat用户密码-->    <writeHost host="192.168.92.102" url="192.168.92.102:3306" user="im_mycat" password="123456"></writeHost></dataHost>
</mycat:schema>
2.3. dataHost标签

dataHost标签:主要是配置mycat访问后端mysql数据节点的连接信息,咱们是一主三从,下面是配置3个从节点的连接信息。

<dataHost name="mysql92103" maxCon="1000" minCon="10" balance="3"writeType="0" dbType="mysql" dbDriver="native" switchType="1"><heartbeat>select user()</heartbeat><writeHost host="192.168.92.103" url="192.168.92.103:3306" user="im_mycat" password="123456"></writeHost></dataHost><dataHost name="mysql92104" maxCon="1000" minCon="10" balance="3"writeType="0" dbType="mysql" dbDriver="native" switchType="1"><heartbeat>select user()</heartbeat><writeHost host="192.168.92.104" url="192.168.92.104:3306" user="im_mycat" password="123456"></writeHost></dataHost>
2.4. dataNode标签

dataNode依赖于 dataHost标签标签,dataNode有几个是后端有几个数据库决定的。

<dataNode name="ordb" dataHost="mysql92102" database="order_db" /><dataNode name="prodb" dataHost="mysql92103" database="product_db" /><dataNode name="custdb" dataHost="mysql92104" database="customer_db" />
2.5. schema标签

关键配置:逻辑库和逻辑表

<schema name="imooc_db" checkSQLschema="false" sqlMaxLimit="100"><table name="order_master"          primaryKey="order_id"          dataNode="ordb" /><table name="order_detail"          primaryKey="order_detail_id"   dataNode="ordb" /><table name="order_cart"            primaryKey="cart_id"           dataNode="ordb" /><table name="order_customer_addr"   primaryKey="customer_addr_id"  dataNode="ordb" /><table name="region_info"           primaryKey="region_id"         dataNode="ordb" /><table name="shipping_info"         primaryKey="ship_id"           dataNode="ordb" /><table name="warehouse_info"        primaryKey="w_id"              dataNode="ordb" /><table name="warehouse_proudct"     primaryKey="wp_id"             dataNode="ordb" /><table name="product_brand_info"    primaryKey="brand_id"          dataNode="prodb" /><table name="product_category"      primaryKey="category_id"       dataNode="prodb" /><table name="product_comment"       primaryKey="comment_id"        dataNode="prodb" /><table name="product_info"          primaryKey="product_id"        dataNode="prodb" /><table name="product_supplier_info" primaryKey="supplier_id"       dataNode="prodb" /><table name="product_pic_info"      primaryKey="product_pic_id"    dataNode="prodb" /><table name="customer_balance_log"      primaryKey="balance_id"        dataNode="custdb" /><table name="customer_inf"              primaryKey="customer_inf_id"   dataNode="custdb" /><table name="customer_level_inf"        primaryKey="customer_level"    dataNode="custdb" />
</schema>
三、server.xml文件配置

配置系统参数
应用程序通过mycat连接数据库的账号

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/"><system><property name="serverPort">8066</property><property name="managerPort">9066</property><property name="nonePasswordLogin">0</property><property name="bindIp">0.0.0.0</property><property name="frontWriteQueueSize">2048</property><property name="txIsolation">2</property><property name="processors">8</property><property name="idleTimeout">1800000</property><property name="sqlExecuteTimeout">300</property><property name="useSqlStat">0</property><property name="useGlobleTableCheck">0</property><property name="sequnceHandlerType">2</property><property name="defaultMaxLimit">100</property><property name="maxPacketSize">104857600</property></system><user defaultAccount="true" name="app_imooc"><property name="usingDecrypt">1</property><property name="password">bDbWr7bVMgszTe82oMo8NaUsmFFdPCNl/lYXzOYoG8anTpQLvdx5e+LYJEmT0IAeSVp1loyxSZPyv1GoHbHFHg==</property><property name="schemas">order_db,product_db,customer_db</property></user>
</mycat:server>
四、启动mycat调试
4.1. 启动mycat
# 监控MyCat运行状态
ps -ef |grep mycat# 重新启动mycat
mycat stop#启动MyCat
mycat start# 查看mycat启动日志
tail -f /app/mycat/logs/wrapper.log
4.2. 启动mycat异常
#异常信息如下
Caused by: io.mycat.config.util.ConfigException: SelfCheck###  schema product_db refered by user app_imooc is not exist!
# 日志的异常信息收的就是app_imooc用不存在
4.2. 解决方案

此处应该配置逻辑数据库而不是物理数据库

# 编辑server.xml
将<property name="schemas">order_db,product_db,customer_db</property>
替换为
<property name="schemas">imooc_db</property>

4.3. 重新启动mycat
# 重新启动mycat
mycat stop#启动MyCat
mycat start# 查看mycat启动日志
tail -f /app/mycat/logs/wrapper.log

4.4. Mycat验证配置
# 在mysql的任意节点,使用mysql客户端连接mycat
# 怎样证明这是通过登录的mysql数据库还是登录的mycat服务端呢?在操作日志中有答案mysql  -uapp_imooc -p123456 -h192.168.92.101 -P8066 # 查看当前用户可以查看的逻辑库有哪些show databases;# 使用imooc_db数据库
use imooc_db;# 查看在这个逻辑库下面的逻辑表包含有哪些
show tabels;# 查询逻辑表,验证是否可以真实访问后端屋里库中的物理表的数据
select * from product_info limit 10;如果返回数据正常,说明mycat配置是没有问题了。

从上面可以看出逻辑表和我们真实的屋里库中的标的数量一致,现在通过逻辑库访问后端3个物理数据库中的物理表。

4.5. 操作日志
[root@node1 ~]#  mysql  -uapp_imooc -p123456 -h192.168.92.101 -P8066
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.29-mycat-1.6.5-release-20180122220033 MyCat Server (OpenCloundDB)Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+----------+
| DATABASE |
+----------+
| imooc_db |
+----------+
1 row in set (0.01 sec)mysql> use imooc_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+-----------------------+
| Tables in imooc_db    |
+-----------------------+
| customer_balance_log  |
| customer_inf          |
| customer_level_inf    |
| customer_login        |
| customer_login_log    |
| customer_point_log    |
| order_cart            |
| order_customer_addr   |
| order_detail          |
| order_master          |
| product_brand_info    |
| product_category      |
| product_comment       |
| product_info          |
| product_pic_info      |
| product_supplier_info |
| region_info           |
| shipping_info         |
| warehouse_info        |
| warehouse_proudct     |
+-----------------------+
20 rows in set (0.00 sec)mysql> select * from product_info limit 10;
+------------+------------------+---------------------------------------+------------+----------+-----------------+-----------------+-------------------+-------------+--------+--------------+----------------+--------------+--------+--------+-------+-------+------------+---------------------+------------+----------+---------------------+---------------------+
| product_id | product_code     | product_name                          | bar_code   | brand_id | one_category_id | two_category_id | three_category_id | supplier_id | price  | average_cost | publish_status | audit_status | weight | length | heigh | width | color_type | production_date     | shelf_life | descript | indate              | modified_time       |
+------------+------------------+---------------------------------------+------------+----------+-----------------+-----------------+-------------------+-------------+--------+--------------+----------------+--------------+--------+--------+-------+-------+------------+---------------------+------------+----------+---------------------+---------------------+
|          1 | 1700000000000001 | [凯乐石]连衣裙示例商品-1              | 771998885  |        4 |               1 |               9 |                17 |           2 | 269.79 |       269.79 |              0 |            0 |   NULL |   NULL |  NULL |  NULL | NULL       | 2021-07-27 09:55:18 |        180 |          | 2021-07-10 19:38:55 | 2021-07-10 19:38:56 |
|          2 | 1800000000000001 | [金狐狸]蕾丝裙示例商品-1              | 9075354188 |       12 |               1 |               9 |                18 |           2 | 252.03 |       252.03 |              0 |            0 |   NULL |   NULL |  NULL |  NULL | NULL       | 2021-10-01 07:08:03 |        180 |          | 2021-07-10 19:38:55 | 2021-07-10 19:38:56 |
|          3 | 1900000000000001 | [Columbia]套装裙示例商品-1            | 8069751364 |        2 |               1 |               9 |                19 |          17 | 350.30 |       350.30 |              0 |            0 |   NULL |   NULL |  NULL |  NULL | NULL       | 2021-09-23 05:21:25 |        180 |          | 2021-07-10 19:38:55 | 2021-07-10 19:38:56 |
|          4 | 2000000000000001 | [李宁]棉麻连衣裙示例商品-1            | 1633719161 |       16 |               1 |               9 |                20 |           4 | 326.11 |       326.11 |              0 |            0 |   NULL |   NULL |  NULL |  NULL | NULL       | 2021-09-26 19:34:04 |        180 |          | 2021-07-10 19:38:55 | 2021-07-10 19:38:56 |
|          5 | 2100000000000001 | [LOWA]针织裙示例商品-1                | 3911261209 |        8 |               1 |               9 |                21 |           2 | 189.07 |       189.07 |              0 |            0 |   NULL |   NULL |  NULL |  NULL | NULL       | 2021-10-18 02:33:42 |        180 |          | 2021-07-10 19:38:55 | 2021-07-10 19:38:56 |
|          6 | 2200000000000001 | [Columbia]a字裙示例商品-1             | 7220463071 |        2 |               1 |               9 |                22 |          10 | 875.60 |       875.60 |              0 |            0 |   NULL |   NULL |  NULL |  NULL | NULL       | 2021-08-18 14:58:48 |        180 |          | 2021-07-10 19:38:55 | 2021-07-10 19:38:56 |
|          7 | 2300000000000001 | [Columbia]长裙示例商品-1              | 496033971  |        2 |               1 |               9 |                23 |          11 | 541.57 |       541.57 |              0 |            0 |   NULL |   NULL |  NULL |  NULL | NULL       | 2021-09-13 00:45:24 |        180 |          | 2021-07-10 19:38:55 | 2021-07-10 19:38:56 |
|          8 | 2400000000000001 | [北极狐]针织衫示例商品-1              | 1492949456 |        5 |               1 |              10 |                24 |          12 | 303.93 |       303.93 |              0 |            0 |   NULL |   NULL |  NULL |  NULL | NULL       | 2021-08-10 03:30:02 |        180 |          | 2021-07-10 19:38:55 | 2021-07-10 19:38:56 |
|          9 | 2500000000000001 | [NB]衬衫示例商品-1                    | 3983564931 |       17 |               1 |              10 |                25 |          16 |  18.28 |        18.28 |              0 |            0 |   NULL |   NULL |  NULL |  NULL | NULL       | 2021-07-12 13:30:45 |        180 |          | 2021-07-10 19:38:55 | 2021-07-10 19:38:56 |
|         10 | 2600000000000001 | [LOWA]T恤示例商品-1                   | 205288381  |        8 |               1 |              10 |                26 |          12 | 607.17 |       607.17 |              0 |            0 |   NULL |   NULL |  NULL |  NULL | NULL       | 2021-08-25 09:14:44 |        180 |          | 2021-07-10 19:38:55 | 2021-07-10 19:38:56 |
+------------+------------------+---------------------------------------+------------+----------+-----------------+-----------------+-------------------+-------------+--------+--------------+----------------+--------------+--------+--------+-------+-------+------------+---------------------+------------+----------+---------------------+---------------------+
10 rows in set (0.10 sec)mysql>exit

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.92.101’ (113)

下一篇:企业实战_12_MyCat水平扩展_分库分表
https://gblfy.blog.csdn.net/article/details/100059793

企业实战_11_MyCat垂直拆分相关配置相关推荐

  1. Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组、split函数垂直拆分二维numpy数组

    Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组.split函数垂直拆分二维numpy数组 目录

  2. 企业实战_19_MyCat初始化ZK并配置Mycat支持ZK

    接上一篇:企业实战_18_MyCat_ZK集群安装部署 https://gblfy.blog.csdn.net/article/details/100075631 文章目录 一.初始化集群中的数据 1 ...

  3. Exchange企业实战技巧(3)配置Exchange证书

    Exchange2010需要证书支持,exchange2010安装之后会默认开启ssl,在IE中只能使用https://而不是http://来访问owa.如果没有证书,也能安装exchange2010 ...

  4. Exchange企业实战技巧(5)配置OWA域名简写

    默认设置下,Exchange使用https://mail.contoso.com/owa访问邮箱.我们可以通过修改IIS设置,当输入http://mail.contoso.com或者mail.cont ...

  5. 企业实战_10_Mycat集成ZK实现配置同步

    主机名 IP地址 角色 数据库 mycat 192.168.43.32 MYCAT ,MYSQL,ZK mycat(全局自增id) node1 192.168.43.104 ZKMYSQL order ...

  6. 企业实战_10_MyCat Mysql 主复制总结

    接上一篇:企业实战_09_MyCat 搭建Mysql 一主三从复制环境 https://gblfy.blog.csdn.net/article/details/118652450 使用master-d ...

  7. 企业实战_12_MyCat水平扩展_分库分表

    接上一篇:企业实战_11_MyCat垂直拆分相关配置 https://gblfy.blog.csdn.net/article/details/100055838 文章目录 一.概念理论理解 1. 垂直 ...

  8. 企业实战_20_MyCat使用HAPpoxy对Mycat负载均衡

    上一篇:企业实战_19_MyCat初始化ZK并配置Mycat支持ZK https://gblfy.blog.csdn.net/article/details/100087824 解决了引入多个myca ...

  9. 企业实战_18_MyCat_ZK集群安装部署

    接上一篇:企业实战_17_MyCat水平扩展_跨分片查询_ER分片 https://gblfy.blog.csdn.net/article/details/100066013 文章目录 一.使用ZK记 ...

最新文章

  1. 笔记本电脑显卡cuda_准大学生必看~千万别乱买,建议不同专业选择不同款式的笔记本电脑!...
  2. 玩转oracle 11g(47):oracle删除非空表空间
  3. tensorflow2.0学习(一)
  4. jquery选择器从认识到使用初级篇
  5. 面试遇到不会回答的问题,如何力挽狂澜 ?
  6. Web Service工作原理及实例
  7. 图片视频音频开源文件转换器file-converter
  8. 推荐双11书单,我们一起共读 36 + 1 本书
  9. 多张图片怎么同时修改dpi?教你一键批量修改图片dpi
  10. Cent OS 7.4 1708 下载安装
  11. 学单片机之前需要做哪些准备?
  12. Vue通过spark-md5.js上传本地md5文件
  13. Python成品:运用turtle模块绘画
  14. 用 Python 实现手机自动答题,这下百万答题游戏谁也玩不过我!
  15. Android 同步网络时间
  16. 基于Android实现的锁屏软件APP设计
  17. 国行白色 ipad 4 16G
  18. Beyond Compare解决java文件对比中文乱码问题
  19. 用计算机弹大白菜鸡毛菜,抖音大白菜鸡毛菜是什么梗-抖音大白菜鸡毛菜梗意思介绍-仓鼠手游...
  20. VVIC根据ID取商品详情

热门文章

  1. js二维数组arr中表示读取第i行第j列的是:_c++ c语言 数组与字符串
  2. 转载:Android Studio 3.1.2 新项目报错 AAPT2 error: check logs for details (Gradle 3.1.2)
  3. IO之 随机访问文件(RandomAccessFile)
  4. strchr函数的用法
  5. 开发之痛:稳定的测试环境,怎么就那么难
  6. 基于 Flink 的典型 ETL 场景实现
  7. Gartner发布云产品评估报告:阿里云计算能力全球第一
  8. 开发者说:Seata 0.7.0 版本,你 get 'Metrics' 技能了吗?
  9. 五年,时间告诉我只有自己强大才是真的强大!
  10. Hadoop迁移MaxCompute神器之DataX-On-Hadoop使用指南