Project

General

Profile

Actions

Übersetzung von Rev. 7

MySQL Konfiguration

Redmine, das MySQL 5.6, 5.7, 8.0 und 8.1 als Datenbank-Backend verwendet, hat bekannte Probleme bei gleichzeitigen Änderungen mit verschachtelten Datensätzen eines Tickets, d. h. durch parallele Änderung der "parent_id" verschiedener Tickets. Weitere Einzelheiten finden Sie unter #39437 und allen zugehörigen Berichten zu diesem Ticket.

Für Redmine ab der Version gilt: „5.1.1“ enthält wichtige Korrekturen zur Behebung dieses Problems (r22458, r22459 und r22460), aber diese Korrekturen erfordern auch die Änderung von transaction_isolation in READ COMMITTED, damit sie ordnungsgemäß funktionieren. Die standardmäßige MySQL-Transaktionsisolationsstufe ist REPEATABLE READ gemäß der „offiziellen Dokumentation“:https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.html. Für MySQL Version 5.7.20 oder älter lautet die Einstellung tx_isolation statt transaction_isolation.

Es gibt mindestens zwei Möglichkeiten, dies dauerhaft festzulegen:

1. Redmine-Datenbankkonfigurationsdatei ändern

Fügen Sie der database.yml-Konfigurationsdatei den Schlüssel variables mit transaction_isolation: „READ-COMMITTED“ darunter hinzu, wie folgt:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  [...]
  variables:
    transaction_isolation: "READ-COMMITTED" 

2. Ändern Sie transaction_isolation in der MySQL-Konfigurationsdatei auf dem Server

transaction_isolation="READ-COMMITTED" 
  • Der Pfad zu dieser Datei hängt vom Betriebssystem ab. In Ubuntu lautet er beispielsweise /etc/mysql/conf.d/mysql.cnf.
  • Das Ändern dieser Einstellung erfordert einen Serverneustart. Wenn Sie den Server nicht neu starten möchten, kann die Einstellung auch zur Laufzeit angewendet werden, indem Sie die folgende Abfrage ausführen: SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;, aber es ist wichtig, die Änderung auch in der Konfigurationsdatei vorzunehmen um die Einstellung nach einem Neustart beizubehalten.
  • Bei allen großen Cloud-Anbietern ist die Änderung dieser Einstellung über die Cloud-Verwaltungsseite möglich.

Wie bei jeder anderen Änderung an einem produktiven System wird dringend empfohlen, diese Änderung zu testen, bevor sie diese LIVE stellen. Bei einem fortgeschritteneren Setup mit Replikat kann diese Änderung auch das Binärprotokollformat Ihres Servers ändern, da mit der Isolationsstufe READ COMMITTED nur zeilenbasierte Binärprotokollierung unterstützt wird.

Updated by C S about 1 year ago · 1 revisions