web-dev-qa-db-ja.com

MySQLの起動タイムアウトの変更(mysqlは正しく起動しましたが[失敗]が報告されました)

cleanup InnoDB storage engine のスクリプトを作成しました。 ib_logfile0ib_logfile1に設定されているときにinnodb_log_file_sizeファイルと1GBファイルを作成するのに時間がかかり、/etc/init.d/mysqlがタイムアウトして失敗を報告することを除いて、すべて正常に機能します。バックグラウンドではMySQLは正常に起動しますが。

mysqlの起動

$ /etc/init.d/mysql start
* Starting MariaDB database server mysqld  [fail] 

その間ログに

$ tail -f /var/log/mysql.err
120426 11:19:55  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 1024 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500 600 700 800 900 1000
120426 11:20:07  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 1024 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500 600 700 800 900 1000
[...]
120426 11:20:24 [Note] /usr/sbin/mysqld: ready for connections.
# Version: '5.5.23-MariaDB-mariadb1~oneiric-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution

起動スクリプトがタイムアウトしないようにする方法を探しています。 /etc/init.d/mysqlを見ると、${MYSQLD_STARTUP_TIMEOUT}変数は見えますが、どこに設定されているのかわかりません。私も ドキュメント でそのようなオプションを探していましたが、見つかりませんでした。

Q1:/etc/init.d/mysqlのパラメータとしてカスタム起動タイムアウトを指定できますか?
Q2:構成のサーバー起動タイムアウトを変更するためにどのオプションを変更できますか?

4
Max

私はこれが古い質問であることを知っていますが、他の誰かがより良い/異なる答えを探している場合に備えて投稿しています。私は同様の問題を抱えていますが、アップグレードをインストールするとき。ガレラクラスターの一部であり、ダウン中に見逃したものをコピーする必要があるため、開始に長い時間がかかります。

実行を開始するには:

MYSQLD_STARTUP_TIMEOUT=900 /etc/init.d/mysql start

または、Ubuntuのようにserviceを使用するシステムの場合:

Sudo MYSQLD_STARTUP_TIMEOUT=900 service mysql start

そして私の場合、アップグレードについては次のように呼びます。

Sudo MYSQLD_STARTUP_TIMEOUT=900 apt-get dist-upgrade
2
Luke Cousins

起動時に次のオプションを使用できます。

# 900 is the default, 0 won't wait at all
--service-startup-timeout=900

Initスクリプトまたはmy.cnfでは、次のようになります。

service_startup_timeout=900

その他のドキュメントはここにあります http://dev.mysql.com/doc/refman/5.5/en/mysql-server.html

起動スクリプトの時間を計って、新しいタイムアウト値を取っているかどうかを確認するには、Linuxのtimeコマンドを組み合わせて使用​​します

# time /etc/init.d/mysql start

報告された実行時間をタイムアウト値と比較し、タイムアウトを変更したときに変更されるかどうかを確認します。変更されない場合は、オプションが期待どおりに機能していないか(MariaDBがサポートしていない可能性があります)、構成で誤って宣言されています。

1
sreimer

最新のディストリビューションでは、systemdを使用してサービスを開始します。 MYSQLD_STARTUP_TIMEOUTを試しても機能しない場合は、おそらくこれを使用しています。 /etc/init.d/mysqlスクリプトは使用されなくなったため、MYSQLD_STARTUP_TIMEOUTは効果がありません。

mariadb.serviceファイルを見つける必要があります。私たちの場合、タイムアウトが含まれていなかったため、MariaDBのデフォルトが使用されていました。追加するだけです:

TimeoutStartSec = 0

[Service]セクションで、タイムアウトすることはありません。

これを含む独自の構成ファイルを作成して、後で再インストールしても上書きされないようにすることをお勧めします。

Ubuntu 18.04では、このファイルは次の場所にあります。

/lib/systemd/system/mariadb.service

独自のドロップインファイルを

/etc/systemd/system/mariadb.service.d

タイムアウトをどこかに追加した後、必ずsystemctl daemon-reloadを実行してください(そして、/var/log/syslogをチェックして、リロードが成功したかどうかを確認してください)

0
Dave Hindle