단일 서버에 여러 MySQL 인스턴스를 설치하는 데비안 방식은 무엇입니까?


9

단일 서버에서 여러 MySQL 인스턴스를 설정하는 '데비안 방식'을 알고 있습니까? 서버는 여러 원격 데이터베이스에서 복제 된 데이터를 수신합니다.

mysqlsandbox 와 같은 스크립트를 사용할 수는 있지만 데비안 패키지를 고수하고 향후 많은 문제없이 설정을 업그레이드 할 수 있기를 원합니다. 또 다른 솔루션은 mysqlmanager 입니다. MySQL 5.1에서는 작동하지만 더 이상 사용되지 않으며 5.5에서는 더 이상 릴리스되지 않습니다.

그렇다면 단일 데비안 서버에서 여러 개의 MySQL 인스턴스를 실행하는 가장 좋은 방법은 무엇입니까?


오늘날에는 도커를 사용할 수 있습니다.
ALex_hha

답변:


12

mysqld_multimy.cnf를 올바르게 실행 하고 설정하는 것만 큼 ​​간단 합니다. mysqld_multi패키지 프릴이 아닌 mysql 배포의 일부입니다.

패치 메이크업의에 /usr/share/mysql/mysqld_multi.server에서 사용하기에 적합 /etc/init.d하고 또 다른 패치 만들기 mysqld_multi에 사용하는 파일 /etc/mysql/conf.d.

다음 mysql_install_db과 같은 명령을 사용하여 새 인스턴스의 MySQL 데이터 디렉토리를 초기화 할 수 있습니다 .

mysql_install_db --datadir=/var/lib/mysql2

새로 만든 인스턴스의 루트 비밀번호를 변경하는 것을 잊지 마십시오.

mysqladmin --port 3307 --user=root password 'new-password'

감사; 실제로 사용합니까? 어떤 공포 이야기 / 힌트?
pQd

1
내 공포 이야기는 데비안의 mysql init 스크립트로 인해 2 일 동안의 데이터 복구입니다. 종료에 너무 오래 걸리기 때문에 mysql이 정상적으로 종료되지 않았습니다. 그 이후로 데비안 mysql 패키지를 사용하지 않고 Percona의 바이너리 배포판과 initscript 만 사용합니다
Gabor Vincze

@GaborVincze-mysqld_multi 설정 또는 '정규'단일 MySQL 인스턴스 설치에 있습니까?
pQd

정기적 인 설치였습니다. 5.1
Gabor Vincze 2014 년

1
실제로 mysqld_multi를 사용합니다. 가장 어려운 부분은 mysqld_multi / mysqladmin을 사용하여 /etc/init.d/mysqld restart와 비교하여 인스턴스를 시작 / 종료해야한다는 것입니다. 쉽게 만들 수있는 미리 준비된 스크립트는 많지 않습니다. 일단 마스터하면 낡은 모자가되고 복구, 복제 지연 등 인스턴스를 스핀 업하는 매우 편리한 방법입니다.
2

3

데비안 8에서는 Systemd 메커니즘을 사용할 수 있습니다 : 더 이상 필요 없음 mysqld_multi.

참고 : MariaDB 버전을 사용합니다! '클래식'MySQL 패키지에서 작동하는지 확실하지 않습니다.

보낸 사람 /lib/systemd/system/mariadb@.service:

mariadb의 다중 인스턴스 버전. 한 번에 여러 버전을 실행하는 경우에 적합합니다. galera를 부트 스트랩하기 위해 mariadb @ bootstrap에도 사용됩니다.

구성 파일 /etc/mysql/conf.d/ {instancename} .cnf를 만듭니다.

systemctl start mariadb@{instancename}.server로 시작하십시오.

따라서 파일을 만들고 /etc/mysql/conf.d/myserver2.cnf새 pid / socket / datadir 파일과 네트워크 포트를 지정하십시오.

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld-server2.pid
socket      = /var/run/mysqld/mysqld-server2.sock
port        = 3307
basedir     = /usr
datadir     = /var/lib/mysql-server2
tmpdir      = /tmp

편집 : 첫 번째 MySQL 인스턴스가 !includedir /etc/mysql/conf.d/*맨 아래 에이 구성 파일을 읽지 않도록주의하십시오 /etc/mysql/my.cnf. 이 경우라면, 교체 !includedir!include각각 설정 파일이 아닌 다른 곳의 myserver2.cnf의 :

#!includedir /etc/mysql/conf.d/*
!include /etc/mysql/conf.d/conf1.cnf
!include /etc/mysql/conf.d/confX.cnf

MySQL의 공식 문서는 이름이 표시 [mysqld][mysqld@server2]( https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html#systemd-multiple-mysql-instances )하지만이 MariaDB와 함께 일을하지 않습니다 . 그냥하자 [mysqld].

새 데몬을 시작하기 전에 datadir 및 필요한 파일을 작성하는 것을 잊지 마십시오.

mkdir /var/lib/mysql-server2
chown mysql:mysql /var/lib/mysql-server2
mysql_install_db --datadir=/var/lib/mysql-server2

또한 systemd 데몬 구성을 다시로드하십시오.

systemctl daemon-reload

부팅 할 때이 데몬을 시작하려면 :

systemctl enable mariadb@server2

시작하려면 :

service mariadb@server2 start

주요 (인스턴스가없는) mysql은을 읽습니다 /etc/my.cnf.
Michael Hampton

내 대답을 편집했습니다. 사실, 첫 번째 인스턴스가와 함께 server2.cnf 파일을 읽은 것으로 보입니다 !includedir /etc/mysql/conf.d/*. 더 나은 보안을 위해 각 conf.d파일을 수동으로 포함했습니다
Worst
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.