Ist es jemals sicher, innodb_flush_log_at_trx_commit=0 zu setzen?

Ist es jemals sicher, innodb_flush_log_at_trx_commit=0 zu setzen?

Ich habe einen Server (Dell PE2950) mit einem batteriegestützten Schreibcache auf dem RAID-Controller.

Ist es für mich sicher, innodb_flush_log_at_trx_commit=0 auf einem MySQL-Server festzulegen, dessen Datendateien auf einem RAID0-Volume gespeichert sind?

Würde die Antwort anders ausfallen, wenn es sich bei dem Volume um RAID 1/5/10 handeln würde?

Danke!

Antwort1

Wenn Sie Angst vor Datenverlust haben, ist dies nicht sicher. Laut Handbuch kann eine Transaktion bereits festgeschrieben, aber noch nicht auf die Festplatte geschrieben worden sein, sondern sich nur im Speicher befinden. Dies bedeutet, dass ein MySQL-Absturz, ein Betriebssystemabsturz oder ein Stromausfall zum Verlust von Transaktionen führen kann.

In manchen Systemen kann der Verlust von Transaktionen in Ordnung sein, solange eine Transaktion entweder vollständig verloren geht oder vollständig erhalten bleibt. In diesem Fall können Sie diese Einstellung deaktivieren.

Die Bedeutung des batteriegestützten RAID-Controllers liegt im sicheren Schreibcache auf dem Controller. Wenn der Controller Schreibvorgänge zwischenspeichern würde, aber ohne Batterie die Stromversorgung verlieren würde, wären die Daten im Schreibcache verloren. MySQL würde jedoch bereits davon ausgehen, dass diese sicher auf der Festplatte gespeichert sind. Die Batterie ermöglicht also die sichere Verwendung des Schreibcaches im RAID-Controller. Normalerweise verfügt der Controller über eine Einstellung, mit der der Schreibcache automatisch deaktiviert wird, wenn der Batteriestand zu niedrig ist.

Der RAID-Level ist nicht direkt relevant. Wenn die Daten auf der Festplatte sind, sind sie auf der Festplatte. Sollte die Stromversorgung ausfallen, ist alles sicher. RAID-Level sind jedoch wichtig, wenn eine Festplatte ausfällt – eine völlig andere Art des Versagens. Bei RAID0 kommt es offensichtlich zu einem sofortigen Verlust aller Daten. Bei RAID5 können Sie mit einem großen Leistungsverlust weitermachen. Bei RAID1/10 können Sie mit einem sehr geringen Leistungsverlust weitermachen.

Aber verwechseln Sie RAID nicht mit einem Backup. Es gibt Dutzende von Ausfallarten für einen Datenbankserver und RAID bewältigt nur eine davon: Festplattenausfall. Ihr Dateisystem könnte abstürzen, Sie könnten versehentlich Daten löschen, Ihre Datendateien könnten aufgrund eines obskuren MySQL-Fehlers kaputt gehen. Vergessen Sie also nicht, Backups wichtiger Daten mit zu erstellen mysqldump. Kopieren Sie die Datendateien niemals, es sei denn, MySQL wird gestoppt, da sie inkonsistent sein könnten.

Antwort2

Aus Sicherheitsgründen und für hohe Leistung sollten Sie innodb_flush_log_at_trx_commit=1 und RAID 10 haben.

Prost

verwandte Informationen