Puncte:0

Dezactivați complet InnoDB în MariaDB 10.6

drapel tm

Nu sunt foarte sigur dacă să întreb asta aici sau la dba.stackexchange.com, dar m-am gândit că aici ar putea fi mai potrivit, deoarece este o problemă de configurare a serverului.

Am o nouă instalare MariaDB 10.6.5 pe Ubuntu 20.04

Am folosit propriile depozite ale MariaDB care pot fi găsite la această adresă URL - https://mariadb.org/download/?t=repo-config&d=20.04+%22focal%22&v=10.6&r_m=one

Urmând instrucțiunile din linkul de mai sus, totul se instalează bine, dar lucrurile încep să se dezvolte după aceea.

Am o altă mașină cu Ubuntu 20.04 și MariaDB 10.3.32 și lucrurile funcționează bine, datorită rulării acestor interogări după instalare:

ALTER TABLE mysql.innodb_index_stats CHANGE table_name table_name VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL;
SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE table_schema='mysql' AND engine='InnoDB';

și apoi adăugând următoarele rânduri în [mysqld] sectiune de /etc/mysql/my.cnf:

skip-innodb
default-storage-engine=MyISAM

Am încercat să fac același lucru pentru instalarea 10.6 (prin adăugarea celor 2 linii în interiorul [mysqld] secțiune în /etc/mysql/mariadb.conf.d/50-server.cnf), dar dintr-un anumit motiv InnoDB este încă activ și implicit după ce emit Arata motoare; interogare în consolă.

Un alt lucru pe care l-am observat este noul sys baza de date care folosește și InnoDB și nu găsesc nicăieri informații despre cum să scap de ea. După ștergerea bazei de date am avut câteva probleme și a trebuit să reinstalez totul.

Motivul pentru care am nevoie de acest lucru este în principal din cauza utilizării de mașini ieftine cu 1 GB RAM sau mai puțin, unde MyISAM este încă regele.

//EDITAȚI | ×:

Iată rezultatul my_print_defaults --mysqld --defaults-file=/etc/mysql/mariadb.cnf

--socket=/run/mysqld/mysqld.sock
--skip-innodb
--default-storage-engine=MyISAM
--user=mysql
--pid-file=/run/mysqld/mysqld.pid
--basedir=/usr
--datadir=/var/lib/mysql
--tmpdir=/tmp
--lc-messages-dir=/usr/share/mysql
--lc-messages=en_US
--sări-închidere-externă
--bind-address=127.0.0.1
--expire_logs_days=10
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci

Iată starea systemctl mariadb.service

mariadb.service - server de baze de date MariaDB 10.6.5
     Încărcat: încărcat (/lib/systemd/system/mariadb.service; activat; prestabilit furnizor: activat)
    Drop-in: /etc/systemd/system/mariadb.service.d
             ââmigrat-from-my.cnf-settings.conf
     Activ: activ (în rulare) din Luni 2021-12-27 08:13:02; acum 3 min 57 s
       Documente: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
    Proces: 2884 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
    Proces: 2889 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (cod=exit, status=0/SUCCESS)
    Proces: 2899 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/...; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || ieșirea 1 (c>
    Proces: 2924 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (cod=exit, status=0/SUCCESS)
    Proces: 2926 ExecStartPost=/etc/mysql/debian-start (cod=exit, status=0/SUCCESS)
   PID principal: 2907 (mariadbd)
     Stare: „Preluarea solicitărilor dvs. SQL acum...”
      Sarcini: 10 (limită: 9451)
     Memorie: 63,1 M
     CGroup: /system.slice/mariadb.service
             ââ2907 /usr/sbin/mariadbd

27 decembrie 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 3 [Avertisment] Acces refuzat utilizatorului „root”@“localhost” (folosind parola: NU)
27 decembrie 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 4 [Avertisment] Acces refuzat utilizatorului „root”@“localhost” (folosind parola: NU)
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2931]: Se caută „mysql” ca: /usr/bin/mysql
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2931]: Se caută „mysqlcheck” ca: /usr/bin/mysqlcheck
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2931]: verificarea versiunii a eșuat. Am primit următoarea eroare la apelarea clientului de linie de comandă „mysql”.
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2931]: EROARE 1045 (28000): Acces refuzat utilizatorului „root”@“localhost” (folosind parola: NU)
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2931]: EROARE FATALĂ: Upgrade eșuat
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2941]: se verifică conturile root nesigure.
27 decembrie 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 5 [Avertisment] Acces refuzat utilizatorului „root”@“localhost” (folosind parola: NU)
27 decembrie 08:13:02 testhost debian-start[2944]: EROARE 1045 (28000): Acces refuzat utilizatorului „root”@“localhost” (folosind parola: NU)

Și iată journalctl -u mariadb.service -n 30

