MySQL で接続タイムアウトを変更する
- MySQL で接続タイムアウトを変更する
-
Windows OS を使用して MySQL
connect_timeout
を変更する -
Linux (Ubuntu 20.04) OS を使用して MySQL
connect_timeout
を変更する
今日、Linux (Ubuntu 20.04) および Windows オペレーティング システムを使用して MySQL の接続タイムアウトを変更する方法を学習しています。
MySQL で接続タイムアウトを変更する
connect_timeout
プロパティがデフォルトで数秒に設定されているため、MySQL Server への接続が失われ続けることがあります。
ここでは、Linux (Ubuntu 20.04) および Windows オペレーティング システムを使用して MySQL の connect_timeout
のデフォルト値を変更する方法を説明します。
構成ファイルを更新するか、SQL クエリを使用して、両方のオペレーティング システムで変更を加えることができます。 それぞれ見てみましょう。
Windows OS を使用して MySQL connect_timeout
を変更する
まず、Windows コマンド ラインを開き、MySQL サーバーのインストール パスをナビゲートする必要があります。 デフォルトでは、MySQL サーバーは C:\Program Files\MySQL\MySQL Server 8.0
にインストールされます。
コマンドラインで cd bin
を使用して bin
フォルダーに移動します。 さらに、mysql -u root -p password
と入力して、root
ユーザーとしてログインします。
これで、必要な更新を行う前に、次のクエリを使用して connect_timeout
プロパティのデフォルト値を確認できます。
mysql> SHOW VARIABLES LIKE 'connect_timeout';
出力:
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set (0.00 sec)
ご覧のとおり、MySQL サーバーへの接続は 10 秒で失われます。 したがって、Windows コマンドラインで次のコマンドを使用して、28800 秒 (8 時間) に変更できます。
interactive_timeout
と wait_timeout
を更新することは、完全な実行で多くの時間を消費するアプリケーションを実行しているときに役立つため、良いことです。
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
次のコマンドを使用して、すべての更新を確認します。
mysql> SHOW VARIABLES WHERE Variable_Name
-> IN ('connect_timeout', 'interactive_timeout', 'wait_timeout');
出力:
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| connect_timeout | 28800 |
| interactive_timeout | 28800 |
| wait_timeout | 28800 |
+---------------------+-------+
3 rows in set (0.04 sec)
ここで、connect_timeout
は、mysqld
サーバーが Bad Handshake
を返す前に接続パケットを待機する秒数を表します。 interactive_timeout
は、MySQL サーバーが対話型接続のアクティビティを閉じる前に待機する秒数も示します。
connect_timeout
や interactive_timeout
と同様に、wait_timeout
も、MySQL サーバーが接続を閉じる前に接続上のアクティビティを待機する秒数を示します。
アプリケーションを作成している場合は、Java や Python などのプログラミング言語を使用して次のように変更できます。
connection.query("SET GLOBAL connect_timeout=28800")
connection.query("SET GLOBAL interactive_timeout=28800")
connection.query("SET GLOBAL wait_timeout=28800")
もう 1つの方法は、C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
パスにある my.ini
ファイルを開いて構成ファイルを更新することです (デフォルトの場所に MySQL サーバーをインストールした場合)。 次に、[mysqld]
セクションを探して書き込みます。
[mysqld]
connect_timeout = 28800
interactive_timeout = 28800
wait_timeout = 28800
MySQL サーバーを再起動して、更新をお楽しみください。
Linux (Ubuntu 20.04) OS を使用して MySQL connect_timeout
を変更する
Ubuntu シェルを開き、sudo su
を使用してスーパーユーザーとしてログインします。 次に、次のクエリを使用して MySQL サーバーにログインします。
$ mysql -u root -p password
入力したら、以下に示すように、10 秒である connect_timeout
のデフォルト値を確認します。
mysql> SHOW VARIABLES LIKE 'connect_timeout';
出力:
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set (0.00 sec)
次のクエリを実行して、connect_timeout
、interactive_timout
、および wait_timeout
の値を更新します。 前述のように、これら 3つを更新して、完全な実行に時間がかかるアプリケーションを実行します。
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
出力:
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| connect_timeout | 28800 |
| interactive_timeout | 28800 |
| wait_timeout | 28800 |
+---------------------+-------+
3 rows in set (0.13 sec)
もう 1つの方法は、構成ファイルを更新することです。 connect_timeout
、interactive_timeout
、および wait_timeout
の値として 28800 秒を期待するとします。
そのためには、このパス /etc/mysql/mysql.conf.d/mysqld.cnf
にある 構成ファイルを編集する 必要があります。 vim
エディターを使用します。 このファイルは、任意のエディターを使用して編集できます。
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
セクションを検索し、以下に示すように connect_timeout
、interactive_timeout
、および wait_timeout
を追加します。
[mysqld]
connect_timeout = 28800
interactive_timeout = 28800
wait_timeout = 28800
ファイルを保存して終了します。 systemctl restart mysql
を使用して MySQL サーバーを再起動します。
次のクエリを使用して、すべてが期待どおりに変更されていることを確認します。
mysql> SHOW VARIABLES WHERE Variable_Name
-> IN ('connect_timeout', 'interactive_timeout', 'wait_timeout');
出力:
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| connect_timeout | 28800 |
| interactive_timeout | 28800 |
| wait_timeout | 28800 |
+---------------------+-------+
3 rows in set (0.90 sec)