Project

General

Profile

DeMySQL configuration » History » Version 1

C S, 2023-11-30 10:18
Translate based on original Rev. 7

1 1 C S
Übersetzung von "Rev. 7":https://www.redmine.org/projects/redmine/wiki/MySQL_configuration/7
2
3
h1. MySQL Konfiguration
4
5
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.
6
7
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@.
8
9
Es gibt mindestens zwei Möglichkeiten, dies dauerhaft festzulegen:
10
11
*1. Redmine-Datenbankkonfigurationsdatei ändern*
12
13
Fügen Sie der @database.yml@-Konfigurationsdatei den Schlüssel @variables@ mit @transaction_isolation: „READ-COMMITTED“@ darunter hinzu, wie folgt:
14
15
<pre><code class="yml">
16
production:
17
  adapter: mysql2
18
  database: redmine
19
  host: localhost
20
  [...]
21
  variables:
22
    transaction_isolation: "READ-COMMITTED"
23
</code></pre>
24
25
*2. Ändern Sie @transaction_isolation@ in der MySQL-Konfigurationsdatei auf dem Server*
26
27
<pre><code class="conf">
28
transaction_isolation="READ-COMMITTED"
29
</code></pre>
30
31
* Der Pfad zu dieser Datei hängt vom Betriebssystem ab. In Ubuntu lautet er beispielsweise @/etc/mysql/conf.d/mysql.cnf@.
32
* 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.
33
* Bei allen großen Cloud-Anbietern ist die Änderung dieser Einstellung über die Cloud-Verwaltungsseite möglich.
34
35
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.