docker Déployez sharding-proxy

1. Contexte

     Sharding-proxy positionné en tant que base de données client proxy transparent, paquet de base de données fournit une version binaire serveur de protocole pour un support complet pour les langues hétérogènes. PostgreSQL offre actuellement la première version, il peut utiliser des protocoles d'accès client PostgreSQL compatibles (tels que: PostgreSQL commande client, Navicat, etc.), les données d'exploitation plus convivial pour le DBA.

  • Est complètement transparent pour l'application, il peut être utilisé directement comme l'utilisation de PostgreSQL.
  • Il applique à tout accord MySQL / PostgreSQL compatible du client.

2, l'installation docker, cette étape est rien à proprement parler

3, ce qui rend sharding proxy Miroir

    Premier profil de production: feuilles divisées config-sharding.yaml utilisés, la fin du texte

schemaName: sharding_db 

DataSources: 
  Ds0: 
    url: jdbc: postgresql: // 127.0.0.1:5432/ds0 
    Nom d' utilisateur: Postgres 
    Mot de passe: 123456 
    connectionTimeoutMilliseconds: 30000 
    idleTimeoutMilliseconds: 60000 
    maxLifetimeMilliseconds: 1800000 
    MaxPoolSize: 65 
  DS1: 
    url: jdbc: postgresql: // 127.0.0.1:5432/ds1 
    Nom d' utilisateur: postgres 
    Mot de passe: 123456 
    connectionTimeoutMilliseconds: 30000 
    idleTimeoutMilliseconds: 60000 
    maxLifetimeMilliseconds:1800000 
    MaxPoolSize: 65 

shardingRule: 
  tables: 
    t_order: 
      actualDataNodes: ds $ { 0 .. 1 } .t_order $ { 0 .. 1 } 
      databaseStrategy: en 
        ligne: 
          shardingColumn: user_id 
          algorithmExpression: ds $ {user_id % 2 } 
      tableStrategy: en 
        ligne: 
          shardingColumn : order_id 
          algorithmExpression: t_order $ {order_id % 2 } 
      KeyGenerator: 
        Type: Snowflake  
        colonne: order_id
    t_order_item:
      actualDataNodes: ds $ { 0 .. 1 } .t_order_item $ { 0 .. 1 } 
      databaseStrategy: en 
        ligne: 
          shardingColumn: user_id 
          algorithmExpression: ds $ {user_id % 2 } 
      tableStrategy: en 
        ligne: 
          shardingColumn: order_id 
          algorithmExpression: t_order_item $ {order_id % 2 } 
      KeyGenerator: 
        Type: Snowflake 
        colonne: order_item_id 
  bindingTables:
     -  t_order, t_order_item
  defaultTableStrategy: 
    none: 
    
  encryptRule:
    chiffreurs: 
      encryptor_aes: 
        Type: aes 
        accessoires: 
          aes.key.value: 123456ABC 
    tables: 
      t_order: 
        colonnes: 
          order_id: 
            plainColumn: order_plain 
            cipherColumn: order_cipher 
            chiffreur: encryptor_aes

 

Le fichier de configuration ci-dessus est divisé en trois: schemaName, sources de données, shardingRule

schemaName défini sharding nom de base de données proxy;

DataSource source de données de définition peut être ajoutée une pluralité de, chaque source de données;

shardingRule défini fragmentation des règles.

Par l'exemple qui doit être coupé en tranches bibliothèque Ds0 et DS1, une table logique pour chaque fragment bibliothèque et t_order_item t_order deux tables, règles de fragmentation Tableau sont order_id% 2, de sorte que chaque banque a quatre table de vérité, bibliothèque postgres construite à l'avance et tables: t_order_0, t_order_1, t_order_item_0, t_order_item_1, règle de la fragmentation des bibliothèques user_id% 2.

 

La production de fichiers server.yaml, fichier de changement est une configuration commune, certaines des informations de connexion de sharding peoxy

authentification: les 
  utilisateurs: 
    root: 
      Mot de passe: root 
    sharding: 
      Mot de passe: sharding 
      authorizedSchemas: sharding_db 
