web-dev-qa-db-fra.com

Impossible de se connecter au serveur MySQL local via le socket '/var/run/mysqld/mysqld.sock' (2 "Aucun fichier ou répertoire") lors de la configuration du cluster

J'ai 3 nœuds MariaDB. Vous souhaitez configurer le cluster. Spécifié dans gcomm: // dans my.cnf ips de tous les membres en cluster selon this .

Et ajouté ?pc.wait_prim=no au moment de gcomm: // ip1, ip2, ip3

Ensuite le processus mysqld démarre sur chaque VM, mais quand j'essaye de me connecter avec mysql -uroot -ppass pour exécuter

SET GLOBAL wsrep_provider_options="pc.bootstrap=1";

erreur apparaît:

Impossible de se connecter au serveur MySQL local via le socket '/var/run/mysqld/mysqld.sock' (2 "Aucun fichier ou répertoire de ce type")

error.log de chaque processus montre:

2018-02-01 15:13:23 140529975699392 [Note] WSREP: gcomm: connecting to group 'my_wsrep_cluster', peer '10.0.0.42:,10.0.0.44:,10.0.0.43:'
2018-02-01 15:13:23 140529975699392 [Note] WSREP: (71d7b5ed, 'tcp://0.0.0.0:4567') connection established to 71d7b5ed tcp://10.0.0.44:45
2018-02-01 15:13:23 140529975699392 [Warning] WSREP: (71d7b5ed, 'tcp://0.0.0.0:4567') address 'tcp://10.0.0.44:4567' points to own listeddress, blacklisting
2018-02-01 15:13:23 140529975699392 [Note] WSREP: (71d7b5ed, 'tcp://0.0.0.0:4567') connection established to 6ac0d002 tcp://10.0.0.42:45
2018-02-01 15:13:23 140529975699392 [Note] WSREP: (71d7b5ed, 'tcp://0.0.0.0:4567') turning message relay requesting on, nonlive peers:
2018-02-01 15:13:23 140529975699392 [Note] WSREP: (71d7b5ed, 'tcp://0.0.0.0:4567') connection established to 6bd1b1f9 tcp://10.0.0.43:45
2018-02-01 15:13:23 140529975699392 [Note] WSREP: gcomm: connected
2018-02-01 15:13:23 140529975699392 [Note] WSREP: Changing maximum packet size to 64500, resulting msg size: 32636
2018-02-01 15:13:23 140529975699392 [Note] WSREP: Shifting CLOSED -> OPEN (TO: 0)
2018-02-01 15:13:23 140529975699392 [Note] WSREP: Opened channel 'my_wsrep_cluster'
2018-02-01 15:13:23 140529975699392 [Note] WSREP: Waiting for SST to complete.
2018-02-01 15:13:23 140529635424000 [Note] WSREP: declaring 6ac0d002 at tcp://10.0.0.42:4567 stable
2018-02-01 15:13:23 140529635424000 [Note] WSREP: declaring 6bd1b1f9 at tcp://10.0.0.43:4567 stable
2018-02-01 15:13:23 140529635424000 [Warning] WSREP: no nodes coming from prim view, prim not possible
2018-02-01 15:13:23 140529635424000 [Note] WSREP: view(view_id(NON_PRIM,6ac0d002,2) memb {
        6ac0d002,0
        6bd1b1f9,0
        71d7b5ed,0
} joined {
} left {
} partitioned {
})
2018-02-01 15:13:23 140529627031296 [Note] WSREP: New COMPONENT: primary = no, bootstrap = no, my_idx = 2, memb_num = 3
2018-02-01 15:13:23 140529627031296 [Note] WSREP: Flow-control interval: [28, 28]
2018-02-01 15:13:23 140529627031296 [Note] WSREP: Trying to continue unpaused monitor
2018-02-01 15:13:23 140529627031296 [Note] WSREP: Received NON-PRIMARY.
2018-02-01 15:13:23 140529975253760 [Note] WSREP: New cluster view: global state: :-1, view# -1: non-Primary, number of nodes: 3, my ind protocol version -1
2018-02-01 15:13:23 140529975253760 [Note] WSREP: wsrep_notify_cmd is not defined, skipping notification.
2018-02-01 15:13:26 140529635424000 [Note] WSREP: (71d7b5ed, 'tcp://0.0.0.0:4567') connection to peer 71d7b5ed with addr tcp://10.0.0.44timed out, no messages seen in PT3S
2018-02-01 15:13:26 140529635424000 [Note] WSREP: (71d7b5ed, 'tcp://0.0.0.0:4567') turning message relay requesting off

Pourquoi cela se produit-il et qu'est-ce qui ne va pas?

3
rok

Cela m'est arrivé après un redémarrage ... Le fichier socket n'a pu être trouvé nulle part. Dans mon cas, il aurait dû être dans: /var/run/mysqld/mysqld.sock

Dans mon cas, je l'ai corrigé en faisant:

apt-get update
apt-get upgrade

Après ces étapes, le socket est apparu dans le répertoire mysqld et j'ai pu démarrer mysql (mariaDB).

2
user2677034

Vérifiez vos fichiers de configuration /etc/my.cnf et /etc/my.cnf.d/server.cnf et recherchez le paramètre socket. Assurez-vous que c'est la même chose pour le client et le serveur. Un bon emplacement pour le paramètre socket est dans la section [client-serveur] dans /etc/my.cnf. Le fichier socket est créé par le serveur MariaDB au démarrage.

Notez qu'il existe d'autres endroits où les fichiers de configuration MariaDB pourraient résider, et ceux-ci pourraient potentiellement remplacer vos paramètres dans les deux fichiers mentionnés ci-dessus. Pour plus de détails, voir cette page dans le KB de MariaDB.

Notez également que vous pourrez peut-être vous connecter à MariaDB via TCP plutôt que via le socket. Vous pouvez spécifier que vous souhaitez utiliser TCP plutôt que le socket) avec mysql ... --protocol=TCP. Si cela réussit, vous pouvez alors faire SHOW VARIABLES LIKE 'socket'; pour savoir où se trouve (ou devrait se trouver) le fichier socket. Vous pouvez ensuite vous connecter avec mysql ... --socket=/path/to/file.sock ou modifiez les fichiers de configuration pour que le client les lise correctement.

Dans certains cas, vous pouvez également déterminer l'emplacement du fichier socket utilisé en répertoriant les processus: ps -ef | grep mysql qui pourrait produire quelque chose comme

root     23900     1  0 13:27 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/vserv-03.pid
mysql    24402 23900  0 13:27 ?        00:00:50 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --wsrep_on=ON --wsrep_provider=/usr/lib64/galera/libgalera_smm.so --log-error=/var/lib/mysql/vserv-03.err --open-files-limit=65535 --pid-file=/var/lib/mysql/vserv-03.pid --socket=/var/lib/mysql/mysql.sock --wsrep_start_position=98b22222-aa16-1114-ba1a-886633c6b8eb:55133333

Comme vous pouvez le voir ici (faites défiler vers la droite), il utilise un socket à /var/lib/mysql/mysql.sock.

EDIT: Un très bon moyen de trouver l'emplacement du fichier socket est:

netstat -ln | grep mysql
unix  2      [ ACC ]     STREAM     LISTENING     22418    /var/lib/mysql/mysql.sock 
1
dbdemon