Utilizzo della replica per ridimensionamento


8

Dopo aver letto Utilizzo della replica per ridimensionamento , come posso instradare query diverse a server diversi, ad esempio, SELECTvoglio instradare verso slave e NON-SELECTmaster. Presumo che come bilanciamento del carico posso usare haproxy , ma non ho trovato possibile distinguere tra query a livello di haproxy ? Inoltre, supponiamo che qualcuno abbia raggiunto direttamente il master, come può il master identificare che si tratta di una SELECTquery e di mostrare che è inviato allo slave o al bilanciamento del carico.

Risposte:


3

Esiste un progetto chiamato MySQL Proxy che sta tentando di gestire la suddivisione in lettura / scrittura nel livello proxy, ma non è pronto per la produzione. Puoi leggere di più sui problemi in questa pagina , prestando attenzione alla sezione dei problemi noti.

Per ora, come altri hanno notato, devi gestire il routing attraverso la tua applicazione.


Allo stesso modo (ma, credo, è pronto per la produzione): scalebase.com/solution/architecture
Nick Chammas,

2

È compito tuo web clientdeterminare se una transazione che sta per inviare al database è read-onlyo read-writee sceglierne il designato slaveo di masterconseguenza.


2

Non sono a conoscenza di alcun software proxy per farlo per te. haproxy è un proxy di livello HTTP, questo non avrà alcun impatto sul tuo database. Dovrai implementarlo come parte della logica aziendale della tua applicazione web.

Al centro del tuo livello di persistenza, dovresti essere in grado di intercettare queste chiamate e "instradarle" al database appropriato in base al tipo di transazione eseguita. Ad esempio, le SELECTquery potrebbero essere inviate ai server di sola lettura, ma le UPDATE/INSRET/DELETEquery verrebbero inviate al server principale.


haproxy è un bilanciamento del carico TCP e può essere utilizzato per altri protocolli, incluso MySQL, anche se potrebbe non essere la scelta migliore.
Aaron Brown,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.