Replication - Delete Verhindern

Replication - Delete Verhindern

am 27.06.2006 10:27:41 von ng.w.purrer

Folgendes Problem

Ich habe zwei Rechner mit Mysql 5.*
In einer Tabelle werden Zeitreihen gespeichert

Eine Tabelle ist der Master und der 2 ist der Slave. (Der Slave ist
nicht immer vorhanden, soll aber das Archiv darstellen)

Auf dem Master werden die Daten gesammelt und in die Master - Datenbank
geschrieben.

Ich möchte aber auf dem Master nur die letzten 2 Wochen der Daten
drauf lassen und der Slave soll die Daten länger haben.

=3D> delete - Statements die auf dem Master Server ausgeführt werden
sollen auf dem Slave nicht ausgeführt werden (inserts und updates
schon)

Geht dies?

Re: Replication - Delete Verhindern

am 27.06.2006 10:59:22 von Christian Kirsch

ng.w.purrer@lenzing.com schrieb:
> Folgendes Problem
>
> Ich habe zwei Rechner mit Mysql 5.*
> In einer Tabelle werden Zeitreihen gespeichert
>
> Eine Tabelle ist der Master und der 2 ist der Slave. (Der Slave ist
> nicht immer vorhanden, soll aber das Archiv darstellen)
>
> Auf dem Master werden die Daten gesammelt und in die Master - Datenbank
> geschrieben.
>
> Ich möchte aber auf dem Master nur die letzten 2 Wochen der Daten
> drauf lassen und der Slave soll die Daten länger haben.
>
> => delete - Statements die auf dem Master Server ausgeführt werden
> sollen auf dem Slave nicht ausgeführt werden (inserts und updates
> schon)
>
> Geht dies?
>

Vielleicht möchtest Du lieber partitionierte Tabellen benutzen? Ob es
die in 5.* schon gibt, verrät Dir die Dokumentation zu MySQL.
Eine "ich möchte aber nur ein bisschen replizieren"-Replikation gibt
es m.W. nicht. Du suchst ja auch eher sowas wie ein Archiv (hint).

--
Christian Kirsch
Heise Zeitschriften Verlag * iX-Magazin
Tel +49-511-5352-590 Fax +49-30-78702289
KEINE ANNAHME VON DOC-DATEIEN * NO DOC FILES, PLEASE

Re: Replication - Delete Verhindern

am 27.06.2006 11:57:14 von Axel Schwenke

ng.w.purrer@lenzing.com wrote:

> Ich habe zwei Rechner mit Mysql 5.*
> Auf dem Master werden die Daten gesammelt und in die Master - Datenbank
> geschrieben.
> Ich möchte aber auf dem Master nur die letzten 2 Wochen der Daten
> drauf lassen und der Slave soll die Daten länger haben.
>
> => delete - Statements die auf dem Master Server ausgeführt werden
> sollen auf dem Slave nicht ausgeführt werden
>
> Geht dies?

Das einfachste wäre wohl, die DELETEs einfach nicht zu loggen:

mysql> SET SQL_LOG_BIN=0;
mysql> DELETE ...
mysql> SET SQL_LOG_BIN=1;

http://dev.mysql.com/doc/refman/5.0/en/set-sql-log-bin.html


XL

Re: Replication - Delete Verhindern

am 27.06.2006 16:30:14 von Dirk Brosowski

ng.w.purrer@lenzing.com schrieb:
> Folgendes Problem
>
> Ich habe zwei Rechner mit Mysql 5.*
> In einer Tabelle werden Zeitreihen gespeichert
>
> Eine Tabelle ist der Master und der 2 ist der Slave. (Der Slave ist
> nicht immer vorhanden, soll aber das Archiv darstellen)
>
> Auf dem Master werden die Daten gesammelt und in die Master - Datenbank
> geschrieben.
>
> Ich möchte aber auf dem Master nur die letzten 2 Wochen der Daten
> drauf lassen und der Slave soll die Daten länger haben.
>
> => delete - Statements die auf dem Master Server ausgeführt werden
> sollen auf dem Slave nicht ausgeführt werden (inserts und updates
> schon)
>
> Geht dies?
>


Ich würde von der Tabelle regelmäßige mysqldumps machen (z.B. täglich
für die Datensätze welche seit dem letzten Dump verändert wurden) und
dann die INSERTS durch REPLACE ersetzen und in deine Backup-Datenbank
einspielen. So habe ich das bisher gemacht und läuft wunderbar. Im
Normalfall wirst du dazu ein Feld last_change als TIMESTAMP zusätzlich
definieren und dieses zeigt dir dann welche Datensätze verändert wurden.
Das ganze ist ein relativ geringer Aufwand.

Grüße

Dirk