내 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/mysql
chown 소유자 사용자:소유자 그룹
chown -R mysql:mysql /var/lib/mysql2
chown 소유자 사용자:소유자 그룹
그런 다음 여러 인스턴스에 대해 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 start
and를 사용하여 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.service
systemctl 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
제공된 링크의 섹션을 참조하세요 .