Dec 27 08:13:01 testhost mariadbd[2907]: 2021-12-27 8:13:01 0 [Notă] /usr/sbin/mariadbd (server 10.6.5-MariaDB-1:10.6.5+maria~focal ) începând cu procesul 2907...
27 decembrie 08:13:01 testhost mariadbd[2907]: 2021-12-27 8:13:01 0 [Notă] InnoDB: Tabelele comprimate folosesc zlib 1.2.11
Dec 27 08:13:01 testhost mariadbd[2907]: 2021-12-27 8:13:01 0 [Notă] InnoDB: Număr de pool-uri: 1
Dec 27 08:13:01 testhost mariadbd[2907]: 2021-12-27 8:13:01 0 [Notă] InnoDB: Utilizarea instrucțiunilor crc32 + pclmulqdq
Dec 27 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] InnoDB: Utilizarea AIO nativă Linux
Dec 27 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] InnoDB: Inițializarea pool-ului de tampon, dimensiune totală = 134217728, dimensiunea bucată = 134217728
27 dec 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] InnoDB: Inițializare finalizată a pool-ului de buffer
Dec 27 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] InnoDB: 128 de segmente de rollback sunt active.
Dec 27 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] InnoDB: Crearea spațiului tabel partajat pentru tabele temporare
Dec 27 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] InnoDB: Setarea fișierului „./ibtmp1” la 12 MB. Scrierea fizică a fișierului complet; Va rugam asteptati ...
27 decembrie 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] InnoDB: Dimensiunea fișierului „./ibtmp1” este acum de 12 MB.
Dec 27 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] InnoDB: 10.6.5 a început; numărul de secvență de jurnal 33062; ID tranzacție 4
27 decembrie 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] InnoDB: Se încarcă pool-urile de buffer din /var/lib/mysql/ib_buffer_pool
Dec 27 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] Pluginul „FEEDBACK” este dezactivat.
27 dec 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] InnoDB: Încărcarea pool-urilor de tampon s-a finalizat la 211227 8:13:02
Dec 27 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] Socket server creat pe IP: „0.0.0.0”.
Dec 27 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] Socket server creat pe IP: „::”.
Dec 27 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 0 [Notă] /usr/sbin/mariadbd: gata pentru conexiuni.
27 decembrie 08:13:02 testhost mariadbd[2907]: Versiune: '10.6.5-MariaDB-1:10.6.5+maria~focal' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org distribuție binară
27 decembrie 08:13:02 testhost systemd[1]: A pornit serverul de baze de date MariaDB 10.6.5.
27 decembrie 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 3 [Avertisment] Acces refuzat utilizatorului „root”@“localhost” (folosind parola: NU)
27 decembrie 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 4 [Avertisment] Acces refuzat utilizatorului „root”@“localhost” (folosind parola: NU)
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2931]: Se caută „mysql” ca: /usr/bin/mysql
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2931]: Se caută „mysqlcheck” ca: /usr/bin/mysqlcheck
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2931]: verificarea versiunii a eșuat. Am primit următoarea eroare la apelarea clientului de linie de comandă „mysql”.
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2931]: EROARE 1045 (28000): Acces refuzat utilizatorului „root”@“localhost” (folosind parola: NU)
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2931]: EROARE FATALĂ: Upgrade eșuat
27 decembrie 08:13:02 testhost /etc/mysql/debian-start[2941]: se verifică conturile root nesigure.
27 decembrie 08:13:02 testhost mariadbd[2907]: 2021-12-27 8:13:02 5 [Avertisment] Acces refuzat utilizatorului „root”@“localhost” (folosind parola: NU)
27 decembrie 08:13:02 testhost debian-start[2944]: EROARE 1045 (28000): Acces refuzat utilizatorului „root”@“localhost” (folosind parola: NU)
Puncte:1
drapel cn

Daniel Black de pe MariaDB Zulip a testat acest lucru și a funcționat suficient de bine într-un container:

$ podman run --rm --env MARIADB_RANDOM_ROOT_PASSWORD=1 mariadb:10.6 --skip-innodb --default-storage-engine=Aria
2021-12-23 05:54:16+00:00 [Notă] [Entrypoint]: scriptul Entrypoint pentru MariaDB Server 1:10.6.5+maria~focal a început.
2021-12-23 05:54:17+00:00 [Notă] [Punctul de intrare]: Trecerea la utilizatorul dedicat „mysql”
2021-12-23 05:54:17+00:00 [Notă] [Entrypoint]: scriptul Entrypoint pentru MariaDB Server 1:10.6.5+maria~focal a început.
...
2021-12-23 5:54:27 0 [Notă] Pluginul „InnoDB” este dezactivat.
2021-12-23 5:54:27 0 [Notă] Pluginul „FEEDBACK” este dezactivat.
2021-12-23 5:54:27 0 [Avertisment] Trebuie să utilizați --log-bin pentru a face ca --expire-logs-days sau --binlog-expire-logs-seconds să funcționeze.
2021-12-23 5:54:27 0 [Notă] Socket server creat pe IP: „0.0.0.0”.
2021-12-23 5:54:27 0 [Notă] Socket server creat pe IP: „::”.
2021-12-23 5:54:27 0 [Avertisment] intrarea „proxies_priv” „@% root@9df410ee481f” ignorată în modul --skip-name-resolve.
2021-12-23 5:54:27 0 [Notă] mysqld: gata pentru conexiuni.
Versiune: „10.6.5-MariaDB-1:10.6.5+maria~focal” socket: „/run/mysqld/mysqld.sock” port: 3306 distribuție binară mariadb.org

