This is a read-only copy of the MariaDB Knowledgebase generated on 2024-11-21. For the latest, interactive version please visit https://mariadb.com/kb/.

MariaDB vs MySQL - Compatibilità

MariaDB è un sostituto di MySQL pronto all'uso

Per tutti i fini pratici, MariaDB è un rimpiazzo binario per MySQL, pronto all'uso, che può sostituire la versione corrispondente (ad esempio: MySQL 5.1 -> MariaDB 5.1, MySQL 5.2 -> MariaDB 5.2, MySQL 5.3 -> MariaDB 5.3). Ecco cosa significa:

  • I dati e i file di definizione delle tabelle (.frm) sono compatibili a livello binario.
  • Tutte le API client, i protocolli e le strutture sono identici.
  • Tutti i nomi dei file, i binari, i percorsi, le porte, i socket, etc dovrebbero essere uguali.
  • Tutti i connettori di MySQL (PHP, Perl, Python, Java, .NET, MyODBC, Ruby, MySQL C connector etc) si comportano nello stesso modo con MariaDB.
    • Vi sono alcuni problemi di installazione con PHP5 dei quali è meglio essere consapevoli (si tratta di un bug nel modo in cui il vecchio PHP5 controlla la compatibilità della libreria client).
  • Il pacchetto mysql-client funziona anche con MariaDB server.

Questo significa che nella maggioranza dei casi è sufficiente disinstallare MySQL e installare MariaDB per poterlo utilizzare. Non vi è alcun bisogno di convertire i file dei dati se si utilizza la stessa versione, ad esempio 5.1.

Mensilmente viene effettuato il merge con il codice di MySQL per assicurarci di mantenere la compatibilità e importare le nuove funzionalità e le soluzioni dei bug sviluppate da Oracle.

Molto lavoro è stato svolto sugli script di aggiornamento, perciò è ora più semplice aggiornare da MySQL 5.0 a MariaDB 5.1

MariaDB ha anche molte nuove opzioni, estensioni, Storage Engine e bug fix che sono assenti in MySQL. E' possibile trovare l'elenco delle diverse caratteristiche delle versioni di MariaDB alla pagina Cosa c'è di nuovo nelle diverse versioni di MariaDB.

Si veda anche MariaDB contro MySQL - Caratteristiche.

Incompatibilità tra MariaDB 5.1 e MySQL 5.1

Vi sono pochi casi MariaDB deve essere incompatibile per fornire più informazioni, e informazioni migliori, rispetto a MySQL.

Ecco una lista di tutte le incompatibilità a livello utente tra MariaDB 5.1 e MySQL 5.1.

  • I nomi dei pacchetti di installazioni cominciano con MariaDB invece che con MySQL.
  • Il timing potrebbe essere differente, perchè in molti casi MariaDB è più veloce di MySQL.
  • mysqld in MariaDB legge le sezioni [mariadb] nei file my.cnf.
  • Non è possibile utilizzare uno Storage Engine binario se non è compilato con la stessa identica versione di MariaDB. Questo perchè la struttura THD, usata interna al server, è diversa tra MySQL e MariaDB. Questo capita frequentemente anche tra versioni diverse di MySQL. Comunque non dovrebbe essere un problema, perchè la maggioranza delle persone non scarica i nuovi Storage Engine e MariaDB contiene più Storage Engine rispetto a MySQL.
  • CHECKSUM TABLE potrebbe dare risultati diversi, perchè MariaDB non ignora i NULL come fa MySQL (le future versioni di MySQL dovrebbero calcolare il checksum allo stesso modo di MariaDB). E' possibile avere il checksum calcolato alla vecchia maniera avviando mysqld con l'opzione --old. Si noti però che MyISAM e Aria in MariaDB insternamente utilizzano il nuovo checksum, perciò se si specifica --old il comando CHECKSUM sarà più lento di quanto sarebbe se effettuasse il calcolo direttamente.
  • Lo slow query log contiene maggiori informazioni sulle query; questo potrebbe essere un problema se si ha uno script che effettura il parsing del file.
  • MariaDB per default occupa un po' di memoria in più rispetto a MySQL perchè lo Storage Engine Aria è utilizzato per gestire le tabelle temporanee interne. Se si desidera che MariaDB liberi un po' di memoria (diminuendo le performance), si imposti il valore di aria_pagecache_buffer_size a 1M (il default è 128M).
  • Se si utilizzano le nuove opzioni di avvio, le nuove funzionalità di MariaDB o i nuovi Storage Engine, non sarà possibile ritornare a MySQL con facilità.

Incompatibilità tra MariaDB 5.2 e MySQL 5.1

Si vedano le incompatibilità tra MariaDB 5.1 e MySQL 5.1, con una aggiunta:

  • Aggiunto nuovo valore per SQL_MODE: IGNORE_BAD_TABLE_OPTIONS. Se non è impostato, quando si specifica un attributo (opzione) di campo, indice o valore (option) che non è supportato dallo Storage Engine si ottiene un errore. Questa modifica potrebbe causare alcuni warning nel log degli errori, che riguardano tabelle definite in modo non corretto nel database mysql; per correggere questi problemi, si usi mysql_upgrade.

Per tutti i fini pratici, MariaDB 5.2 è un rimpiazzo di MariaDB 5.1 e MySQL 5.1 pronto all'uso.

