Problema de configuração do MySQL Socket em my.cnf

3

Eu tenho um problema que está causando muito "tempo no banco de dados" no meu aplicativo.

O banco de dados é o Percona MySQL 5.5.35.

O aplicativo funciona perfeitamente e pode ler / gravar do banco de dados muito bem. A questão é que tenho tempos de resposta do DB extraordinariamente longos que definitivamente não são tempo gasto na execução das consultas, que são todas simples e armazenadas em cache.

Por exemplo, vou aleatoriamente obter tempos de resposta em vários segundos, e outras vezes, leva apenas alguns milissegundos. Há uma configuração lenta de logs de consulta e nenhuma consulta é lenta, são inserções simples de dados minúsculos e cerca de 80% de leituras, o banco de dados inteiro tem apenas 20 MB, é um fórum da Internet.

Tenhocertezadequeoproblemaestánosoquete,jáquenãopossoterosoqueteespecificadonaseçãomysqlddomy.cnf.Seeufizerisso,receboumerroaoreiniciarobancodedadosdizendo:

ERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket'/var/lib/mysql/mysql.sock'(2)

Porexemplo,aquiestáacópiaativadomy.cnf,compartesirrelevantesremovidas:

[mysql]#CLIENT#port=3306socket=/var/lib/mysql/mysql.sock[mysqld]#General#default-storage-engine=InnoDB#Databasereplication#server-id=1895149log-bin=mysql-binlog-error=mysql-bin.errbinlog_do_db=reefbase1#MyISAM#key-buffer-size=32Mmyisam-recover=FORCE,BACKUP

Observequeaportaeosoquetenãoestãoespecificadosnaseçãomysqld?

Seeualterarissopara:

[mysql]#CLIENT#port=3306socket=/var/lib/mysql/mysql.sock[mysqld]port=3306socket=/var/lib/mysql/mysql.sock#General#default-storage-engine=InnoDB#Databasereplication#server-id=1895149log-bin=mysql-binlog-error=mysql-bin.errbinlog_do_db=reefbase1#MyISAM#key-buffer-size=32Mmyisam-recover=FORCE,BACKUP

Queécomoeuvejoumaeoutravez,my.cnfparaserconfigurado,omeuservidornãoconsegueiniciarcomoerro"não é possível conectar".

Qualquer conselho seria muito apreciado.

    
por i-CONICA 18.03.2014 / 14:35

2 respostas

4

O primeiro ponto a ser lembrado aqui é que muitos clientes mysql (incluindo php) irão padronizar a comunicação de estilo de socket unix se o cliente estiver configurado para usar localhost. Se o seu servidor não está configurando corretamente este soquete, então os clientes podem estar tentando se conectar ao soquete e falhar.

O restante é resumido em nossa discussão nos comentários.

Em qualquer caso, desde que seu servidor não foi configurado para criar um socket, e o cliente apontou um local incomum para um sistema Ubuntu, eu acho que você deveria tentar mudar isso primeiro para apontar para o local padrão do Debian / Ubuntu arquivos pid e socket. Qual é /var/run/mysqld/mysqld.sock ou mais recentemente /run/mysqld/mysqld.sock .

O outro local deveria, teoricamente, funcionar, embora eu esteja supondo que algo não seja bem escrito, tanto quanto permissões ou algo assim.

    
por 18.03.2014 / 22:23
0

Meu problema foi um pouco diferente, mas essa pergunta apareceu pesquisando. E conectar-se ao TCP em vez de soquetes resolveu meu problema. Também ajuda os outros.

Ou seja. na seção de seu cliente:

host=127.0.0.1

e / ou

protocol=tcp
    
por 19.10.2015 / 21:03