Ü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