[Debian] Coupure systèmatique de mysql

Résolu
Bonjour,
Je dispose d'un serveur sous debian, cependant je rencontre quelques problèmes avec ce serveur.
Il arrive régulièrement que mysql bug et fasse bugger tout le serveur, je suis alors obligé de redémarrer le serveur via mon panel d'hébergement.
Après le redémarrage du serveur, mysql ne fonctionne pas et m'affiche l'erreur suivante : "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) [2002]". Je suis obligé de relancer manuellement mysql en espérant que ça marche.
Parfois après avoir démarrer mysql manuellement, j'obtiens l'erreur "Checking for corrupt, not cleanly closed and upgrade needing tables.". Je suis obligé de tuer les processus existants pour que ça marche.
Auriez-vous une idée du problème ?
C'est d'autant plus embêtant que je suis loin d'être disponible 24h/24 pour redémarrer le serveur et qu'ainsi mon site peut rester hors-ligne pendant plusieurs heures.
Merci d'avance.
Configuration: Debian
Windows XP
Firefox 3.0.5

43 réponses

Résumé de la discussion

Des dysfonctionnements MySQL sur un serveur Debian provoquent des plantages du service et empêchent la connexion locale via le socket '/tmp/mysql.sock' (2) après chaque redémarrage. Des réponses explorent la coexistence de deux instances ou daemons MySQL, avec des scripts d'init différents et des liens système qui démarrent simultanément, ce qui complique la résolution. Des essais préconisent de supprimer l'installation MySQL générant les liens automatiques et de nettoyer les scripts init, afin d'avoir une seule instance MySQL gérée par le paquet Debian. Pour des vérifications telles que l'arrêt des services, l'examen du chemin de socket et la recherche de processus résiduels, il devient possible d'éviter les démarrages concurrents et les pertes de liaison.

