2016-03-22 7 views
0

Ich habe ein Konto in Amazon. Meine primäre MySql ist eine große Instanz. und ich habe andere 2 kleine Instanzen als Replikationsserver. Die Hierarchie ist Primary -> Slave 1-> Slave 2. Das Problem ist, dass Slave 1 und Slave 2 manchmal hohe CPU-Auslastung zeigen. Wir konnten den genauen Grund nicht herausfinden. Slave 1 fungiert als Slave der Primary und gleichzeitig fungiert er als Master of Slave 2. Wir haben viel gesucht, sind aber immer noch blind. Vielen Dank im Voraus für alle Hilfen.Mysql Replica Server CPU-Auslastung wurde hoch in EC2

+1

mysql Replikationsmethode wird die CRUD innerhalb Slave-Server erneut ausgeführt. Es handelt sich nicht um eine direkte Datensynchronisierung. Stellen Sie sich vor, Sie haben eine hohe CRUD-Aktivität im Master-Server. – mootmoot

+0

Danke mein Freund, ich habe noch einen Zweifel, werden die Leseoperationen im Slave-Server erneut ausgeführt ?. –

Antwort

1

Wenn Sie die native asynchrone MySQL-Replikation verwenden (was RDS verwendet), müssen die Replikatserver in der Regel so groß sein wie der Master oder manchmal größer. Die Replikate erhalten "Replikationsereignisse" vom Master, die möglicherweise die tatsächlichen Abfragen enthalten, die Daten geändert haben - Einfügen, Aktualisieren, Löschen, aber nicht auswählen - dies ist "Anweisungsbasierte Replikation" - oder können Binärbilder der hinzugefügten Zeilen empfangen entfernt oder Änderungen auf dem Master - das ist "zeilenbasierte Replikation." Standardmäßig entscheidet der Master-Server Abfrage für Abfrage, welches Format zum Senden der Replikationsereignisse verwendet wird ("gemischt").

In allen Fällen SELECT Aussagen sind nicht auf die Replikate gesendet (außer natürlich für INSERT ... SELECT), aber sie tun, um gehandhabt ausreichende Kapazitäten müssen sowohl die eingehenden Änderungen vom Master sowie die SELECT Abfragen, die direkt gegen ausgeführt werden das Replikat von Ihrer Anwendung. In RDS für MySQL 5.6 und höher können Sie binlog_format auf ROW setzen, um den Master zu zwingen, immer zeilenbasierte Replikation zu verwenden. Dies kann Ihre Leistung verbessern und ist möglicherweise nicht abhängig von der Auslastung. Sie können RDS nicht zwingen, nur den "Anweisungsmodus" zu verwenden, noch sollten Sie dies möchten.

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html

Im Allgemeinen jedoch jedes Mal, wenn die Replik eine Maschine mit weniger Ressourcen als der Master ist, bleibt die Möglichkeit der Replikation erhöht. Die Verzögerung der Replikate kann in Cloudwatch überwacht werden.

+0

Danke Michael. Ich hoffe, dass unser Problem darin besteht, dass unsere Sklaven weniger konfiguriert sind als der Meister. Ich habe auch einen Zweifel. Wie können wir feststellen, dass unser Slave eine statementbasierte Replikation oder eine zeilenbasierte Replikation ist? –

Verwandte Themen