CentOS で正常に動作している MySQL サーバーを使用していますが、最近、すべての個別のデータベースを 1 つのフォルダーにダンプするスクリプトを入手しました。そのスクリプトを実行してダンプすると、スクリプトを実行するたびにこのエラーが発生します。
mysqldump: Couldn't execute 'UNLOCK TABLES': MySQL server has gone away (2006)
Db_1
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) when trying to connect
DB2
サーバーにもあります/var/lib/mysql/mysql.sock
。何が問題なのでしょうか。同じ問題が発生するたびに、タスクを実行するためにさまざまなスクリプトを試してみました。
しかし、何も問題を発生させずmysql -u root -p
にダンプを使用してログインできますmysqldump -u root -p db_1 > db_1.sql
が、スクリプトを実行したときにのみ問題が発生します。
スクリプトは次のようになります。
databases=`$MYSQL --user=$MYSQL_ROOT_USER --password=$MYSQL_ROOT_PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
for db in $databases; do
echo $db
$MYSQLDUMP --force --opt --user=$MYSQL_ROOT_USER --password=$MYSQL_ROOT_PASSWORD --databases $db > "$OUTPUTDIR/$db.sql"
done
解決策を提案してください。
答え1
何らかの理由でエラーが発生し、間違った UNIX ソケットを使用しようとしているようです。
mysql コマンドにパラメータを追加してみてください-S /var/lib/mysql/mysql.sock
。