Incompatibilità tra MariaDB 5.3, MySQL 5.1 e MariaDB 5.2

  • Alcuni messaggi di errore relativi alle conversioni erronee sono differenti, perché MariaDB fornisce informazioni aggiuntive per spiegare cosa è andato storto.
  • I numeri degli errori specifici di MariaDB sono cambiati, ora iniziano da 1900 per non congliggere con quelli di MySQL.
  • Ora i microsecondi funzionano in tutti i contesti; MySQL, in certi casi, perdeva le ultime cifre da DATETIME e TIME.
  • La vecchie opzioni di avvio che iniziano con --maria- sono state rimossa. Tale prefisso può essere sostituito con --aria-. (MariaDB 5.2 supporta sia --maria-, sia --aria-)
  • SHOW PROCESSLIST ha una colonna aggiuntiva Progress, che mostra appunto il progresso di alcuni comandi. E' possibile disabilitarla avviando mysqld con il flag --old.
  • INFORMATION_SCHEMA.PROCESSLIST ha tre colonne aggiuntive per il Progress Reporting: STAGE, MAX_STAGE e PROGRESS.
  • I commenti multiriga che iniziano con /*M! o con /*M!##### vengono eseguiti.
  • Se all'avvio di MySQL si specifica max_user_connections=0 (che significa che non c'è limite alle connessioni simultanee), non è più possibile modificare la variabile corrispondente mentre il server è in esecuzione. Questo perché non vengono allocate le strutture per il conteggio (che implicano un mutex per ogni connessione). Di conseguenza, se la variabile venisse modificata durante l'esecuzione, i contatori sarebbero errati. Se si vuole avere la possibilità di modificare questa variabile a runtime, si può avviare mysqld assegnandole un valore elevato.
  • E' possibile impostare max_user_connections (entrambe le variabili e l'opzione GRANT) a -1 per impedire agli utenti di connettersi al server. La variabile globale max_user_connections non influenza gli utente con il privilegio SUPER.
  • La direttiva IGNORE non ignora più tutti gli errori (come quelli fatali), ma solo quelli che possono essere ignorati in modo sicuro

Incompatibilità tra MariaDB 5.5 e MariaDB 5.3

XtraDB

Percona, il fornitore di XtraDB, non ha fornito tutte le prime funzionalità di XtraDB nella base di codice di 5.5. Per questo motivo, nemmeno MariaDB 5.5 può fornirle.

Opzioni di XtraDB mancanti in 5.5

Le seguenti opzioni non sono supportate in XtraDB 5.5. Se sono presenti in uno dei file my.cnf, occorre rimuoverle prima di aggiornarsi a 5.5.

  • innodb-adaptive-checkpoint ; si usi innodb_adaptive_flushing_method
  • innodb-auto-lru-dump ; si usi innodb_buffer_pool_restore_at_startup
  • innodb-blocking-lru-restore ; si usi innodb-blocking-buffer-pool-restore
  • innodb-enable-unsafe-group-commit
  • innodb-expand-import
  • innodb-extra-rsegments
  • innodb-extra-undoslots
  • innodb-fast-recovery
  • innodb-flush-log-at-trx-commit-session
  • innodb-overwrite-relay-log-info
  • innodb-pass-corrupt-table
  • innodb-use-purge-thread
  • xtradb-enhancements

Opzioni di XtraDB il cui valore predefinito è cambiato

OpzioneVecchio valoreNuovo valore
innodb-adaptive-checkpointTRUEFALSE
innodb-change-bufferinginsertsall
innodb-flush-neighbor-pages1area

<</style>>

Nuove opzioni in XtraDB 5.5

Le seguenti nuove opzioni sono state aggiunte a XtraDB / InnoDB in 5.5. (Elencate qui solo per avere tutte le informazioni su XtraDB in un unico posto)

  • innodb-adaptive-flushing-method
  • innodb-adaptive-hash-index-partitions
  • innodb-blocking-buffer-pool-restore
  • innodb-buffer-pool-instances
  • innodb-buffer-pool-restore-at-startup
  • innodb-change-buffering-debug
  • innodb-corrupt-table-action
  • innodb-flush-checkpoint-debug
  • innodb-force-load-corrupted
  • innodb-import-table-from-xtrabackup
  • innodb-large-prefix
  • innodb-purge-batch-size
  • innodb-purge-threads
  • innodb-recovery-update-relay-log
  • innodb-rollback-segments
  • innodb-sys-columns
  • innodb-sys-fields
  • innodb-sys-foreign
  • innodb-sys-foreign-cols
  • innodb-sys-tablestats
  • innodb-use-global-flush-log-at-trx-commit
  • innodb-use-native-aio

Si veda anche Perconas guide of how to upgrade to 5.5

Vecchie opzioni di configurazione non più supportate

Se una delle seguenti variabili è presente in /etc/my.cnf o in qualsiasi altro file my.cnf occorre rimuoverla. Questo vale anche per MySQL 5.1 o successivo:

  • skip-bdb

Rimpiazzare un RPM di MySQL

Se si disinstalla MySQL dagli RPM per installare MariaDB, si noti che, durante la disinstallazione, il pacchetto rinomina /etc/my.cnf in /etc/my.cnf.rpmsave.

Perciò, dopo aver installato MariaDB, occorre ripristinare le vecchie opzioni di configurazione in questo modo:

mv -vi /etc/my.cnf.rpmsave /etc/my.cnf
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.