Home > Database > Mysql Tutorial > body text

How to install multiple MySQL on the same server

WBOY
Release: 2023-05-29 12:10:27
forward
2706 people have browsed it

1. Preparations before installation

Before installing multiple instances of MySQL, the following preparations are required:

  1. Prepare multiple MySQL installation packages. You can download the version suitable for your environment from the MySQL official website: https://dev.mysql.com/downloads/

  2. Prepare multiple MySQL data directories. You can create different directories to support different MySQL instances, such as: /data/mysql1, /data/mysql2, etc.

  3. For each MySQL instance, configure an independent MySQL user, which has the corresponding MySQL installation path and data directory permissions.

2. Install multiple MySQL instances based on binary packages

The following are the steps to install multiple MySQL instances based on binary packages:

  1. Extract the MySQL installation package and rename it

After decompressing multiple MySQL installation packages, you can rename them to different names for easy distinction. For example: mysql1, mysql2, etc.

$ tar -zxvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.gz
$ mv mysql-8.0.22-linux-glibc2.12-x86_64 mysql1
$ tar -zxvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.gz
$ mv mysql-8.0.22-linux-glibc2.12-x86_64 mysql2

  1. Initialize data directory

After initializing using the mysql_install_db command, each MySQL instance must have its own independent data directory. The following are the commands to initialize mysql1 and mysql2 instances:

$ cd mysql1
$ bin/mysqld --initialize --user=mysql --basedir=/share/opt/mysql1 --datadir=/data /mysql1
$ cd ../mysql2
$ bin/mysqld --initialize --user=mysql --basedir=/share/opt/mysql2 --datadir=/data/mysql2

  1. Install MySQL service

For each MySQL instance, you need to use the mysqld_safe command to install the MySQL service. The following is the command to install mysql1 and mysql2 instances:

$ cp support-files/mysql.server /etc/init.d/mysql1
$ cp support-files/mysql.server /etc/init.d/mysql2
$ chmod x /etc/init.d /mysql1
$ chmod x /etc/init.d/mysql2
$ chkconfig --add mysql1
$ chkconfig --add mysql2
$ service mysql1 start
$ service mysql2 start

  1. Configure MySQL instance

For each MySQL instance, an independent configuration file my.cnf is required. You can create a my in the MySQL installation directory. .cnf file, the following is an example of my.cnf file:

[mysqld]
datadir=/data/mysql1
socket=/share/tmp/mysql1.sock
port = 3306
user=mysql
log-error=/data/mysql1/mysql.err
pid-file=/share/tmp/mysql1.pid

The following is the configuration of the mysql2 instance

[mysqld2]
datadir=/data/mysql2
socket=/share/tmp/mysql2.sock
port = 3307
user=mysql
log-error=/data /mysql2/mysql.err
pid-file=/share/tmp/mysql2.pid

  1. Configure MySQL user

Use the following Command to create a MySQL user and grant corresponding directory permissions:

$ useradd -r -g mysql -s /bin/false mysql1
$ useradd -r -g mysql -s /bin/false mysql2
$ chown -R mysql:mysql /data/mysql1
$ chown -R mysql:mysql /data/mysql2
$ chown -R mysql:mysql /share/opt/mysql1
$ chown -R mysql :mysql /share/opt/mysql2

3. Install multiple MySQL instances based on Docker containers

  1. ##Prepare the Docker environment

You need to install the Docker environment on the server first and pull the Docker image of MySQL. The following is the command to pull the latest version of the MySQL image:

$ docker pull mysql/mysql-server: latest

  1. Start MySQL container

You can meet the needs of multiple instances by starting multiple MySQL containers, and you can specify different ports and data Volumes and configuration files to differentiate between different instances. The following is an example command to start two different MySQL instances:

$ docker run --name=mysql1 -d \

-e MYSQL_ROOT_PASSWORD=your_password \
-p 3306:3306 \
-v /data/mysql1:/var/lib/mysql \
-v /share/opt/mysql1:/etc/mysql \
mysql/mysql-server:latest
$ docker run -- name=mysql2 -d \
-e MYSQL_ROOT_PASSWORD=your_password \
-p 3307:3306 \
-v /data/mysql2:/var/lib/mysql \
-v /share/opt /mysql2:/etc/mysql \
mysql/mysql-server:latest

  1. Configure MySQL instance

In different containers Mount different data volumes respectively, and each data volume contains a specific configuration file my.cnf. The following is an example of my.cnf:

The following is the configuration of the mysql1 instance

[mysqld]

datadir = /var/lib/mysql
socket = /var/run/ mysqld/mysqld.sock

Note: This setting only takes effect for MySQL 5.7 or earlier versions

symbolic-links = 0

Customized MySQL configuration

[mysqld]

datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
user = mysql
log-error = / var/lib/mysql/mysql.err
pid-file = /var/run/mysqld/mysqld.pid

The following is the configuration of the mysql2 instance

[mysqld2]
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
symbolic-links = 0

Customized MySQL configuration

[mysqld2]
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
port = 3307
user = mysql
log-error = /var/lib/mysql/mysql.err
pid-file = /var/run/mysqld/mysqld.pid

  1. Using multiple MySQL instances

After configuring multiple MySQL instances, you can connect to the corresponding port, use the corresponding database instance name and configure the corresponding user To use multiple MySQL instances:

mysql -h localhost -u username1 -p -P 3306 -D database1
mysql -h localhost -u username2 -p -P 3307 -D database2

The above is the detailed content of How to install multiple MySQL on the same server. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template