Multi Versions

Running multiple versions of MySQL on the same host without using containers

Install MySQL 5.6, 5.7, 8.0 with generic binaries

https://dev.mysql.com/downloads/mysql/

Check version of glibc

ldd --version || yum list glibc

Install prerequisites

yum install libaio perl-Data-Dumper # MySQL 5.6 requires perl module

Get the archives with precompibled binaries

curl -OL https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz

curl -OL https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

curl -OL https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz

Decompress archives

tar -xf /opt/mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz -C /usr/local/

tar -xzf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

tar -xzf mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

Create base directories per versions

mkdir -pv /var/lib/{mysql80,mysql57,mysql56}

Change owner:group of directories

chown -Rv mysql:mysql /var/lib/{mysql80,mysql57,mysql56}

Initialize data directories

/usr/local/mysql-8.0.21-linux-glibc2.17-x86_64-minimal/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql-8.0.21-linux-glibc2.17-x86_64-minimal --datadir=/var/lib/mysql80

/usr/local/mysql-5.7.30-linux-glibc2.12-x86_64/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql-5.7.30-linux-glibc2.12-x86_64 --datadir=/var/lib/mysql57

/usr/local/mysql-5.6.48-linux-glibc2.12-x86_64/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.6.48-linux-glibc2.12-x86_64 --datadir=/var/lib/mysql56

ln -sv /usr/local/mysql-8.0.21-linux-glibc2.17-x86_64-minimal/bin/mysqld_multi /usr/bin/mysqld_admin

Configure my.cnf

SELinux

During the inial setup/configuration, I disabled SELinux and uninstalled polkit. You may refer the Dealing with SELinux section of my Multi Instances project.

Last updated

Was this helpful?