Domanda

Abbiamo un cliente che ha bisogno di creare banche dati locali N, ognuno contenente i dati di un sito, e poi hanno un database aziendale master contenente l'unione di tutti i database N. Le variazioni di un singolo database del sito devono essere propagate al database master, e le modifiche nel database master devono essere propagate al database del sito individuale appropriata.

Stiamo usando la replica di MySQL per un cliente che ha bisogno di due database che sono tenuti simultaneamente fino ad oggi. Questa è una replica bidirezionale. Se abbiamo provato esattamente lo stesso approccio qui vorremmo finire con tutti i database locali N equivalente al database master, e che non è quello che vogliamo. Non solo dovrebbe ogni singolo sito non essere in grado di vedere i dati dagli altri siti, l'invio dei dati che i tempi di N dal master invece che solo una volta è probabilmente uno spreco enorme.

Quali sono le opzioni per la realizzazione di questo nuovo modello di stella con MySQL? So che possiamo replicare solo alcuni tavoli, ma c'è un modo per filtrare la replica da record?

Ci sono strumenti che aiutano o RDBMS concorrenti che sarebbe meglio guardare?

È stato utile?

Soluzione

Potrebbe valere la pena dare un'occhiata a mysql-tavolo-sync da Maatkit , che permette di sincronizzare le tabelle con una opzionale -. dove clausola

Altri suggerimenti

SymmetricDS avrebbe funzionato per questo. E 'web-enabled, indipendente dal database, sincronizzazione dei dati / software di replica. Esso utilizza tecnologie Web e database di replicare le tabelle tra database relazionali in tempo quasi reale. Il software è stato progettato per essere scalabile per un gran numero di banche dati, funzionare su connessioni a bassa larghezza di banda, e sopportare periodi di interruzione di rete.

Lo abbiamo usato per sincronizzare i database 1000 negozi al dettaglio di MySQL in un database aziendale Oracle.

L'ho già fatto prima, e per quanto ne so questo è il modo più semplice. Si dovrebbe guardare per l'utilizzo di Microsoft SQL Server replica di tipo merge, e l'utilizzo di filtraggio Row. Il tuo filtraggio fila sarebbe stato impostato per avere una colonna che indica quale destinazione singolo sito dovrebbe andare.

Per esempio, le tabelle potrebbe essere simile a questo:

id_colonna | column2 | destinazione

I dati nella colonna potrebbe essere simile a questo: 12345 | 'Dati' | 'Sito1'

Si potrebbe quindi impostare la stampa di replica "abbonato" sito1 per filtrare sulla colonna 'destinazione' e il valore 'sito1'.

In questo articolo vi aiuterà probabilmente:

Filtraggio pubblicato i dati per la replica di tipo merge C'è anche un articolo su MSDN chiamato "Enhancing merge delle prestazioni della replica" che può aiutare -. E anche hai bisogno di imparare le basi della creazione di editori e gli abbonati in replica di unione SQL Server

In bocca al lupo!

Se avete bisogno di replica unidirezionale, quindi utilizzare più copie di database replicati nel centro della stella e personalizzato "ponte" applicazione per spostare i dati in seguito a quello finale

Basta un puntatore a caso: Oracle Lite supporta questo. Ho valutato una volta per un compito simile, tuttavia ha bisogno di qualcosa installato su tutti i client che non era un'opzione. Una panoramica dell'architettura di massima può essere trovato qui

Risposta breve no, si dovrebbe ridisegnare.

Risposta lunga sì, ma è abbastanza pazzo e sarà un vero e proprio dolore per l'installazione e la gestione.

Un modo potrebbe essere quello di RoundRobin di replica del database principale tra i siti. Utilizzare uno script di replicare per dire 30 secondi da un record sito fino a che punto è arrivato e poi andare sul sito successivo. Si potrebbe desiderare di guardare replicate-do-db e amici per limitare ciò che viene replicato.

Un'altra opzione che io sono sicuro avrebbe funzionato è quello di avere N mysqls nella sede principale che replica da ciascuna delle sedi del sito, e quindi utilizzare il federata motore di storage per fornire una visione comune dal database principale per gli schiavi per sito. Gli schiavi del sito in grado di replicare dal database principale e raccogliere qualunque cambiamenti di cui hanno bisogno.

Suona come avete bisogno di qualche assistenza specialistica -. E non sono probabilmente

Come 'in tempo reale' fa questo replica bisogno di essere? Una sorta di processo ETL (o processi) è forse un'opzione. usiamo MS SSIS e Oracle in-house; SSIS sembra essere abbastanza buona per il lavoro di tipo ETL (ma io non lavoro su quello specifico volto di carbone, quindi non posso davvero dire).

Come volatili sono i dati? Diresti i dati è per lo più operativo / transazionale? Che tipo di volumi di dati stai parlando?

è il maestro centrale, utilizzato anche come un DB locale per l'ufficio in cui si trova? se è si potrebbe desiderare di cambiare la situazione - ha testa lavoro d'ufficio, proprio come un ufficio remoto - in questo modo è possibile trattare tutti gli uffici dello stesso; spesso si esegue in problemi / anomalie se i siti differenti sono trattati in modo diverso.

suona come si sarebbe meglio servita da un passo al di fuori di una struttura di database diretta per questo.

Non ho una risposta dettagliata per voi, ma questo è l'alto livello di quello che vorrei fare:

vorrei scegliere da ogni database un elenco di modifiche nel corso del passato (ragionevole lasso di tempo), costruire l'inserto e cancellare le dichiarazioni che avrebbero unificare tutti i dati sul database 'grande', e quindi separare più piccole serie del inserimento e dELETE per ciascuna delle banche dati specifiche.

Vorrei quindi eseguire questi.

C'è un potenziale di problemi di 'unione' con questa configurazione se non v'è alcuna sovrapposizione con i dati che entrano ed escono.

C'è anche la questione di dati che vengono persi o duplicati in quanto il lasso di tempo non sono stati costruiti in maniera adeguata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top