sql >> Database teknologi >  >> RDS >> Mysql

Indstilling af MySQL-konfigurationsvariabler – MySQL 5.7 vs MySQL 8.0

MySQL-konfigurationsvariabler er et sæt serversystemvariabler, der bruges til at konfigurere serverens drift og adfærd. I dette blogindlæg vil vi forklare forskellene i styring af konfigurationsvariablerne mellem MySQL 5.7 og MySQL 8.0.

Vi vil forklare tre forskellige måder til indstilling af konfigurationsvariabler baseret på din use-case. Konfigurationsvariabler, der kan indstilles under kørsel, kaldes dynamiske variabler, og dem, der skal genstarte MySQL-serveren for at træde i kraft, kaldes ikke-dynamiske variabler.

1:Indstil konfigurationen for den aktuelle levetid for en kørende MySQL-server

De fleste af MySQL-konfigurationerne er dynamiske og kan indstilles under kørsel ved hjælp af SET-kommandoen. Det betyder, at ændringerne ikke er vedvarende og vil gå tabt, hvis MySQL-serveren genstarter. Dette er nyttigt for at teste adfærden af ​​din konfigurationsændring, før du gør den permanent.

For både MySQL 5.7 og 8.0 kan du opnå dette ved at bruge kommandoen SET GLOBAL

Eksempel:

mysql> set global max_connect_errors=10000;

2:Indstil og bevar konfigurationsændringen på tværs af MySQL-genstarter

Når du er tilfreds med indstillingerne for konfigurationsændringer, vil du gerne gøre den permanent.

I MySQL 5.7 skal du gøre dette i 2 trin:

  1. Indstil køretidskonfigurationsindstillingen ved hjælp af kommandoen SET GLOBAL
mysql> set global max_connect_errors=10000;
  1. Gem denne ændring i din my.cnf-fil ved at opdatere den eksisterende post for max_connect_errors eller ved at tilføje en ny.

Dette er blevet meget nemmere i MySQL 8.0. Du kan gøre dette i et enkelt trin ved at bruge kommandoen SET PERSIST

mysql> set persist max_connect_errors=10000;
Sådan indstilles konfigurationsvariabler - MySQL 5.7 vs MySQL 8.0Klik for at tweete

Dette vil indstille køretidsværdien for konfigurationen og også fortsætte ændringen ved at gemme den i filen mysqld-auto.cnf, der findes i databiblioteket. Dette er en json-fil, og du vil nu se følgende indgange i filen.

{

"Version": 1,

"mysql_server": {

"max_connect_errors": {

"Value": "10000",

"Metadata": {

"Timestamp": 1581135119397374,

"User": "sgroot",

"Host": "localhost"

}

}

}

}

Bemærk: Konfigurationsindstillingerne i mysqld-auto.cnf tilsidesætter altid værdierne i my.cnf-filen. Så eventuelle yderligere ændringer, du foretager i my.cnf-filen for variablen "max_connect_errors", træder ikke i kraft. Dette kan være forvirrende for dem, der skifter fra MySQL 5.7, da de kan være vant til at gemme alle deres indstillinger i my.cnf

3:Indstilling af konfigurationsvariabler, der ikke er dynamiske

Nogle af konfigurationsvariablerne kan ikke indstilles under kørsel og vil kræve en MySQL-genstart for at træde i kraft.

I MySQL 5.7 skal du lave en indtastning for disse variabler i din my.cnf-fil og genstarte MySQL-serveren for at den træder i kraft. Eksempel på en sådan variabel er innodb_log_file_size.

I MySQL 8.0 kan du køre en kommando kaldet SET PERSIST ONLY, som vil lave en indtastning i mysqld-auto.cnf.

Eksempel:

mysql> set persist_only innodb_log_file_size=134217728;

Det er også muligt at genstarte MySQL-serveren fra kommandolinjen ved at bruge RESTART-kommandoen. Dette vil få den ændrede værdi af innodb_log_file_size til at træde i kraft.

Bemærk: Kommandoen RESTART virker kun, hvis MySQL administreres ved hjælp af eksterne programmer som systemd eller mysqld_safe. Se venligst flere detaljer om dette her.

Ellers mislykkes kommandoen RESTART med en meddelelse som følgende.

mysql> RESTART;

ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).

MySQL-konfigurationsstyring på tværs af flere servere

Administration af MySQL-konfiguration i kilde-replikmiljøer er en kedelig proces, hvis du skal administrere flere klynger, der kører forskellige MySQL-versioner. Det er her, en administreret løsning som ScaleGrid ville være gavnlig.

ScaleGrid UI-konsollen kan bruges til at gennemgå de aktuelle indstillinger for forskellige konfigurationsvariabler eller indstille deres værdier.

ScaleGrid kan genkende, når en konfigurationsindstilling er ikke-dynamisk, og vil advare brugeren, hvis en MySQL-genstart er påkrævet for at værdien kan træde i kraft. ScaleGrid vil også lave en sikkerhedskopi af den aktuelle my.cnf-fil, før der anvendes nye konfigurationsændringer.

I kilde-replikmiljøer ændrer ScaleGrid konfigurationsindstillingerne på en rullende måde én server ad gangen. Hvis en ikke-dynamisk variabel skal indstilles, udfører ScaleGrid en failover af den aktuelle master for at minimere nedetiden, der er involveret, hvis MySQL ellers skal genstartes.

Besøg linket nedenfor for at få mere at vide om de forskellige funktioner i ScaleGrid MySQL-hostingløsningen.


  1. Ret "FEJL 3942 (HY000):Hver række i en VALUES-klausul skal have mindst én kolonne", når du bruger VALUES-sætningen i MySQL

  2. TSQL:Opret en visning, der har adgang til flere databaser

  3. Hent Oracle-tabeltypen fra den lagrede procedure ved hjælp af JDBC

  4. Sådan forbinder du to tabeller ved hjælp af en kommasepareret liste i sammenføjningsfeltet