ドッキングウィンドウのデプロイシャーディングプロキシ

1.背景

     透過プロキシクライアントデータベースとして位置付け、プロキシをシャーディング、データベースパッケージは、異種言語のための完全なサポートのためのバイナリプロトコル・サーバのバージョンを提供します。DBAのためのより多くの友好のデータを、操作する:PostgreSQLは、現在、それは(PostgreSQLのコマンドクライアント、Navicatは、などなど)、互換性のPostgreSQLのクライアントアクセスプロトコルを使用することができ、最初のバージョンを提供しています。

  • それはPostgreSQLの使用として直接使用することができ、アプリケーションに対して完全に透過的です。
  • これは、クライアントの互換性のある任意のMySQL / PostgreSQLの契約に適用されます。

2、インストールドッキングウィンドウ、このステップは話すことは何もありません

3、プロキシミラーのシャーディング作ります

    最初の生産プロフィール:設定-sharding.yaml分割シートが使用され、テキストの終わり

SCHEMANAME:sharding_db 

データソース:
  DS0:
    URLます。jdbc:postgresqlの:// 127.0.0.1:5432/ds0 
    ユーザ名:Postgresの
    パスワード:123456 
    connectionTimeoutMilliseconds:30000 
    idleTimeoutMilliseconds:60000 
    maxLifetimeMilliseconds:1800000 
    maxPoolSize:65 
  DS1:
    URLます。jdbc:postgresqlの:// 127.0.0.1:5432/ds1 
    ユーザ名:postgresの
    パスワード:123456 
    connectionTimeoutMilliseconds:30000 
    idleTimeoutMilliseconds:60000 
    maxLifetimeMilliseconds:1800000 
    maxPoolSize:65 

shardingRule:
  表:
    t_order:
      actualDataNodes:DS $ { 0 .. 1 $ {.t_order} 0 .. 1 } 
      :databaseStrategy 
        インライン:
          shardingColumn:USER_ID 
          algorithmExpression:DS $ {USER_ID2 } 
      tableStrategy:
        インライン:
          shardingColumn :ORDER_ID 
          algorithmExpression:$ {ORDER_ID t_order2 } 
      :するKeyGenerator 
        タイプ:スノーフレーク
        カラム:ORDER_ID
    t_order_item:
      actualDataNodes:DS $ {  t_order、t_order_item0 .. 1 } .t_order_item $ { 0 .. 1 } 
      databaseStrategy:
        インライン:
          shardingColumn:USER_ID 
          algorithmExpression:DS $ {USER_ID2 } 
      tableStrategy:
        インライン:
          shardingColumn:ORDER_ID 
          algorithmExpression:t_order_item $ {ORDER_ID2 } 
      するKeyGenerator:
        タイプ:スノーフレーク
        カラム:order_item_id 
  bindingTables:
     - 
  defaultTableStrategy:
    なし:
    
  encryptRule: 
    暗号:
      encryptor_aes:
        タイプ:AES 
        小道具:
          aes.key.value:123456abc 
    テーブル:
      t_order:
        カラム:
          ORDER_ID:
            plainColumn:order_plain 
            cipherColumn:order_cipher 
            暗号化:encryptor_aes

 

SCHEMANAME、データソース、shardingRule:上記の設定ファイルには、3つに分割されています

SCHEMANAMEは、プロキシデータベース名をシャーディング定義されました。

データソース定義データソースは、各データソースを複数添加することができます。

shardingRuleは、断片化のルールを定義しました。

ライブラリDS0とDS1、二つのテーブルt_order各ライブラリーフラグメントおよびt_order_itemための論理テーブルをスライスすることにより、例えば、表の断片化規則は、各バンクは、4つの真理値表を有するように、ORDER_ID%2であります事前とテーブルに建てられたPostgresのライブラリ:t_order_0、t_order_1、t_order_item_0、t_order_item_1、ライブラリ断片化ルールのuser_id%2。

 

生産server.yamlファイル、変更ファイルは、一般的な構成は、シャーディングpeoxyのログイン情報の一部は、あります

認証:
  ユーザー:
    ルート:
      パスワード:ルート
    シャーディング:
      パスワード:シャーディング
      authorizedSchemas:sharding_dbの
小道具:
  max.connections.size.per.query:1 
  acceptor.size:16  
  executor.size:16  
  proxy.transaction.enabled:
  proxy.opentracing .enabled:
  sql.showを:

 