arata motoarele:

$ podman exec optimistic_kalam mariadb -p'4(V_6icy&6BPL4wt*cG!=vi"rh8gvW;Q' -e 'show engines'
Suport motor Comentariu Tranzacții XA puncte de salvare
CSV DA Stochează tabelele ca fișiere CSV NU NU NU
MRG_MyISAM DA Colecție de tabele MyISAM identice NU NU NU
MEMORIE DA Bazat pe hash, stocat în memorie, util pentru tabele temporare NU NU NU
Aria DEFAULT Mese sigure împotriva accidentelor cu moștenirea MyISAM. Folosit pentru tabele temporare interne și tabele de privilegii NU NU NU
MyISAM DA Motor non-tranzacțional cu performanțe bune și amprentă redusă de date NU NU NU
SECVENȚA DA Tabelele generate umplute cu valori secvențiale DA NU DA
InnoDB NO Suportă tranzacții, blocare la nivel de rând, chei străine și criptare pentru tabele NULL NULL NULL
PERFORMANCE_SCHEMA DA Schema de performanță NU NU NU

The mysql.transaction_registry îl folosește deoarece are nevoie de un motor de stocare tranzacțională.

danblack avatar
drapel dz
containerele note rulează mysql_install_db sub aceeași configurație și există suficientă inteligență acolo pentru a detecta lipsa innodb și a se ajusta în consecință. Dacă faceți o instalare nouă, eliminați /var/lib/mysql și `mysql_install_db --user mysql` după modificările configurației.
danblack avatar
drapel dz
Nu și în exemplul meu în care [~markusjm] a susținut că am folosit Aria în loc de MyISAM pentru siguranța în caz de accident. Ar trebui să conțină și opțiuni similare de ușurință a memoriei.
Sledge Hammer avatar
drapel tm
@markusjm și @danblack - Vă mulțumesc amândurora pentru ajutor, dar încă nu am idee cum să dezactivez motorul prin fișierele de configurare. Am încercat exemplul de mai sus în consolă după oprirea serviciului și InnoDB este într-adevăr dezactivat, dar când adaug opțiunile în fișierul de configurare pe care l-am menționat în întrebare - nu se întâmplă nimic. Am devenit curios și am înlocuit tot folderul `/etc/mysql` cu cel din 10.3 și merge bine, dar acele fișiere erau dintr-o versiune și mai veche și mă tem că nu vor mai funcționa la un moment dat și ar prefera să au o configurație mai actualizată.
danblack avatar
drapel dz
Includeți informații în întrebarea dvs. „Nu se întâmplă nimic” este probabil că nu a pornit, dar nu pot spune de ce fără informații suplimentare. Afișați jurnalul serverului `journalctl -u mariadb.service -n 30` și `systemctl status mariadb.service`. Înlocuirea cu o configurație 10.3 nu este recomandabilă, deoarece opțiunile învechite s-ar fi putut întâmpla așa cum sa sugerat. Pentru claritatea întrebării, includeți `my_print_defaults --mysqld` pentru a vedea ce elemente de configurare sunt setate.
Sledge Hammer avatar
drapel tm
@danblack - Prin „nimic nu se întâmplă” vreau să spun că totul este la fel cum am afirmat deja în întrebare - adaug modificările în fișier, serviciul pornește bine, dar din anumite motive acele opțiuni de configurare sunt ignorate și InnoDB este încă activ și implicit când rulez `SHOW ENGINES;`. Am adăugat rezultatul jurnalelor pe care le-ați dorit... Am setat pass pentru root, așa că trebuie să fie motivul erorilor de root. Plănuiesc să șterg întreaga mașină și să încep de la zero în următoarele zile pentru a vedea dacă cumva am reușit să stric ceva, deși mă îndoiesc că rezultatul va fi diferit.
danblack avatar
drapel dz
Urmați directorul de eliminare a datelor din primul comentariu și reinițializați folosind `mysql_install_db`. M-am uitat deși codul și innodb pare să se inițialeze dacă acele fișiere sunt acolo.
Sledge Hammer avatar
drapel tm
@danblack - Am încercat deja asta înainte de comentariul meu anterior și rezultatul a fost același. Am avut configurația editată cu cele 2 opțiuni adăugate și am făcut `service mariadb stop`, `rm -rf /var/lib/mysql/*` urmat de `mysql_install_db --user mysql` și `service mariadb start` și încă mai aveam innodb alergare.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.