ホームページ データベース mysql チュートリアル 基于开源软件cobar配置分布式数据库

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

Jun 07, 2016 pm 05:37 PM
mysql

更多博文请关注:没有伞的孩子必须努力奔跑(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));

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQLの役割:Webアプリケーションのデータベース MySQLの役割:Webアプリケーションのデータベース Apr 17, 2025 am 12:23 AM

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

Laravelは紹介例 Laravelは紹介例 Apr 18, 2025 pm 12:45 PM

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

DockerによるMySQLを開始する方法 DockerによるMySQLを開始する方法 Apr 15, 2025 pm 12:09 PM

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

MySQLおよびPHPMYADMIN:コア機能と関数 MySQLおよびPHPMYADMIN:コア機能と関数 Apr 22, 2025 am 12:12 AM

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

データベース接続の解決問題:Minii/DBライブラリを使用する実用的なケース データベース接続の解決問題:Minii/DBライブラリを使用する実用的なケース Apr 18, 2025 am 07:09 AM

小さなアプリケーションを開発する際には、軽量データベース操作ライブラリをすばやく統合する必要性という厄介な問題に遭遇しました。複数のライブラリを試した後、私はそれらがあまりにも多くの機能を持っているか、あまり互換性がないかのどちらかであることがわかりました。最終的に、私は問題を完全に解決したYii2に基づいた単純化されたバージョンであるMinii/DBを見つけました。

MySQL対その他のプログラミング言語:比較 MySQL対その他のプログラミング言語:比較 Apr 19, 2025 am 12:22 AM

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

初心者向けのMySQL:データベース管理を開始します 初心者向けのMySQL:データベース管理を開始します Apr 18, 2025 am 12:10 AM

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

See all articles