cleanup InnoDB
storage engine のスクリプトを作成しました。 ib_logfile0
がib_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:構成のサーバー起動タイムアウトを変更するためにどのオプションを変更できますか?
私はこれが古い質問であることを知っていますが、他の誰かがより良い/異なる答えを探している場合に備えて投稿しています。私は同様の問題を抱えていますが、アップグレードをインストールするとき。ガレラクラスターの一部であり、ダウン中に見逃したものをコピーする必要があるため、開始に長い時間がかかります。
実行を開始するには:
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
起動時に次のオプションを使用できます。
# 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がサポートしていない可能性があります)、構成で誤って宣言されています。
最新のディストリビューションでは、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
をチェックして、リロードが成功したかどうかを確認してください)