search
HomeDatabaseMysql Tutorial 基于开源软件cobar配置分布式数据库

更多博文请关注:没有伞的孩子必须努力奔跑(www.xuchanggang.cn)这篇文章不能称之为原创,完全是基于cobar的官方文档搭建,从这里也间接的可以看到cobar的文档有

更多博文请关注:没有伞的孩子必须努力奔跑 ()


这篇文章不能称之为原创,完全是基于cobar的官方文档搭建,,从这里也间接的可以看到cobar的文档有多详细

一、cobar简介:

Cobar是关系型数据库的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。

       产品在阿里巴巴B2B公司已经稳定运行了3年以上。

       目前已经接管了3000+个MySQL数据库的schema,为应用提供数据服务。

       据最近统计cobar集群目前平均每天处理近50亿次的SQL执行请求。

cobar官方文档地址:

二、cobar解决的问题以及cobar存在的不足:

1.cobar解决的问题:

  (1).分布式:Cobar的分布式主要是通过将表放入不同的库来实现:

      A. Cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分

      B. Cobar也支持将不同的表放入不同的库

      C. 多数情况下,用户会将以上两种方式混合使用

   这里需要强调的是,Cobar不支持将一张表,例如test表拆分成test_1, test_2, test_3.....放在同一个库中,必须将拆分后的表分别放入不同的库来实现分布式。
  (2).HA:在用户配置了MySQL心跳的情况下,Cobar可以自动向后端连接的MySQL发送心跳,判断MySQL运行状况,一旦运行出现异常,Cobar可以自动切换到备机工作。但需要强调的是:

       A. Cobar的主备切换有两种触发方式,一种是用户手动触发,一种是Cobar的心跳语句检测到异常后自动触发。那么,当心跳检测到主机异常,切换到备机, 如果主机恢复了,需要用户手动切回主机工作,Cobar不会在主机恢复时自动切换回主机,除非备机的心跳也返回异常。

       B. Cobar只检查MySQL主备异常,不关心主备之间的数据同步,因此用户需要在使用Cobar之前在MySQL主备上配置双向同步,详情可以参阅MySQL参考手册。

2.存在的不足:

  (1).不支持跨库情况下的join、分页、排序、子查询操作。
  (2).SET语句执行会被忽略,事务和字符集设置除外。
  (3).分库情况下,insert语句必须包含拆分字段列名。
  (4).分库情况下,update语句不能更新拆分字段的值。
  (5).不支持SAVEPOINT操作。
  (6).暂时只支持MySQL数据节点。
  (7).使用JDBC时,不支持rewriteBatchedStatements=true参数设置(默认为false)。
  (8).使用JDBC时,不支持useServerPrepStmts=true参数设置(默认为false)。
  (9).使用JDBC时,BLOB, BINARY, VARBINARY字段不能使用setBlob()或setBinaryStream()方法设置参数。

3.Cobar逻辑层次图

215013534.jpg

   dataSource:数据源,表示一个具体的数据库连接,与一个物理存在的schema一一对应。
   dataNode:数据节点,由主、备数据源,数据源的HA以及连接池共同组成,可以将一个dataNode理解为一个分库。
   table:表,包括拆分表(如tb1,tb2)和非拆分表。
   tableRule:路由规则,用于判断SQL语句被路由到具体哪些datanode执行。
   schema:cobar可以定义包含拆分表的schema(如schema1),也可以定义无拆分表的schema(如schema2)。
   以上层次关系具有较强的灵活性,用户可以将表自由放置不同的datanode,也可将不同的datasource放置在同一MySQL实例上。

三、cobar配置实例:

1.实验场景描述及拓扑图:

  (1).系统对外提供的数据库名是dbtest,并且其中有两张表tb1和tb2。
  (2).tb1表的数据被映射到物理数据库dbtest1的tb1上。
  (3).tb2表的一部分数据被映射到物理数据库dbtest2的tb2上,另外一部分数据被映射到物理数据库dbtest3的tb2上。
如下图所示:

spacer.gif

215107729.jpg

2.环境准备:

(1).操作系统:linux[red hat linux 6]

(2).mysql:mysql 5.1以上版本[数据库也已经安装好,mysql 5.6.14]

(3).jdk:使用1.6以上版本[默认已经装好,如果不清楚,请看上一篇amoeba博文]

(4).cobar服务器:192.168.1.104:3306   用户名和密码:root/kongzhong

(5).数据库环境描述:

    dbtest1:192.168.1.102:3306/tb1

    dbtest2:192.168.1.102:3307/tb2

    dbtest3:192.168.1.100:3306/tb2

(6).建库脚本如下:[脚本执行就不演示了]

