mysql +cobar_MySQL 中间件 cobar 初体验
背景
cobar 是一个数据库中间件。
虽然已经不再维护好多年,但是做为一个学习的模型还是不错的。
在了解完 cobar 的基本原理后,再去学其它的中间件就很容易了。
我自己不是 DBA,因此下文中的语言或者内容很可能有错,欢迎指正。
第一个程序
效果
系统对外提供数据库 dbtest,包含 tb1 和 tb2 两张表。
其与物理数据库的对应关系为:
tb1: 映射到物理数据库 dbtest1 的 tb1 上
tb2: 一部分数据映射到物理数据库 dbtest2 的 tb2 上,另一部分数据映射到物理数据库 dbtest3 的 tb2 上
即不但实现了最基础的代理功能,还实现了分库分表的功能。
准备环境
数据库环境
搭建 MySQL 数据库,过程略。
在数据库上,创建 schema:dbtest1、dbtest2、dbtest3,table:tb1、tb2
# 创建dbtest1
DROP DATABASE IF EXISTS dbtest1;
CREATE DATABASE dbtest1;
USE dbtest1;
# 在dbtest1上创建tb1
CREATE TABLE tb1 (
id int NOT NULL,
gmt datetime
);
# 创建dbtest2
DROP DATABASE IF EXISTS dbtest2;
CREATE DATABASE dbtest2;
USE dbtest2;
# 在dbtest2上创建tb2
CREATE TABLE tb2 (
id int NOT NULL,
val varchar(256)
);
# 创建dbtest3
DROP DATABASE IF EXISTS dbtest3;
CREATE DATABASE dbtest3;
USE dbtest3;
# 在dbtest3上创建tb2
CREATE TABLE tb2 (
id int NOT NULL,
val varchar(256)
);
部署 cobar
wget https://github.com/alibaba/cobar/releases/download/v1.2.7/cobar-server-1.2.7.tar.gz
tar xvf cobar-server-1.2.7.tar.gz
cd cobar-server-1.2.7
目录树如下:
cobar-server-1.2.7
├── bin
│ ├── restart.sh
│ ├── shutdown.sh
│ ├── startup.bat
│ └── startup.sh
├── conf
│ ├── log4j.xml
│ ├── rule.xml
│ ├── schema.xml
│ └── server.xml
└── lib
├── cobar-server-1.2.7.jar
└── log4j-1.2.17.jar
配置 schema.xml
定义了 schema, 数据节点,数据源相关配置。
确认一下其中的"注意"部分即可。
dsTest[0]
dsTest[1]
dsTest[2]
192.168.0.1:3306/dbtest1
192.168.0.1:3306/dbtest2
192.168.0.1:3306/dbtest3
test
STRICT_TRANS_TABLES
配置 rule.xml
配置路由相关信息
路由规则定义,定义什么表,什么字段,采用什么路由算法
路由函数定义
id
2
512
配置 server.xml
定义 Cobar 用户名,密码
启动 cobar
建立目录 logs
启动 cobar
$ bin/startup.sh
日志见 logs 目录下
logs/
├── alarm.log
├── console.log
├── heartbeat.log
└── stdout.log
使用 cobar
连接 MySQL
命令行方式
$ mysql -h192.168.0.1 -utest -ptest -P8066 -Ddbtest
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
JDBC 方式
#JDBC(建议5.1以上的mysqldriver版本)
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://192.168.0.1:8066/dbtest","test", "test");
查看数据库
mysql> show databases;
+----------+
| DATABASE |
+----------+
| dbtest |
+----------+
1 row in set (0.00 sec)
查看数据表
mysql> show tables;
+------------------+
| Tables_in_dbtest |
+------------------+
| tb1 |
| tb2 |
+------------------+
2 rows in set (0.00 sec)
查看表结构
mysql> desc tb1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| gmt | datetime | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> desc tb2;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| val | varchar(256) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
插入数据
# 向表 tb1插入一条数据
mysql>insert into tb1(id,gmt) values (1,now());
# 向表 tb2插入一条数据
mysql>insert into tb2(id,val) values (1,"part1");
# 向表 tb2同时插入多条数据
mysql>insert into tb2(id,val) values (2,"part1"),(513,"part2");
查询数据
mysql> select * from tb1;
+----+---------------------+
| id | gmt |
+----+---------------------+
| 1 | 2018-06-10 18:16:47 |
+----+---------------------+
1 row in set (0.01 sec)
mysql> select * from tb2;
+-----+-------+
| id | val |
+-----+-------+
| 1 | part1 |
| 2 | part1 |
| 513 | part2 |
+-----+-------+
3 rows in set (0.00 sec)
查看物理表中数据
mysql> select * from dbtest1.tb1;
+----+---------------------+
| id | gmt |
+----+---------------------+
| 1 | 2018-06-10 18:16:47 |
+----+---------------------+
1 row in set (0.00 sec)
确认逻辑表 tb1 映射到了物理表 dbtest1.tb1 中
mysql> select * from dbtest2.tb2;
+----+-------+
| id | val |
+----+-------+
| 1 | part1 |
| 2 | part1 |
+----+-------+
2 rows in set (0.00 sec)
mysql> select * from dbtest3.tb2;
+-----+-------+
| id | val |
+-----+-------+
| 513 | part2 |
+-----+-------+
1 row in set (0.00 sec)
确认逻辑表 tb1 映射到了物理表 dbtest2.tb2 和 dbtest3.tb2 中
CobarManager
前面提到了管理端口为 9066。这个管理端口有什么用处呢?
CobarManager 通过连接 9066,可以查看 Cobar 的状态。
CobarManager 示例
下载安装 Tomcat
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz
tar xvf apache-tomcat-9.0.8.tar.gz
cd apache-tomcat-9.0.8
sh bin/startup.sh
安装
cd webapps
wget https://github.com/alibaba/cobar/releases/download/v1.2.7/cobar-manager-1.0.5.war
修改配置
修改 WEB-INF/classes/log4j.xml 中的日志输出路径,日志级别调整为 INFO 及以上
查看 WEB-INF/classes/ 下的各 XML 配置文件,不是必须更改
修改 WEB-INF/xmlpath.properties 文件,将 xmlpath 指向上面的各 XML 配置文件的路径,如 /home/admin/xml/
使用
重启 Tomcat
打开浏览器: http://127.0.0.1:8080/cobar-manager-1.0.5/
初始用户名和密码为 root/123456,在 WEB-INF/classes/user.xml 中指定的。
可以在页面上修改。
参考
mysql +cobar_MySQL 中间件 cobar 初体验相关推荐
- Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验
Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...
- Mysql数据库(一)——mysql数据库初体验
Mysql数据库(一)--mysql数据库初体验 一.数据库的概念 1.数据库的组成 ①.表 ②.数据库 2.数据库类型 ①.关系型数据库 ②.非关系型数据库(NoSQL (Not Only SQL) ...
- yii schema.mysql.sql_YII学习,初体验 ,对YII的一些理解.
先说点没用的: 不会选择,选择后不坚持,不断的选择.这是人生中的一个死循环,前两一直迷茫.觉得自己前进方向很不明朗.想去学的东西有很多.想学好YII,想学PYTHON 想学学hadoop什么的,又想研 ...
- MySQL数据库初体验
文章目录 一.MySQL数据库初体验 1.数据库的基本概念 2.数据库系统发展史 2.1文件管理系统的缺点 2.2数据库系统发展阶段 3.数据库原理 3.1数据的时代 3.2数据的分类 3.3DBMS ...
- MySQL 02 初体验
MySQL 02 初体验 文章目录 MySQL 02 初体验 一.学习目标 二.MySQL简介 三.MySQL服务启动与关闭 四.MySQL登录 五.MySQL配置文件 六.MySQL安装目录 七.M ...
- Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验
Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...
- 两个ORM的pk初体验:Peewee VS SQLAlchemy
之前从MySQL数据库捞数据都是使用的Peewee的ORM进行的获取,同时对于获取的结果,使用其强大的insert_many方法也能快速的导入大批量的数据. 现在实习的过程中,要上线一个服务,服务中要 ...
- ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安 ...
- 从入门到入土:python爬虫|scrapy初体验|安装教程|爬取豆瓣电影短评相关信息(昵称,内容,时间和评分)
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- Docker深入浅出系列 | 容器初体验
Docker深入浅出系列 | 容器初体验 教程目标 Docker已经上市很多年,不是什么新鲜事物了,很多企业或者开发同学以前也不多不少有所接触,但是有实操经验的人不多,本系列教程主要偏重实战,尽量讲干 ...
最新文章
- page_index--template.html(0)源码
- 用java调用oracle存储过程总结二
- python教程:封装、多态、反射
- 测试学python路线_小蜗分享:Python测试开发全套学习路线
- 查看Linux服务器raid信息笔记整理!
- 管理培训决定企业生死的5个层面
- 简单易学又有效的颈椎病自我康复操
- 《分解因数》:质因数分解
- 7-95 深入虎穴 (树的深搜)
- 解决OBS录屏模糊问题
- 空间辐射环境 - 银河宇宙线
- C语言自定义函数的声明
- 开源精选:AntdFront —— React 纯 Hook 多标签微前端管理系统解决方案
- centos7 npm bulid编译报错解决
- lg5手机怎样root,lgg5手机参数
- Java设计模式之二工厂设计模式
- 权健涉嫌传销犯罪被立案侦查,周洋父亲:很快会提起诉讼
- c语言松树图形,松树的基本画法
- Redis加固方案之一
- ixchariot安装、测试IPV6