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_ID%2 } tableStrategy: インライン: shardingColumn :ORDER_ID algorithmExpression:$ {ORDER_ID t_order%2 } :する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_ID%2 } tableStrategy: インライン: shardingColumn:ORDER_ID algorithmExpression:t_order_item $ {ORDER_ID%2 } する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.1。11.71 /オンラインショップ/ postgresの:9.4 ADDのinit -user-DB。SHの /docker-entrypoint-initdb.d/init-user-db。SH
ミラーリング
ドッキングウィンドウのビルド-t postfres:9.4。1
5、ブートイメージ
-ドッキングウィンドウの実行IDは = -e POSTGRES_PASSWORD -d 123456 -p 5432:5432件 のpostgres:9.4。2
ドッキングウィンドウの実行-it -d -p 3307:3307 -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を見るために、データを確認します
シャーディングプロキシ内への直接アクセス