MySQL CentOS7의 여러 인스턴스 실행

MySQL CentOS7의 여러 인스턴스 실행

내 PC에서 여러 MySQL 인스턴스를 실행해야 합니다. 나는 이걸했다:

yum install mariadb-server mariadb=>mysql을 설치한다

mysql_install_db --datadir=/var/lib/mysql=> 첫 번째 인스턴스에 대한 datadir을 생성하려면 mysql_install_db를 사용하십시오.

mysql_install_db --datadir=/var/lib/mysql2=> 두 번째 인스턴스에 대한 datadir을 생성하려면 mysql_install_db를 사용하십시오.

chown -R mysql:mysql /var/lib/mysqlchown 소유자 사용자:소유자 그룹

chown -R mysql:mysql /var/lib/mysql2chown 소유자 사용자:소유자 그룹

그런 다음 여러 인스턴스에 대해 my.cnf 파일을 수정했습니다.

[client]
#password       = your_password
port            = 3306
socket          = /var/lib/mysql/mysql.sock

# Here follows entries for some specific programs

# The MariaDB server
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin

[mysqld0]
port            = 3306
socket          = /var/lib/mysql/mysql.sock
pid-file        = /var/run/mysqld/mysqld.pid
datadir         = /var/lib/mysql
server-id = 1
log-bin = mysql-bin
binlog_format = mixed

[mysqld2]
port            = 3307
socket          = /var/lib/mysql2/mysql.sock
pid-file        = /var/run/mysqld/mysqld2.pid
datadir         = /var/lib/mysql2
server_id       = 2
skip-log-bin

그런 다음 이 명령을 사용하여 mysqld_multi report다음을 얻었습니다.

Reporting MySQL servers
MySQL server from group: mysqld0 is not running
MySQL server from group: mysqld2 is not running

그런 다음 mysqld_multi startand를 사용하여 mysqld_multi report동일한 메시지를 다시 받습니다 .

Reporting MySQL servers
MySQL server from group: mysqld0 is not running
MySQL server from group: mysqld2 is not running

웹서핑하다가 이런 해결방법을 찾았어요여러 인스턴스그리고mysqld_multi. 하지만 문제의 핵심을 찾지 못했습니다. 인스턴스를 실행하려면 어떻게 해야 합니까?

답변1

두 인스턴스를 모두 시작할 수 없는 이유를 알아냈습니다. /etc/my.cnf파일의 [client] 부분에 주석을 달고 unit올바른 방식으로 작성 해야 합니다 . /etc/systemd/system내가하는 방법은 다음과 같습니다.

/etc/my.cnf 파일 구성:

[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin

[mysqld1]
user    = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port=3306
datadir=/var/lib/mysql
server_id=1
log-bin=mysql-bin
binlog_format=mixed

[mysqld2]
user = mysql
pid-file = /var/run/mysqld/mysqld2.pid
socket = /var/run/mysqld/mysqld2.sock
port=3307
datadir=/var/lib/mysql2
server_id=2
skip-log-bin

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

/etc/systemd/system/mysqld_multi_service.service 구성:

[Unit]
Description= mysqld_multi_service

[Service]
Type=simple
ExecStart=/usr/bin/mysqld_multi start
ExecStop=/usr/bin/mysqld_multi stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

그리고 .systemctl enable mysqld_multi_service.servicesystemctl start mysqld_multi_service.service뒤쪽에모두이 단계를 수행한 후 다음 명령을 사용하여 첫 번째 인스턴스에 연결할 수 있습니다.

mysql -u root -S /var/run/mysqld/mysqld.sock

또는 두 번째 인스턴스로:

mysql -u root -S /var/run/mysqld/mysqld2.sock

답변2

~에서MySQL 문서, mysql_multi를 더 이상 사용해서는 안 되는 것 같습니다:

systemd는 systemd 지원이 설치된 플랫폼에서 여러 MySQL 인스턴스를 관리할 수 있으므로 mysqld_multi 및 mysqld_multi.server는 불필요하며 설치되지 않습니다. 이는 RPM 플랫폼의 MySQL 5.7.13과 Debian 플랫폼의 MySQL 5.7.19 모두에 해당됩니다.

대신 systemd를 사용하여 구성 파일에 설정한 인스턴스를 관리해야 합니다 my.cnf. Configuring Multiple MySQL Instances Using systemd제공된 링크의 섹션을 참조하세요 .

관련 정보