Bobot (l’IA à votre service)
  1. pour le demarrage, est ce que le script mysql est correctement rentrer dans les scripts de demarrage ? man update-rc.d

    puor le Checking for corrupt, not cleanly closed and upgrade needing tables
    ce n'est pas une erreur.
    1. Je ne comprends pas ce qu'il faut faire avec la commande "man update-rc.d", elle affiche une sorte d'aide avec les différentes options utilisables.
      D'accord pour le message "Checking for corrupt, not cleanly closed and upgrade needing tables.", je saurais pour la prochaine fois.
      1. Modérateur
        Salut,

        Affiche le résultat de
        find /etc/ -name '*mysql*' 2>/dev/null
        cat /etc/mysql/my.cnf
        1. Salut,

          website:~# find /etc/ -name '*mysql*' 2>/dev/null
          /etc/logrotate.d/mysql-server
          /etc/mysql
          /etc/rc4.d/S18mysql-ndb
          /etc/rc4.d/S17mysql-ndb-mgm
          /etc/rc4.d/S20mysqld
          /etc/rc4.d/S19mysql
          /etc/rc1.d/K22mysql-ndb
          /etc/rc1.d/K23mysql-ndb-mgm
          /etc/rc1.d/K20mysqld
          /etc/rc1.d/K21mysql
          /etc/init.d/mysql
          /etc/init.d/mysql-ndb-mgm
          /etc/init.d/mysqld
          /etc/init.d/mysql-ndb
          /etc/rc3.d/S18mysql-ndb
          /etc/rc3.d/S17mysql-ndb-mgm
          /etc/rc3.d/S20mysqld
          /etc/rc3.d/S19mysql
          /etc/logcheck/ignore.d.paranoid/mysql-server-5_0
          /etc/logcheck/ignore.d.workstation/mysql-server-5_0
          /etc/logcheck/ignore.d.server/mysql-server-5_0
          /etc/php5/conf.d/mysql.ini
          /etc/php5/conf.d/pdo_mysql.ini
          /etc/php5/conf.d/mysqli.ini
          /etc/rc6.d/K22mysql-ndb
          /etc/rc6.d/K23mysql-ndb-mgm
          /etc/rc6.d/K20mysqld
          /etc/rc6.d/K21mysql
          /etc/rc2.d/S18mysql-ndb
          /etc/rc2.d/S17mysql-ndb-mgm
          /etc/rc2.d/S20mysqld
          /etc/rc2.d/S19mysql
          /etc/rc5.d/S18mysql-ndb
          /etc/rc5.d/S17mysql-ndb-mgm
          /etc/rc5.d/S20mysqld
          /etc/rc5.d/S19mysql
          /etc/rc0.d/K22mysql-ndb
          /etc/rc0.d/K23mysql-ndb-mgm
          /etc/rc0.d/K20mysqld
          /etc/rc0.d/K21mysql
          website:~# cat /etc/mysql/my.cnf
          #
          # The MySQL database server configuration file.
          #
          # You can copy this to one of:
          # - "/etc/mysql/my.cnf" to set global options,
          # - "~/.my.cnf" to set user-specific options.
          #
          # One can use all long options that the program supports.
          # Run program with --help to get a list of available options and with
          # --print-defaults to see which it would actually understand and use.
          #
          # For explanations see
          # https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html

          # This will be passed to all mysql clients
          # It has been reported that passwords should be enclosed with ticks/quotes
          # escpecially if they contain "#" chars...
          # Remember to edit /etc/mysql/debian.cnf when changing the socket location.
          [client]
          port = 3306
          socket = /var/run/mysqld/mysqld.sock

          # Here is entries for some specific programs
          # The following values assume you have at least 32M ram

          # This was formally known as [safe_mysqld]. Both versions are currently parsed.
          [mysqld_safe]
          socket = /var/run/mysqld/mysqld.sock
          nice = 0

          [mysqld]
          #
          # * Basic Settings
          #
          user = mysql
          pid-file = /var/run/mysqld/mysqld.pid
          socket = /var/run/mysqld/mysqld.sock
          port = 3306
          basedir = /usr
          datadir = /var/lib/mysql
          tmpdir = /tmp
          language = /usr/share/mysql/english
          skip-external-locking
          #
          # Instead of skip-networking the default is now to listen only on
          # localhost which is more compatible and is not less secure.
          bind-address = 127.0.0.1
          #
          # * Fine Tuning
          #
          key_buffer = 16M
          max_allowed_packet = 16M
          thread_stack = 128K
          thread_cache_size = 8
          #max_connections = 100
          #table_cache = 64
          #thread_concurrency = 10
          #
          # * Query Cache Configuration
          #
          query_cache_limit = 1M
          query_cache_size = 16M
          #
          # * Logging and Replication
          #
          # Both location gets rotated by the cronjob.
          # Be aware that this log type is a performance killer.
          log = /var/log/mysql/mysql.log
          #
          # Error logging goes to syslog. This is a Debian improvement :)
          #
          # Here you can see queries with especially long duration
          #log_slow_queries = /var/log/mysql/mysql-slow.log
          #long_query_time = 2
          #log-queries-not-using-indexes
          #
          # The following can be used as easy to replay backup logs or for replication.
          #server-id = 1
          log_bin = /var/log/mysql/mysql-bin.log
          # WARNING: Using expire_logs_days without bin_log crashes the server! See README.Debian!
          expire_logs_days = 10
          max_binlog_size = 100M
          #binlog_do_db = include_database_name
          #binlog_ignore_db = include_database_name
          #
          # * BerkeleyDB
          #
          # Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
          skip-bdb
          #
          # * InnoDB
          #
          # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
          # Read the manual for more InnoDB related options. There are many!
          # You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
          #skip-innodb
          #
          # * Security Features
          #
          # Read the manual, too, if you want chroot!
          # chroot = /var/lib/mysql/
          #
          # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
          #
          # ssl-ca=/etc/mysql/cacert.pem
          # ssl-cert=/etc/mysql/server-cert.pem
          # ssl-key=/etc/mysql/server-key.pem

          [mysqldump]
          quick
          quote-names
          max_allowed_packet = 16M

          [mysql]
          #no-auto-rehash # faster start of mysql but no tab completition

          [isamchk]
          key_buffer = 16M

          #
          # * NDB Cluster
          #
          # See /usr/share/doc/mysql-server-*/README.Debian for more information.
          #
          # The following configuration is read by the NDB Data Nodes (ndbd processes)
          # not from the NDB Management Nodes (ndb_mgmd processes).
          #
          # [MYSQL_CLUSTER]
          # ndb-connectstring=127.0.0.1

          #
          # * IMPORTANT: Additional settings that can override those from this file!
          #
          !includedir /etc/mysql/conf.d/

          socket=/var/lib/mysql/mysql.sockwebsite:~#
          1. Modérateur
            Re,

            Affiche
            ps aux | grep mysql
            ls -l /var/lib/mysql/mysql.sock
            ls -l /var/run/mysqld/mysql.sock 
            1. Re,

              website:~# ps aux | grep mysql
              mysql 3316 11.0 5.3 74056 26604 ? Sl 07:36 28:07 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --pid-file=/usr/local/mysql/data/website.pid --skip-external-locking
              root 11965 0.0 0.1 2852 704 pts/0 R+ 11:49 0:00 grep mysql

              website:~# ls -l /var/lib/mysql/mysql.sock
              ls: /var/lib/mysql/mysql.sock: No such file or directory

              website:~# ls -l /var/run/mysqld/mysql.sock
              ls: /var/run/mysqld/mysql.sock: No such file or directory
              1. Modérateur
                Re,

                Bon, je pense qu'il faut remonter encore plus.

                Comment tu as installé mysql?
                Puisque d'après ce que je crois, tu l'as installé deux fois : depuis les sources et avec le gestionnaire de paquets
                Je me trompe?!
                1. Re,
                  mysql était installé par défaut.
                  Par contre, dès qu'il y a eu la première fermeture inopinée, je ne cache pas avoir un peu bidouiller avec des apt-get & Co...
                  1. Modérateur
                    Re,

                    Ben, en fait tu as bidouillé plus que tu le dis.

                    Regarde ça
                    /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --pid-file=/usr/local/mysql

                    apt-get n'installe pas dans /usr/local

                    d'où ma supposition que tu l'as installé depuis les sources.

                    Bref, je pense que tu as le mysql installé avec apt et le mysql installé depuis les sources
                    Donc il y a un conflit quelque part.

                    Affiche
                    whereis mysql
                    ls -l /usr/local/mysql/bin
                    1. Re,
                      C'est fort possible, j'ai cherché des solutions un peu partout sur le net...

                      website:~# whereis mysql
                      mysql: /usr/bin/mysql /etc/mysql /usr/X11R6/bin/mysql /usr/bin/X11/mysql /usr/local/bin/mysql /usr/local/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
                      website:~# ls -l /usr/local/mysql/bin
                      total 41792
                      -rwxr-xr-x 1 mysql mysql 3661 2008-08-04 14:20 CMakeLists.txt
                      -rwxr-xr-x 1 mysql mysql 1302552 2008-08-19 07:08 comp_err
                      -rwxr-xr-x 1 mysql mysql 2676 2008-08-04 14:20 comp_sql.c
                      -rwxr-xr-x 1 mysql mysql 2772 2008-08-19 06:53 make_sharedlib_distribution
                      -rwxr-xr-x 1 mysql mysql 13719 2008-08-04 14:20 make_win_bin_dist
                      -rwxr-xr-x 1 mysql mysql 11355 2008-08-19 06:53 make_win_src_distribution_old
                      -rwxr-xr-x 1 mysql mysql 1424 2008-08-19 06:53 msql2mysql
                      -rwxr-xr-x 1 mysql mysql 1736092 2008-08-19 07:08 myisamchk
                      -rwxr-xr-x 1 mysql mysql 1604792 2008-08-19 07:08 myisam_ftdump
                      -rwxr-xr-x 1 mysql mysql 1616600 2008-08-19 07:08 myisamlog
                      -rwxr-xr-x 1 mysql mysql 1646348 2008-08-19 07:08 myisampack
                      -rwxr-xr-x 1 mysql mysql 1307516 2008-08-19 07:08 my_print_defaults
                      -rwxr-xr-x 1 mysql mysql 1620108 2008-08-19 07:08 mysql
                      -rwxr-xr-x 1 mysql mysql 110848 2008-08-19 06:53 mysqlaccess
                      -rwxr-xr-x 1 mysql mysql 1702 2008-08-04 14:20 mysqlaccess.conf
                      -rwxr-xr-x 1 mysql mysql 1409144 2008-08-19 07:08 mysqladmin
                      -rwxr-xr-x 1 mysql mysql 1492368 2008-08-19 07:08 mysqlbinlog
                      -rwxr-xr-x 1 mysql mysql 10791 2008-08-19 06:53 mysqlbug
                      -rwxr-xr-x 1 mysql mysql 1405632 2008-08-19 07:08 mysqlcheck
                      -rwxr-xr-x 1 mysql mysql 1754524 2008-08-19 07:08 mysql_client_test
                      -rwxr-xr-x 1 mysql mysql 6008 2008-08-19 06:53 mysql_config
                      -rwxr-xr-x 1 mysql mysql 3670 2008-08-19 06:53 mysql_convert_table_format
                      -rwxr-xr-x 1 mysql mysql 6065512 2008-08-19 07:08 mysqld
                      -rwxr-xr-x 1 mysql mysql 22746 2008-08-19 06:53 mysqld_multi
                      -rwxr-xr-x 1 mysql mysql 13108 2008-08-19 06:53 mysqld_safe
                      -rwxr-xr-x 1 mysql mysql 1450748 2008-08-19 07:08 mysqldump
                      -rwxr-xr-x 1 mysql mysql 6356 2008-08-19 06:53 mysqldumpslow
                      -rwxr-xr-x 1 mysql mysql 11648 2008-08-19 06:53 mysql_explain_log
                      -rwxr-xr-x 1 mysql mysql 3245 2008-08-19 06:53 mysql_find_rows
                      -rwxr-xr-x 1 mysql mysql 483 2008-08-19 06:53 mysql_fix_extensions
                      -rwxr-xr-x 1 mysql mysql 5894 2008-08-19 06:53 mysql_fix_privilege_tables
                      -rwxr-xr-x 1 mysql mysql 33828 2008-08-04 14:24 mysql_fix_privilege_tables_sql.c
                      -rwxr-xr-x 1 mysql mysql 31431 2008-08-19 06:53 mysqlhotcopy
                      -rwxr-xr-x 1 mysql mysql 1402388 2008-08-19 07:08 mysqlimport
                      -rwxr-xr-x 1 mysql mysql 1429540 2008-08-19 07:08 mysqlmanager
                      -rwxr-xr-x 1 mysql mysql 6586 2008-08-19 06:53 mysql_secure_installation
                      -rwxr-xr-x 1 mysql mysql 16687 2008-08-19 06:53 mysql_setpermission
                      -rwxr-xr-x 1 mysql mysql 1404608 2008-08-19 07:08 mysqlshow
                      -rwxr-xr-x 1 mysql mysql 14473 2008-08-19 06:53 mysql_tableinfo
                      -rwxr-xr-x 1 mysql mysql 1529216 2008-08-19 07:08 mysqltest
                      -rwxr-xr-x 1 mysql mysql 1426820 2008-08-19 07:08 mysqltestmanager
                      -rwxr-xr-x 1 mysql mysql 1397100 2008-08-19 07:08 mysqltestmanagerc
                      -rwxr-xr-x 1 mysql mysql 1292152 2008-08-19 07:08 mysqltestmanager-pwgen
                      -rwxr-xr-x 1 mysql mysql 1289880 2008-08-19 07:08 mysql_tzinfo_to_sql
                      -rwxr-xr-x 1 mysql mysql 1342948 2008-08-19 07:08 mysql_upgrade
                      -rwxr-xr-x 1 mysql mysql 5831 2008-08-19 06:53 mysql_upgrade_shell
                      -rwxr-xr-x 1 mysql mysql 100008 2008-08-19 07:08 mysql_waitpid
                      -rwxr-xr-x 1 mysql mysql 3818 2008-08-19 06:53 mysql_zap
                      -rwxr-xr-x 1 mysql mysql 1295024 2008-08-19 07:08 perror
                      -rwxr-xr-x 1 mysql mysql 1298764 2008-08-19 07:08 replace
                      -rwxr-xr-x 1 mysql mysql 1294608 2008-08-19 07:08 resolveip
                      -rwxr-xr-x 1 mysql mysql 1298764 2008-08-19 07:08 resolve_stack_dump
                      lrwxrwxrwx 1 mysql mysql 11 2008-11-10 06:20 safe_mysqld -> mysqld_safe

                      Merci de ton aide.
                      1. Modérateur
                        Re,

                        Je ne me suis pas trompé, tu as un conflit.

                        Parfois après avoir démarrer mysql manuellement, j
                        Avec quelle commande?

                        1. Modérateur
                          Re,

                          Je vois
                          /etc/init.d/mysql
                          /etc/init.d/mysqld

                          et aussi
                          /etc/rc5.d/S20mysqld
                          /etc/rc5.d/S19mysql


                          Donc il y a deux serveur mysql qui démarrent (ou qui essaient de démarrer) au début de ta session graphique

                          On va essayer de dépister lequel

                          Tape d'abord en root
                          killall mysql

                          et affiche
                          ps aux | grep mysql
                          1. Re,
                            Ce sont ces doubles serveurs mysql qui font bugger le serveur tout entier alors ?

                            website:~# killall mysql
                            mysql: no process killed

                            website:~# ps aux | grep mysql
                            mysql 3316 11.4 7.9 91796 39700 ? Sl 07:36 32:34 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --pid-file=/usr/local/mysql/data/website.pid --skip-external-locking
                            root 13189 0.0 0.1 2852 704 pts/0 R+ 12:20 0:00 grep mysql
                            1. Re,

                              website:~# kill -9 3316

                              website:~# ps aux | grep mysql
                              root 13372 0.2 0.2 3660 1284 ? S 12:26 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/website.pid
                              mysql 13400 7.0 1.5 68460 7836 ? Sl 12:26 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --pid-file=/usr/local/mysql/data/website.pid --skip-external-locking
                              root 13406 0.0 0.1 2852 704 pts/0 R+ 12:26 0:00 grep mysql
                              1. Re,

                                website:~# /etc/init.d/mysql stop
                                Stopping MySQL database server: mysqld.

                                website:~# ps aux | grep mysql
                                root 13372 0.0 0.2 3660 1284 ? S 12:26 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/website.pid
                                mysql 13400 11.2 5.0 70332 25064 ? Sl 12:26 0:28 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --pid-file=/usr/local/mysql/data/website.pid --skip-external-locking
                                root 13686 0.0 0.1 2852 704 pts/0 R+ 12:30 0:00 grep mysql
                                1. Re,

                                  website:~# /etc/init.d/mysqld stop
                                  Stopping mysqld: [ OK ]

                                  website:~# ps aux | grep mysql
                                  root 13856 0.0 0.1 2848 696 pts/0 R+ 12:34 0:00 grep mysql
                                  • 1
                                  • 2
                                  • 3