今日、apt-get upgrade
を実行しましたが、MariaDB 10.1 ob Ubuntu Server 14.04のアップグレードに失敗しました。
Setting up libmysqlclient18 (10.1.9+maria-1~trusty) ...
Setting up libmariadbclient18 (10.1.9+maria-1~trusty) ...
Setting up mariadb-client-core-10.1 (10.1.9+maria-1~trusty) ...
Setting up mariadb-client-10.1 (10.1.9+maria-1~trusty) ...
Setting up mariadb-server-core-10.1 (10.1.9+maria-1~trusty) ...
Setting up mariadb-server-10.1 (10.1.9+maria-1~trusty) ...
Installing new version of config file /etc/init.d/mysql ...
* Stopping MariaDB database server mysqld [ OK ]
* Starting MariaDB database server mysqld [fail]
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mariadb-server-10.1 (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mariadb-server:
mariadb-server depends on mariadb-server-10.1 (= 10.1.9+maria-1~trusty); however:
Package mariadb-server-10.1 is not configured yet.
dpkg: error processing package mariadb-server (--configure):
dependency problems - leaving unconfigured
Processing triggers for ureadahead (0.100.0-16) ...
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
No apport report written because the error message indicates its a followup error from a previous failure.
Errors were encountered while processing:
mariadb-server-10.1
mariadb-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
これは悪夢であり、データベースにアクセスできなくなりました。削除してパージし、再度インストールしようとしましたが、常に同じエラーで終了します。
/var/log/syslog
によると、これは(service mysql restart
を実行した後)ソケットとmysqldに関係しています:
mysqld: 151127 11:51:07 [ERROR] mysqld got signal 11 ;
...
mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended
/etc/init.d/mysql[14132]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
/etc/init.d/mysql[14132]: #007/usr/bin/mysqladmin: connect to server at 'localhost' failed
/etc/init.d/mysql[14132]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 "Connection refused")'
/etc/init.d/mysql[14132]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
まあ、/var/run/mysqld/mysqld.sock
は絶対に存在します。また、なぜ/etc/mysql/debian.cnf
の使用について何かを言うのかわかりません-メインのmysql構成ファイルは実際には/etc/mysql/my.cnf
である必要がありますか?私は本当にアイデアがありません、新しいものはありがたいです!
それでも、問題が何であるかを理解できず、アップグレードはまだ機能しません、同じエラーが発生します。 (現在削除されている)回答の一部が言ったように、唯一の解決策はサーバーの古いスナップショットにロールバックすることでした。幸いなことに、データベースの保存は、/var/lib/mysql
から他のスナップショットにすべてをコピーするのと同じくらい簡単でした。
Googleで自分に合ったものを見つけることができなかったので、これに対する解決策があるか、または解決することを願っています。
これが私の問題の解決方法です。サーバーのバックアップがなかったので、MariaDBの「ハードリセット」のようなものです。
最初に、/var/lib/mysql
フォルダーをバックアップしました。/home/ubuntu
フォルダーがあり、そこにフォルダーをコピーしていると想定しています。
cp -r /var/lib/mysql /home/ubuntu/
次に、/etc/mysql
フォルダーをバックアップしました。/home/ubuntu
フォルダーがあり、そこにフォルダーをコピーすると仮定しています。
mkdir /home/ubuntu/etc_mysql
cp -r /etc/mysql /home/ubuntu/etc_mysql
次に、/var/lib/mysql
および/etc/mysql
フォルダーを削除しました
rm -rf /etc/mysql
rm -rf /var/lib/mysql
その後、MariaDBを削除しました。
apt-get purge mariadb-server mariadb-* mysql-*
apt-get autoremove
パージした後、mariadb-server
を再インストールして再構成しました。
apt-get install mariadb-server
mysql_secure_installation
/home/ubuntu/etc_mysql
フォルダーから必要な設定をコピーします。
その後、mysql
cliからデータベースとユーザーを作成しました(または、必要に応じて)
最後に、/home/ubuntu/mysql/**databaseName**
フォルダーを/var/lib/mysql/**databaseName**
にコピーしました
cp -r /home/ubuntu/mysql/databaseName /var/lib/mysql/
そして、そのままにしておいたように、データに損失なくアクセスできました。