executa múltiplas instâncias do MySQL CentOS7

1

Eu preciso ter várias instâncias do MySQL em execução no meu PC. Eu fiz isso:

yum install mariadb-server mariadb => install mysql

mysql_install_db --datadir=/var/lib/mysql => use mysql_install_db to create datadir for the first instance

mysql_install_db --datadir=/var/lib/mysql2=> use mysql_install_db to create datadir for the second instance

chown -R mysql:mysql /var/lib/mysql chown owner-user:owner-group

chown -R mysql:mysql /var/lib/mysql2 chown owner-user:owner-group

Em seguida, modifiquei o arquivo my.cnf para várias instâncias:

[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

Então eu usei este comando mysqld_multi report e entendi:

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

Então usei mysqld_multi start e mysqld_multi report e recebi a mesma mensagem novamente:

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

Eu estava navegando pela Internet e descobri essas soluções várias instâncias e mysqld_multi . Mas eu não encontrei nenhuma chave para o meu problema. O que eu farei para executar minhas instâncias?

    
por fuser 19.01.2016 / 12:20

1 resposta

2

Descobri porque não consegui iniciar minhas duas instâncias. Era necessário comentar a seção [client] no arquivo /etc/my.cnf e escrevemos unit para /etc/systemd/system de maneira apropriada. Aqui está o jeito que eu fiz - espero que isso ajude qualquer um que encontre o problema no meu tópico:

Configuration of /etc/my.cnf file:

[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

Configuration of /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

Em seguida, systemctl enable mysqld_multi_service.service e systemctl start mysqld_multi_service.service . Depois de ALL , você pode se conectar à primeira instância usando este comando:

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

ou para a segunda instância:

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

    
por 21.01.2016 / 16:29