#创建dbtest1脚本 dropdatabaseif exists dbtest1; createdatabasedbtest1; use dbtest1; #在dbtest1上创建tb1 createtabletb1( id intnotnull, gmt datetime); #创建dbtest2 dropdatabaseif exists dbtest2; createdatabasedbtest2; use dbtest2; #在dbtest2上创建tb2 createtabletb2( id intnotnull, val varchar(256)); #创建dbtest3 dropdatabaseif exists dbtest3; createdatabasedbtest3; use dbtest3; #在dbtest3上创建tb2 createtabletb2( id intnotnull, val varchar(256));

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Explain the InnoDB Buffer Pool and its importance for performance.Explain the InnoDB Buffer Pool and its importance for performance.Apr 19, 2025 am 12:24 AM

InnoDBBufferPool reduces disk I/O by caching data and indexing pages, improving database performance. Its working principle includes: 1. Data reading: Read data from BufferPool; 2. Data writing: After modifying the data, write to BufferPool and refresh it to disk regularly; 3. Cache management: Use the LRU algorithm to manage cache pages; 4. Reading mechanism: Load adjacent data pages in advance. By sizing the BufferPool and using multiple instances, database performance can be optimized.

MySQL vs. Other Programming Languages: A ComparisonMySQL vs. Other Programming Languages: A ComparisonApr 19, 2025 am 12:22 AM

Compared with other programming languages, MySQL is mainly used to store and manage data, while other languages ​​such as Python, Java, and C are used for logical processing and application development. MySQL is known for its high performance, scalability and cross-platform support, suitable for data management needs, while other languages ​​have advantages in their respective fields such as data analytics, enterprise applications, and system programming.

Learning MySQL: A Step-by-Step Guide for New UsersLearning MySQL: A Step-by-Step Guide for New UsersApr 19, 2025 am 12:19 AM

MySQL is worth learning because it is a powerful open source database management system suitable for data storage, management and analysis. 1) MySQL is a relational database that uses SQL to operate data and is suitable for structured data management. 2) The SQL language is the key to interacting with MySQL and supports CRUD operations. 3) The working principle of MySQL includes client/server architecture, storage engine and query optimizer. 4) Basic usage includes creating databases and tables, and advanced usage involves joining tables using JOIN. 5) Common errors include syntax errors and permission issues, and debugging skills include checking syntax and using EXPLAIN commands. 6) Performance optimization involves the use of indexes, optimization of SQL statements and regular maintenance of databases.

MySQL: Essential Skills for Beginners to MasterMySQL: Essential Skills for Beginners to MasterApr 18, 2025 am 12:24 AM

MySQL is suitable for beginners to learn database skills. 1. Install MySQL server and client tools. 2. Understand basic SQL queries, such as SELECT. 3. Master data operations: create tables, insert, update, and delete data. 4. Learn advanced skills: subquery and window functions. 5. Debugging and optimization: Check syntax, use indexes, avoid SELECT*, and use LIMIT.

MySQL: Structured Data and Relational DatabasesMySQL: Structured Data and Relational DatabasesApr 18, 2025 am 12:22 AM

MySQL efficiently manages structured data through table structure and SQL query, and implements inter-table relationships through foreign keys. 1. Define the data format and type when creating a table. 2. Use foreign keys to establish relationships between tables. 3. Improve performance through indexing and query optimization. 4. Regularly backup and monitor databases to ensure data security and performance optimization.

MySQL: Key Features and Capabilities ExplainedMySQL: Key Features and Capabilities ExplainedApr 18, 2025 am 12:17 AM

MySQL is an open source relational database management system that is widely used in Web development. Its key features include: 1. Supports multiple storage engines, such as InnoDB and MyISAM, suitable for different scenarios; 2. Provides master-slave replication functions to facilitate load balancing and data backup; 3. Improve query efficiency through query optimization and index use.

The Purpose of SQL: Interacting with MySQL DatabasesThe Purpose of SQL: Interacting with MySQL DatabasesApr 18, 2025 am 12:12 AM

SQL is used to interact with MySQL database to realize data addition, deletion, modification, inspection and database design. 1) SQL performs data operations through SELECT, INSERT, UPDATE, DELETE statements; 2) Use CREATE, ALTER, DROP statements for database design and management; 3) Complex queries and data analysis are implemented through SQL to improve business decision-making efficiency.

MySQL for Beginners: Getting Started with Database ManagementMySQL for Beginners: Getting Started with Database ManagementApr 18, 2025 am 12:10 AM

The basic operations of MySQL include creating databases, tables, and using SQL to perform CRUD operations on data. 1. Create a database: CREATEDATABASEmy_first_db; 2. Create a table: CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY, titleVARCHAR(100)NOTNULL, authorVARCHAR(100)NOTNULL, published_yearINT); 3. Insert data: INSERTINTObooks(title, author, published_year)VA

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools