Selasa, 01 April 2014

centos: Another MySQL daemon already running with the same unix socket

Beberapa perHari ini (Kamis/20 Maret 2014) saya mendapati Server p2kp milik BKD Kab. Temanggung error. Beberapa Pegawai yang mau ngakses ndak bisa masuk. begitupun kami yang di admin, mencoba masuk dengan TETEP ndak bisa. saya mencoba remote server dengan TOOLS remote, TETEP ndak bisa. Akhirnya kucoba datangi tuh SERVER. Aku lihat tampilan di layar MONITOR yang sudah pake EL E DE, ada pesan error seperti ini :masalahan terjadi lagi untuk Mysql yang tidak bisa jalan. Dengan perintah :
Beberapa perHari ini (Kamis/20 Maret 2014) saya mendapati Server p2kp milik BKD Kab. Temanggung error. Beberapa Pegawai yang mau ngakses ndak bisa masuk. begitupun kami yang di admin, mencoba masuk dengan TETEP ndak bisa. saya mencoba remote server dengan TOOLS remote, TETEP ndak bisa. Akhirnya kucoba datangi tuh SERVER. Aku lihat tampilan di layar MONITOR yang sudah pake EL E DE, ada pesan error seperti ini :masalahan terjadi lagi untuk Mysql yang tidak bisa jalan. Dengan perintah:
# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
# service mysqld start
 
Namun tetep saja Mysqld nya Stop dengan sendirinya. saya coba dengnan
trik berikutnya :
in order to clean automatically .sock file (menghapus secara otomatis file .sock)
langkah-langkahnya. silahkan buka /etc/init.d/mysqld .
kemudian cari deret perintah start()
 
start(){
    [ -x $exec ] || exit 5
    # check to see if it's already running
    MYSQLDRUNNING=0
    if [ -f "$mypidfile" ]; then
 MYSQLPID=`cat "$mypidfile" 2>/dev/null`
 if [ -n "$MYSQLPID" ] && [ -d "/proc/$MYSQLPID" ] ; then
     MYSQLDRUNNING=1
 fi
    fi
    RESPONSE=`/usr/bin/mysqladmin --socket="$socketfile" 

--user=UNKNOWN_MYSQL_USER ping 2>&1`
    if [ $MYSQLDRUNNING = 1 ] && [ $? = 0 ]; then
 # already running, do nothing
 action $"Starting $prog: " /bin/true
 ret=0
    elif [ $MYSQLDRUNNING = 1 ] && echo "$RESPONSE" 
| grep -q "Access denied for user"
    then
 # already running, do nothing
 action $"Starting $prog: " /bin/true
 ret=0
    else
     # prepare for start
 touch "$errlogfile" 2>/dev/null
 if [ $? -ne 0 ]; then
      # failed to touch log file, probably insufficient permissions
     action $"Starting $prog: " /bin/false
     return 4
 fi
 chown mysql:mysql "$errlogfile" 
 chmod 0640 "$errlogfile"
 [ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile"
 if [ ! -d "$datadir/mysql" ] ; then
     # First, make sure $datadir is there with correct permissions
     if [ ! -e "$datadir" -a ! -h "$datadir" ]
     then
  mkdir -p "$datadir" || exit 1
     fi
     chown mysql:mysql "$datadir"
     chmod 0755 "$datadir"
     [ -x /sbin/restorecon ] && /sbin/restorecon "$datadir"
     # Now create the database
     action $"Initializing MySQL database: " 
/usr/bin/mysql_install_db --datadir="$datadir" --user=mysql
     ret=$?
     chown -R mysql:mysql "$datadir"
     if [ $ret -ne 0 ] ; then
  return $ret
     fi
 fi
 chown mysql:mysql "$datadir"
 chmod 0755 "$datadir"
 # Pass all the options determined above, to ensure consistent behavior.
 # In many cases mysqld_safe would arrive at the same conclusions anyway
 # but we need to be sure.  (An exception is that we don't force the
 # log-error setting, since this script doesn't really depend on that,
 # and some users might prefer to configure logging to syslog.)
 # Note: set --basedir to prevent probes that might trigger SELinux
 # alarms, per bug #547485
 if [ -S "$socketfile" ] ; then
     echo "Another MySQL daemon already running with the same unix socket."
     action $"Starting $prog: " /bin/false
     return 1
 fi
 $exec   --datadir="$datadir" --socket="$socketfile" \
  --pid-file="$mypidfile" \
  --basedir=/usr --user=mysql >/dev/null 2>&1 &
 safe_pid=$!
 # Spin for a maximum of N seconds waiting for the server to come up;
 # exit the loop immediately if mysqld_safe process disappears.
 # Rather than assuming we know a valid username, accept an "access
 # denied" response as meaning the server is functioning.
 ret=0
 TIMEOUT="$STARTTIMEOUT"
 while [ $TIMEOUT -gt 0 ]; do
     RESPONSE=`/usr/bin/mysqladmin --socket="$socketfile" 
--user=UNKNOWN_MYSQL_USER ping 2>&1`
     mret=$?
     if [ $mret -eq 0 ]; then
  break
     fi
     # exit codes 1, 11 (EXIT_CANNOT_CONNECT_TO_SERVICE) are expected,
     # anything else suggests a configuration error
     if [ $mret -ne 1 -a $mret -ne 11 ]; then
  echo "$RESPONSE"
  echo "Cannot check for MySQL Daemon startup because of mysqladmin failure."
  ret=1
  break
     fi
     echo "$RESPONSE" | grep -q "Access denied for user" && break
     if ! /bin/kill -0 $safe_pid 2>/dev/null; then
  echo "MySQL Daemon failed to start."
  ret=1
  break
     fi
     sleep 1
     let TIMEOUT=${TIMEOUT}-1
 done
 if [ $TIMEOUT -eq 0 ]; then
     echo "Timeout error occurred trying to start MySQL Daemon."
     ret=1
 fi
 if [ $ret -eq 0 ]; then
     action $"Starting $prog: " /bin/true
     chmod o+r $mypidfile >/dev/null 2>&1
     touch $lockfile
 else
     action $"Starting $prog: " /bin/false
 fi
    fi
    return $ret
}
kemudian saya tambahkan :
start(){......
.........
..........
test -e /var/lib/mysql/mysql.sock
SOCKEXIST=$?

ps cax | grep mysqld_safe
NOPIDMYSQL=$?

echo NOPIDMYSQL $NOPIDMYSQL
echo SOCKEXIST $SOCKEXIST

if [ $NOPIDMYSQL -eq 1 ] && [ $SOCKEXIST -eq 0 ] ; then
    echo "NOT CLEAN"
    rm -f /var/lib/mysql/mysql.sock
    echo "FILE SOCK REMOVED"
else
    echo "CLEAN"
fi
}
saya coba mengamati dari tanggal 1 April 2014. mudah-mudahan ndak ada masalah.

sumber : http://stackoverflow.com/questions/20407292/
centos-another-mysql-daemon-already-running-with-the-same-unix-socket
 
  

Tidak ada komentar:

Posting Komentar