Explains the differences between official Debian/Ubuntu repository packages and those from MariaDB.org, particularly regarding library linking and configuration defaults.
The .deb packages provided by MariaDB Foundation's and MariaDB Corporation's repositories are not identical to the official .deb packages provided by Debian's and Ubuntu's default repositories.
The packages provided by MariaDB Foundation's and MariaDB Corporation's repositories are generated using the Debian packaging in MariaDB's official source code. The Debian packaging scripts are specifically in the debian/ directory.
The packages provided by Debian's and Ubuntu's default repositories are generated using the Debian packaging in Debian's mirror of MariaDB's source code, which contains some custom changes. The source tree can be found here:
As a consequence, MariaDB behaves a bit differently if it is installed from Debian's and Ubuntu's default repositories.
The located at /etc/mysql/my.cnf is handled by the mechanism when the mysql-common package is installed. It is a symbolic link that references either mysql.cnf or mariadb.cnf depending on whether MySQL or MariaDB is installed. Most of the MariaDB are therefore actually located in /etc/mysql/mariadb.d/.
Since there is no system variable difference from the Standard MariaDB.
MariaDB binaries from packages provided by Debian's and Ubuntu's default repositories are linked with a different TLS library than MariaDB binaries from packages provided by MariaDB Foundation's and MariaDB Corporation's repositories.
MariaDB Server binaries:
MariaDB Server is statically linked with the bundled libraries in packages provided by Debian's and Ubuntu's default repositories.
The authentication plugin is installed by default in new installations that use the packages provided by Debian's default repositories in Debian 9 and later and Ubuntu's default repositories in Ubuntu 15.10 and later.
The root@localhost created by will also be created to authenticate via the authentication plugin in these builds.
For details, check out the Debian and Ubuntu official repositories:
This page is licensed: CC BY-SA / Gnu FDL
MariaDB client and utility binaries:
MariaDB's clients and utilities and are dynamically linked with the system's GnuTLS libraries in .deb packages provided by Debian's and Ubuntu's default repositories. libmysqlclient is still statically linked with the bundled wolfSSL libraries.
MariaDB's clients and utilities and are dynamically linked with the system's GnuTLS libraries in .deb packages provided by Debian's and Ubuntu's default repositories. libmysqlclient is still statically linked with the bundled yaSSL libraries.
In contrast, MariaDB's clients and utilities, , and are dynamically linked with the system's libraries in packages provided by MariaDB Foundation's and MariaDB Corporation's repositories.
See TLS and Cryptography Libraries Used by MariaDB for more information about which libraries are used on which platforms.
utf8mb4
latin1 (for <= )
also defaults to utf8mb4 hence no difference for this version and greater
utf8mb4_general_ci (for < )
latin1_swedish_ci
character_set_collations has dominant effect hence removal from Debian default settings
auth_socket.so
-
Before , MariaDB did not enable the unix_socket authentication plugin by default.This is default in Debian, allowing passwordless login.
A collection of troubleshooting articles specific to Debian and Ubuntu deployments, covering upgrade failures, repository conflicts, and migration issues.
Solutions for when `apt-get upgrade` hangs or fails because the MariaDB service takes too long to start, triggering a timeout in the init script.
After running apt-upgrade mariadb, it's possible that apt shows a fail in trying to start the server, but in fact the database is up and running, which then provokes apt to remain in a non finished state.
For example:
# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]
Setting up mariadb-server-10.1 (10.1.10+maria-1~trusty) ...
* Stopping MariaDB database server mysqld
...done.
* Starting MariaDB database server mysqld
...fail!
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mariadb-server-10.1 (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mariadb-server:
mariadb-server depends on mariadb-server-10.1 (= 10.1.10+maria-1~trusty); however:
Package mariadb-server-10.1 is not configured yet.
dpkg: error processing package mariadb-server (--configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
Errors were encountered while processing:
mariadb-server-10.1
mariadb-server
E: Sub-process /usr/bin/dpkg returned an error code (1)This situation could occur if the timeout for the init script was too short. For example, see MDEV-9382, a situation where the timeout was 30 seconds, but the server was taking 48 seconds to start.
To overcome this, the timeout needs to be increased. This can be achieved as follows:
On systems where systemd is not enabled/supported: The timeout can be increased by setting MYSQLD_STARTUP_TIMEOUT either directly in the script or via the command line. The init script also sources /etc/default/mariadb, so it can also be used to set MYSQLD_STARTUP_TIMEOUT to persistently change the startup timeout.
On systems that support systemd: The startup timeout can be increased by setting option.
This page is licensed: CC BY-SA / Gnu FDL
Specific instructions for resolving dependency breakage that occurred with the release of MariaDB 5.5.33 on Debian and Ubuntu systems.
This page is obsolete. The information is old, outdated, or otherwise currently incorrect. We are keeping the page for historical reasons only. Do not rely on the information in this article.
Shortly after the release we became aware of some installation issues with the Debian and Ubuntu repositories. These issues were fixed in , but due to how apt works, steps need to be taken to solve the broken dependencies before upgrading.
We know of three scenarios when dependencies were broken. The steps to fix each of them are pretty much the same, only the list of broken dependencies and hence the list of packages to take care of them differs. The basic idea is to downgrade those certain packages to 5.5.32 temporarily before upgrading them to 5.5.33a.
If you ran into issues when moving from to , look through each of the three scenarios to see which one applies to you and then follow the steps to apply that fix.
To get your system ready to apply the fix, do the following:
Comment out the standard repo in the /etc/apt/sources.list or /etc/apt/sources.list.d/mariadb.repo file (or wherever you have the repositories configured).
Add a repository to the sources.list. The easiest way is to add the following. Just replace '{os}' and '{dist}' with the appropriate values.
For example, on Debian Wheezy the line would be:
And on Ubuntu Raring the line would be:
Then run 'sudo apt-get update'
Then 'sudo apt-get install' the list of packages to downgrade as given in the applicable section below.
Next, modify our sources.list to remove the 5.5.32 repo and switch back to the normal 5.5 repo
In this first scenario, both client and server were partially upgraded to 5.5.33 before the process aborted. The problem looks like this:
To fix it, the following server and client packages need to be temporarily downgraded to 5.5.32 (replace 'wheezy' with the name of whatever distribution you are using):
In this scenario, the client upgraded, but Galera-server did not. The problem looks like this:
To fix it, only the client packages need to be temporarily downgraded to 5.5.32 (replace wheezy with whatever your distribution is):
In this scenario, only the library upgraded. The problem looks like this:
To fix it, the library needs to be downgraded to 5.5.32 (replace wheezy with your distribution):
After switching back to the 5.5 repo, the libraries won't get upgraded, they will stay 5.5.32 until you upgrade the server to 5.5.33a.
This page is licensed: CC BY-SA / Gnu FDL
Information about using MariaDB Debian Live images for testing and offline installation, including boot options and default credentials.
This page is obsolete. The information is old, outdated, or otherwise currently incorrect. We are keeping the page for historical reasons only. Do not rely on the information in this article.
A member of the MariaDB community, Mark <ms (at) it-infrastrukturen (dot) org>,
has created some Debian "squeeze" 6.0.4 based, live iso images with
or 5.3 pre-installed on them and some Debian "squeeze" 6.0.5 based, live iso images with pre-installed on them.
These live and install images can be used to quickly run a MariaDB server in live mode for learning or testing purposes, or to simplify and speed up off-line installations of Debian-based MariaDB servers onto harddisk.
To work in live mode the system boots from a usb stick (or CD/DVD) and runs in RAM without touching the system's harddisk drive.
sudo apt-get update' to get things back to normalAs a final optional step, once your normal mirror has at least you can 'sudo apt-get upgrade' to upgrade. To check what version of MariaDB our mirror has, run the following command (after running 'sudo apt-get update'):
The same usb stick (or CD/DVD media) can be used to install a complete server installation onto the harddisk drive using the included Debian installer.
All required MariaDB packages are included on the media, so there is no need for an Internet connection.
Three types of images are provided, text (command line), LXDE, and Gnome. The text-based live images can be used for testing or server off-line installations. The two gui types, LXDE and Gnome, can be used for testing/learning in live mode or for off-line desktop installations. Debian live images with LXDE (gnome, KDE or awesome) are pretty comfortable for daily work as a replacement for whatever desktop OS is installed on the system.
There are three iso images for each type, one for 32-bit (i386) systems, one for 64-bit (amd64) systems, and one with both.
Live iso images (text) for i386, amd64 or multi architectures.
Live iso images (text) for i386, amd64 or multi architectures.
Live iso images with LXDE for i386, amd64 or multi architectures.
Live iso images with Gnome for i386, amd64 or multi architectures.
Live images
Live images demonstration video
The LXDE and Gnome images contain documentation under /srv/PDF. Including
instructions on how to create your own Debian live images in live mode (you
need 16GB RAM or more to be able to do this). See the README, README.live, and
live-manual.en.pdf files under /srv/PDF for details.
Note: Some HP notebooks are not able to boot binary hybrid iso images from a USB stick.
To get the iso images you can use rsync:
or just use the links above (or go to:).
A USB stick or CD/DVD can be used as bootable media. The preferred way is a USB stick.
for Linux: dd if=./<image_name_as_above.iso> of=/dev/<USB-stick-ID_like_sdb_or_sdc>
for other systems: cygwin includes dd and some other linux/Unix tools.
The iso images have been successfully tested on:
Acer ASPIRE @ne netbooks (1GB RAM)
ThinkPad T60p and T61p notebooks (2 or 4GB RAM)
Xeon E31270 / Asus P8BWS desktop (16GB ECC RAM)
AMD FX-4100 / Asus M5A99X EVO desktop (16GB ECC RAM)
HP DL385g7 Opteron 6170SE or 6180SE servers (32 or 64GB ECC RAM)
It is possible to add some options on the bootline for special purposes like, for example, the installation of additional packages from a local repository on the image or assigning a static IP address and running sshd.
To configure a static IP use "ip=". For example:
"ip=eth0:192.168.1.53:255.255.255.0:192.168.1.1"
The full format of "ip=" is: "ip=[interface]:[IP_address]:[netmask]:[gateway]"
If you use an empty "ip=" value the content of /etc/network/interfaces
and /etc/resolv.conf will be used. Without the "ip=" option, dhcp
will be used to get an IP address.
For installing and running sshd (so that the image can act as a server in a
test environment) use: "sshd=on"
The live user is "sql" and the password is "live". Please change the password immediately after first login!
Depending on the image or 5.3 server is installed. There is no root passord for the database set so please set a password immediately after first login!
Run repo-off-line.sh to activate local repositories on the image for
apt-get (for off-line installations) or repo-on-line.sh for internet
repositories.
The binary hybrid live iso images with multiple-choices inside the boot menu allow for the assignment of two different IPs. (e.g. for testing of clustered database operations)
Send any feedback or suggestions related to these images to:
Mark <ms (at) it-infrastrukturen (dot) org>
This page is licensed: CC BY-SA / Gnu FDL
deb http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.32/repo/{os} {dist} maindeb http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.32/repo/debian wheezy maindeb http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.32/repo/ubuntu raring mainapt-cache show mariadb-server | grep VersionYou might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.32+maria-1~wheezy) but 5.5.33+maria-1~wheezy is installed
libmysqlclient18 : Depends: libmariadbclient18 (= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
mariadb-client-5.5 : Depends: libmariadbclient18 (>= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
mariadb-client-core-5.5 : Depends: libmariadbclient18 (>= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
mariadb-server : Depends: mariadb-server-5.5 (= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
mariadb-server-core-5.5 : Depends: libmariadbclient18 (>= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installedsudo apt-get install \
libmysqlclient18=5.5.32+maria-1~wheezy \
mariadb-client-5.5=5.5.32+maria-1~wheezy \
mariadb-client-core-5.5=5.5.32+maria-1~wheezy \
mariadb-server=5.5.32+maria-1~wheezy \
mariadb-server-core-5.5=5.5.32+maria-1~wheezyThe following packages have unmet dependencies:
libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.32+maria-1~wheezy) but 5.5.33+maria-1~wheezy is installed
libmysqlclient18 : Depends: libmariadbclient18 (= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
mariadb-client-5.5 : Depends: libmariadbclient18 (>= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installed
mariadb-client-core-5.5 : Depends: libmariadbclient18 (>= 5.5.33+maria-1~wheezy) but 5.5.32+maria-1~wheezy is installedsudo apt-get install \
libmysqlclient18=5.5.32+maria-1~wheezy \
mariadb-client-5.5=5.5.32+maria-1~wheezy \
mariadb-client-core-5.5=5.5.32+maria-1~wheezyThe following packages have unmet dependencies:
libmariadbclient18: Depends: libmysqlclient18 (= 5.5.32+maria-1~lucid) but 5.5.33+maria-1~lucid is installed
libmysqlclient18: Depends: libmariadbclient18 (= 5.5.33+maria-1~lucid) but 5.5.32+maria-1~lucid is installedsudo apt-get install \
libmysqlclient=5.5.32+maria-1~wheezy \
libmariadbclient=5.5.32+maria-1~wheezyrsync -avP rsync://rsync.it-infrastrukturen.org/ftp/public-mariadb/<image_or_file_name_as_above> .A guide on migrating from MySQL 5.5 to MariaDB 10.1 during an operating system upgrade to Debian 9 (Stretch).
This page is obsolete. The information is old, outdated, or otherwise currently incorrect. We are keeping the page for historical reasons only. Do not rely on the information in this article.
MariaDB 10.1 is now the default mysql server in Debian 9 "Stretch". This page provides information on this change and instructions to help with upgrading your Debian 8 "Jessie" version of MySQL or MariaDB to MariaDB 10.1 in Debian 9 "Stretch".
The version of MySQL in Debian 8 "Jessie" is 5.5. When installing, most users will install the mysql-server package, which depends on the mysql-server-5.5 package. In Debian 9 "Stretch" the mysql-server package depends on a new package called default-mysql-server. This package in turn depends on mariadb-server-10.1. There is no default-mysql-server package in Jessie.
In both Jessie and Stretch there is also a mariadb-server package which is a MariaDB-specific analog to the mysql-server package. In Jessie this package depends on mariadb-server-10.0 and in Stretch this package depends on mariadb-server-10.1 (the same as the default-mysql-server package).
So, the main repository difference in Debian 9 "Stretch" is that when you install the mysql-server package on Stretch you will get instead of MySQL, like you would with previous versions of Debian. Note that mysql-server is just an empty transitional meta-package and users are encouraged to install MariaDB using the actual package mariadb-server.
All apps and tools, such as the popular LAMP stack, in the repositories that depend on the mysql-server package will continue to work using MariaDB as the database. For new installs there is nothing different that needs to be done when installing the mysql-server or mariadb-server packages.
If you are currently running MySQL 5.5 on Debian 8 "Jessie" and are planning an upgrade to on Debian 9 "Stretch", there are some things to keep in mind:
This is a major upgrade, and so complete database backups are strongly suggested before you begin. is compatible on disk and wire with MySQL 5.5, and the MariaDB developer team has done extensive development and testing to make upgrades as painless and trouble-free as possible. Even so, it's always a good idea to do regular backups, especially before an upgrade. As the database has to shut down anyway for the upgrade, this is a good opportunity to do a backup!
Some default values have been changed, some have been renamed, and others have been removed between MySQL 5.5 and . The following sections detail them.
Most of the following options have increased a bit in value to give better performance. They should not use much additional memory, but some of them do use a bit more disk space. []
The following options should be removed or renamed if you use them in your config files:
If you have a , the normal procedure is to first upgrade your slaves to MariaDB, then move one of your slaves to be the master and then upgrade your original master. In this scenario you can upgrade from MySQL to MariaDB or upgrade later to a new version of MariaDB without any downtime.
It may also be useful to check out the section. It contains several articles on upgrading from MySQL to MariaDB and from one version of MariaDB to another. For upgrade purposes, MySQL 5.5 and are very similar. In particular, see the and articles.
If you need help with upgrading or setting up replication, you can always to find experts to help you with this.
Set InnoDB for a Full Shutdown Set innodb_fast_shutdown to 0. This is to ensure that if you make a backup as part of the upgrade, all data is written to the InnoDB data files, which simplifies any restore in the future.
Shutdown MySQL Shutdown your MySQL 5.5 server.
Take a Full Backup
OS and Database Upgrade
Perform the OS Upgrade Proceed with the upgrade from Debian 8 to Debian 9.
Automatic Database Upgrade Process During the Debian upgrade, the mysql_upgrade script will be run automatically. This script does two things:
Post-Upgrade Configuration
Update Configuration and Restart You can now add new options to your my.cnf file to enable new features.
After changing my.cnf, you must restart the mysqld service.
or
If you have installed or on your Debian 8 "Jessie" machine from the MariaDB repositories you will need to upgrade to when upgrading to Debian 9 "Stretch". You can choose to continue using the MariaDB repositories or move to using the Debian repositories.
If you want to continue using the MariaDB repositories edit the MariaDB entry in your sources.list and change every instance of 5.5 or 10.0 to 10.1. Then upgrade as suggested .
If you want to move to using from the Debian repositories, delete or comment out the MariaDB entries in your sources.list file. Then upgrade as suggested .
If you are already using on your Debian 8 "Jessie" machine, you can choose to continue to use the MariaDB repositories or move to using the Debian repositories as with and 10.0. In either case, the upgrade will at most be just a minor upgrade from one version of to a newer version. In the case that you are already on the current version of MariaDB that exists in the Debian repositories or a newer one) MariaDB will not be upgraded during the system upgrade but will be upgraded when future versions of MariaDB are released.
You should always perform a compete backup of your data prior to performing any major system upgrade, even if MariaDB itself is not being upgraded!
If you have been using MariaDB Galera Cluster 5.5 or 10.0 on Debian 8 "Jessie" it is worth mentioning that is included by default in , there is no longer a need to install a separate mariadb-galera-server package.
To get better performance from MariaDB used in production environments, here are some suggested additions to which in Debian is at /etc/mysql/mariadb.d/my.cnf:
The reason for the above change is that MariaDB is using the newer storage engine for disk based temporary files instead of MyISAM. The main benefit of Aria is that it can cache both indexes and rows and thus gives better performance than MyISAM for large queries.
Unlike the old MySQL packages in Debian, onwards in Debian uses unix socket authentication on new installs to avoid root password management issues and thus be more secure and easier to use with provision systems of the cloud age.
This only affects new installs. Upgrades from old versions will continue to use whatever authentication and user accounts already existed. This is however good to know, because it can affect upgrades of dependant systems, typically e.g. require users to rewrite their Ansible scripts and similar tasks. The new feature is much easier than the old, so adjusting for it requires little work.
If you have comments or suggestions on things we can add or change to improve this page. Please add them as comments below.
The innodb-open-files variable defaults to the value of table-open-cache (400 is the default) if it is set to any value less than 10 so long as innodb-file-per-table is set to 1 or TRUE (the default). If innodb_file_per_table is set to 0 or FALSE and innodb-open-files
This page is licensed: CC BY-SA / Gnu FDL
ON
OFF
0
1000
300
400
20
300
ON
20
128K
256K
1M
4M
10
100
0
1024M
8M
128M
...
Added extended_keys=on, exists_to_in=on
8192
16384
0
1M
ON
OFF
8192
24576
OFF
ON
No longer affects replication of events in a Galera cluster.
empty
NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
0
10000
0
10000
0
10000
400
2000
500
1000
Removed by XtraDB
innodb-buffer-pool-restore-at-startup
Removed by XtraDB
innodb-buffer-pool-shm-checksum
Removed by XtraDB
innodb-buffer-pool-shm-key
Removed by XtraDB
innodb-checkpoint-age-target
Removed by XtraDB
innodb-dict-size-limit
Removed by XtraDB
innodb-doublewrite-file
Removed by XtraDB
innodb-fast-checksum
Renamed to
innodb-flush-neighbor-pages
Renamed to
innodb-ibuf-accel-rate
Removed by XtraDB
innodb-ibuf-active-contract
Removed by XtraDB
innodb-ibuf-max-size
Removed by XtraDB
innodb-import-table-from-xtrabackup
Removed by XtraDB
innodb-index-stats
Removed by XtraDB
innodb-lazy-drop-table
Removed by XtraDB
innodb-merge-sort-block-size
Removed by XtraDB
innodb-persistent-stats-root-page
Removed by XtraDB
innodb-read-ahead
Removed by XtraDB
innodb-recovery-stats
Removed by XtraDB
innodb-recovery-update-relay-log
Removed by XtraDB
innodb-stats-auto-update
Renamed to
innodb-stats-update-need-lock
Removed by XtraDB
innodb-sys-stats
Removed by XtraDB
innodb-table-stats
Removed by XtraDB
innodb-thread-concurrency-timer-based
Removed by XtraDB
innodb-use-sys-stats-table
Removed by XtraDB
Unused in 10.0+
xtradb-admin-command
Removed by XtraDB
When the server is shut down is the perfect time to take a backup of your databases.
Store a copy of the backup on external media or a different machine for safety.
mysql database with some new fields.Does a very quick check of all tables and marks them as compatible with MariaDB 10.1.
In most cases, this should be a fast operation (depending of course on the number of tables).
10300128M
256M
50
150
500
5000
5M
engine-condition-pushdown
Replaced with set optimizer_switch='engine_condition_pushdown=on'
innodb-adaptive-flushing-method
Removed by XtraDB
innodb-autoextend-increment
Removed by XtraDB
innodb-blocking-buffer-pool-restore
Removed by XtraDB
innodb-buffer-pool-pages
Removed by XtraDB
innodb-buffer-pool-pages-blob
Removed by XtraDB
48M
innodb-buffer-pool-pages-index
sudo service mysql restartsudo service mariadb restart[[mysqld]]
# Cache for disk based temporary files
aria_pagecache_buffer_size=128M
# If you are not using MyISAM tables directly (most people are using InnoDB)
key_buffer_size=64K