2009-11-04 10 views
1

D'après ce que j'ai appris, un serveur MySQL MASTER est capable de lire et d'écrire. Correct?Nouvelle mise à l'échelle MySQL: comment avoir deux serveurs maître-écriture?

Ma question est la suivante: Supposons que vous ayez 2 serveurs d'écriture maître MySQL (et beaucoup de serveurs esclaves).

Comment pouvez-vous résoudre le problème de l'auto-incrément? Comment le synchronisez-vous? Supposons que vous écrivez à la fois Master1 et Master2 ... comment allez-vous le synchroniser pour que l'incrément automatique soit cohérent? Quelqu'un peut-il s'il vous plaît expliquer la solution à cela dans un sens simple.

+0

@alex - Ce n'est pas vraiment une question de programmation si –

Répondre

2

Vous définissez le serveur n ° 1 pour utiliser les valeurs d'incrémentation automatique impaire et le numéro de serveur n ° 2 pour utiliser les numéros pairs.

# server 1 
auto_increment_increment 2         
auto_increment_offset 1 

# server 2 
auto_increment_increment 2         
auto_increment_offset 2 

Il y a un linux how-to qui décrit le processus. Voir aussi MySQL docs on this.

+0

Mais que se passe-t-il si un serveur meurt? Alors ... le serveur laissé debout continuera à incrémenter impair? – TIMEX

+0

Oui, ce serait comment il est configuré. Vous auriez des lacunes. –

+0

Est-ce que les écarts sont corrects? – TIMEX

0

Les espaces devraient être corrects si votre système n'en a pas besoin. Dès que vous atteignez la limite de INT ou BIGINT, vous devriez être prêt avec une configuration d'entreposage de données afin de pouvoir décharger vos anciennes données et être prêt à revenir aux valeurs de décalage de base. Sur une application intensive en écriture, vous devrez être préparé et être en mesure de décharger les anciennes données dès que possible.