동일한 서버에 여러 개의 MySQL을 설치하는 방법

WBOY
풀어 주다: 2023-05-29 12:10:27
앞으로
2705명이 탐색했습니다.

1. 설치 전 준비 사항

MySQL 여러 인스턴스를 설치하기 전에 다음 사항을 준비해야 합니다.

  1. 여러 개의 MySQL 설치 패키지를 준비하고, MySQL 공식 사이트에서 사용자 환경에 맞는 패키지를 다운로드할 수 있습니다. 웹사이트 다운로드 버전: https://dev.mysql.com/downloads/

  2. 여러 MySQL 데이터 디렉토리를 준비합니다. 다양한 MySQL 인스턴스를 지원하기 위해 다양한 디렉토리를 생성할 수 있습니다(예: /data/mysql1, /data/ mysql2 등). .

  3. 각 MySQL 인스턴스에 대해 해당 MySQL 설치 경로와 데이터 디렉터리 권한을 가진 독립적인 MySQL 사용자를 구성합니다.

2. 바이너리 패키지를 기반으로 여러 MySQL 인스턴스를 설치합니다.

다음은 바이너리 패키지를 기반으로 여러 MySQL 인스턴스를 설치하는 단계입니다.

  1. MySQL 설치 패키지의 압축을 풀고 이름을 바꿉니다.

통합 여러 MySQL 인스턴스 설치 패키지의 압축을 푼 후 mysql1, mysql2 등과 같이 쉽게 구별할 수 있도록 다른 이름으로 이름을 바꿀 수 있습니다.

$ 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. 데이터 디렉터리 초기화

mysql_install_db 명령을 사용하여 초기화한 후 각 MySQL 인스턴스 자체적인 독립 데이터 디렉터리가 있어야 합니다. 다음은 mysql1 및 mysql2 인스턴스를 초기화하는 명령입니다.

$ 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. 각각에 대해 MySQL 서비스 설치

MySQL 인스턴스, MySQL 서비스를 설치하려면 mysqld_safe 명령을 사용해야 합니다. 다음은 mysql1 및 mysql2 인스턴스를 설치하는 명령입니다.

$ 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. MySQL 인스턴스 구성

각 MySQL 인스턴스마다 독립적인 구성 파일인 my.cnf가 필요합니다. 다음은 my.cnf 파일의 예입니다:

[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

다음은 mysql2 인스턴스 구성입니다

[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. MySQL 사용자 구성

다음 명령을 사용하여 MySQL 사용자를 생성하고 해당 디렉터리 권한을 부여합니다.

$ 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. Docker 컨테이너 기반 다중 MySQL 인스턴스 설치

  1. Docker 환경 준비

먼저 서버에 Docker 환경을 설치하고 MySQL의 Docker 이미지를 가져와야 합니다. 최신 버전의 MySQL 이미지를 가져오려면:

$ docker pull mysql/mysql-server:latest

  1. MySQL 컨테이너 시작

여러 MySQL 컨테이너를 시작하여 다중 인스턴스 요구 사항을 달성할 수 있으며 다음을 수행할 수 있습니다. 다양한 포트, 데이터 볼륨 및 구성 파일을 지정하여 다양한 인스턴스를 구별합니다. 다음은 두 개의 서로 다른 MySQL 인스턴스를 시작하는 명령의 예입니다.

$ 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. MySQL 인스턴스 구성

다른 컨테이너에 보관 다른 데이터 로드 각 데이터 볼륨에는 특정 구성 파일 my.cnf가 포함되어 있습니다. 다음은 my.cnf의 예시입니다.

다음은 mysql1 인스턴스의 구성입니다

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

참고: 이 설정은 MySQL 5.7 이하에서만 유효합니다.

symbolic-links = 0

Customized MySQL 구성

[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

다음은 mysql2 인스턴스 구성입니다

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

Customized MySQL 구성

[ 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. 다중 MySQL 인스턴스 사용

다중 MySQL 인스턴스를 구성한 후 해당 포트에 접속하여 해당 데이터베이스 인스턴스 이름을 사용하고 해당 사용자를 구성할 수 있습니다. 여러 MySQL 인스턴스를 사용하려면:

mysql -h localhost -u 사용자 이름1 -p -P 3306 -D 데이터베이스1
mysql -h localhost -u 사용자 이름2 -p -P 3307 -D 데이터베이스2

위 내용은 동일한 서버에 여러 개의 MySQL을 설치하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