MariaDB vs MySQL - Compatibilità
Contents
- MariaDB è un sostituto di MySQL pronto all'uso
- Incompatibilità tra MariaDB 5.1 e MySQL 5.1
- Incompatibilità tra MariaDB 5.2 e MySQL 5.1
- Incompatibilità tra MariaDB 5.3, MySQL 5.1 e MariaDB 5.2
- Incompatibilità tra MariaDB 5.5 e MariaDB 5.3
- Vecchie opzioni di configurazione non più supportate
- Rimpiazzare un RPM di MySQL ==
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 comandoCHECKSUM
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
a1M
(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 databasemysql
; per correggere questi problemi, si usimysql_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 aggiuntivaProgress
, che mostra appunto il progresso di alcuni comandi. E' possibile disabilitarla avviandomysqld
con il flag--old
.INFORMATION_SCHEMA.PROCESSLIST
ha tre colonne aggiuntive per il Progress Reporting:STAGE
,MAX_STAGE
ePROGRESS
.- 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'opzioneGRANT
) a-1
per impedire agli utenti di connettersi al server. La variabile globalemax_user_connections
non influenza gli utente con il privilegioSUPER
. - 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
¶
Opzione | Vecchio valore | Nuovo valore |
---|---|---|
innodb-adaptive-checkpoint | TRUE | FALSE |
innodb-change-buffering | inserts | all |
innodb-flush-neighbor-pages | 1 | area |
<</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