props: 
  max.connections.size.per.query: 1 
  acceptor.size: 16  
  executor.size: 16  
  proxy.transaction.enabled: faux 
  proxy.opentracing .Enabled: faux 
  sql.show: vrai

 

Ecrire dockerfile

DE sharding- proxy 

ADD config -sharding.yaml / opt / sharding-proxy / conf / config- sharding.yaml 
ADD server.yaml   /opt/sharding-proxy/conf/server.yaml

 

Mirrored

build docker -t sharding-proxy: v1.

 

4, ce qui rend miroir postgresql, et initialiser la base de données

De la config-sharding.yaml fichier de configuration ci-dessus, le besoin pgsql construire deux bibliothèques Ds0 DS1, et chaque bibliothèque a quatre vraie table, vous avez besoin d'avance dans les bibliothèques et les tables Postgres construites: t_order_0, t_order_1, t_order_item_0, t_order_item_1

L'écriture des scripts shell pour initialiser la base de données

#! / bin / bash 

dbname = Ds0 
 
# sql pour vérifier l'existence éventuelle de la base de données donnée 
sql1 = " select count (1) à partir pg_catalog.pg_database où datname = 'dbname $' " 
 
n selon la façon dont PATH est psql ensemble peut nécessiter un qualifié chemin 
cmd = " psql -t -c \" $ sql1 \ » " 
 
db_exists = `eval $ cmd` 
 
si [$ db_exists -eq 0 ]; puis 
psql -v ON_ERROR_STOP = 1 --username " $ POSTGRES_USER " --dbname " $ POSTGRES_DB "EOSQL 
    CREATE DATABASE Ds0; 
    CREATE DATABASE DS1; 
    \ c DS0; 
      CREATE TABLE t_order_0 (order_id INT NOT NULL, NULL user_id INT NOT, état CHAR ( 10 )); 
      CREATE TABLE t_order_1 (order_id INT NOT NULL, NULL user_id INT NOT, état CHAR ( 10 )); 
      CREATE TABLE t_order_item_0 (order_id INT NOT NULL, NULL user_id INT NOT, état CHAR ( 10 )); 
      CREATE TABLE t_order_item_1 (order_id INT NOT NULL, NULL user_id INT NOT, état CHAR ( 10 ));   
      \ c ds1; 
      CREATE TABLE t_order_0 (order_id INT NOT NULL, NULL user_id INT NOT, état CHAR ( 10 ));
      CREATE TABLE t_order_1 (order_id INT NOT NULL, NULL user_id INT NOT, état CHAR ( 10 )); 
      CREATE TABLE t_order_item_0 (order_id INT NOT NULL, NULL user_id INT NOT, état CHAR ( 10 )); 
      CREATE TABLE t_order_item_1 (order_id INT NOT NULL, NULL user_id INT NOT, état CHAR ( 10 ));    
EOSQL 
fi

 

Ecrire dockerfile

DE 10.1 . 11.71 / boutique en ligne / postgres: 9.4  

ADD init de -user-db. sh /docker-entrypoint-initdb.d/init-user-db. sh

 

Mirrored

construction docker -t postfres: 9.4 . 1

 

 

5, image de démarrage

docker run - id -d -e POSTGRES_PASSWORD = 123456 -p 5432 : 5432   postgres: 9.4 . 2
docker run -it -d -p 3307 : 3307 -v /root/sharding-proxy/config-sharding.yaml:/opt/sharding-proxy/conf/config-sharding.yaml sharding-proxy: v1

 

6, test de connexion

connexion Pgsql et afficher la table de bibliothèque par défaut est créé

 

 Connexion proxy sharding, Rom nacicat temporairement ne sais pas pourquoi, même avec pgsql cli est possible

  

psql -U sharding_db -h postgres -p 3307

 

Insérer des données de test

 

 

En vue des données de journal sharding conteneur proxy qui est inséré dans une base de données spécifique tableau

 

 

Respectivement, pour vérifier les données pour voir Ds0 DS1

 

 

 

Accès direct au proxy sharding dans

 

Je suppose que tu aimes

Origine www.cnblogs.com/zphqq/p/12504859.html
conseillé
Classement