書き込みdockerfile

sharding- FROM プロキシ

設定ADD -sharding.yamlは/ opt /シャーディングプロキシ/ confに/ CONFIG- sharding.yaml 
ADD server.yaml   /opt/sharding-proxy/conf/server.yaml

 

ミラーリング

シャーディングプロキシ-tドッキングウィンドウのビルド:V1。

 

4、PostgreSQLのミラーを作成し、データベースを初期化します

上記の設定ファイルの設定-sharding.yamlから、ビルド2にpgsqlの必要性ライブラリDS0、DS1、および各ライブラリは4つの実際のテーブルを持っている、あなたはpostgresのビルドされたライブラリやテーブルに進出する必要があります:t_order_0、t_order_1、t_order_item_0、t_order_item_1

データベースを初期化するシェルスクリプトを書きます

#!/ binに/ bashの

DBNAME = DS0 
 
#SQLデータベースが存在する与えられたかどうかを確認する
SQL1 = " datname = '$ DBNAME' pg_catalog.pg_databaseから選択数(1)" 
 
PATHがセットにpsqlであるかに応じて、#は完全修飾を必要とするかもしれませんパス
CMD = " psqlの-t -c \" $ SQL1 \」" 
 
db_exists = ` evalの$ cmd` 
 
場合は [$ db_exists -eq 0 ]; その後、
psqlの -v ON_ERROR_STOP = 1 --username " $ POSTGRES_USER " --dbname " $ POSTGRES_DB "EOSQL 
    DATABASEのDS0を作成します。
    データベースDS1を作成します。
    \ C DS0。
      表t_order_0 CREATE(ORDER_ID INT NOT NULLを、INT NOT NULL、ステータスCHAR(USER_ID 10 )); 
      表t_order_1 CREATE(ORDER_ID INT NOT NULLを、INT NOT NULL、ステータスCHAR(USER_ID 10 )); 
      表t_order_item_0 CREATE(ORDER_ID INT NOT NULLを、INT NOT NULL、ステータスCHAR(USER_ID 10 )); 
      表t_order_item_1 CREATE(ORDER_ID INT NOT NULLを、INT NOT NULL、ステータスCHAR(USER_ID 10 ));   
      \ C DS1。
      表t_order_0 CREATE(ORDER_ID INT NOT NULLを、INT NOT NULL、ステータスCHAR(USER_ID 10 ));
      表t_order_1 CREATE(ORDER_ID INT NOT NULLを、INT NOT NULL、ステータスCHAR(USER_ID 10 )); 
      表t_order_item_0 CREATE(ORDER_ID INT NOT NULLを、INT NOT NULL、ステータスCHAR(USER_ID 10 )); 
      表t_order_item_1 CREATE(ORDER_ID INT NOT NULLを、INT NOT NULL、ステータスCHAR(USER_ID 10 ));    
EOSQLの
Fiの

 

書き込みdockerfile

FROM 10.111.71 /オンラインショップ/ postgresの:9.4  

ADDのinit -user-DB。SHの /docker-entrypoint-initdb.d/init-user-db。SH

 

ミラーリング

ドッキングウィンドウのビルド-t postfres:9.41

 

 

5、ブートイメージ

-ドッキングウィンドウの実行IDは = -e POSTGRES_PASSWORD -d 123456 -p 54325432件   のpostgres:9.42
ドッキングウィンドウの実行-it -d -p 33073307 -v /root/sharding-proxy/config-sharding.yaml:/opt/sharding-proxy/conf/config-sharding.yamlシャーディングプロキシ:V1

 

図6に示すように、接続試験

pgsqlの接続とデフォルトのライブラリテーブルを表示が作成されます

 

 pgsqlのCLIは可能であってもで、なぜ、接続シャーディングプロキシは、nacicat一時的にROMが分かりません

  

psqlの-U sharding_db -hはpostgres -p 3307

 

挿入テストデータ

 

 

ビューログデータ内のどのテーブル特定のデータベースに挿入されているプロキシコンテナをシャーディング

 

 

それぞれ、DS0 DS1を見るために、データを確認します

 

 

 

シャーディングプロキシ内への直接アクセス

 

おすすめ

転載: www.cnblogs.com/zphqq/p/12504859.html