「MySQL」タグアーカイブ

Lunarpages Dedicated Server(専用サーバー)でMySQLの再起動を手っ取り早く行う方法


TeraTermで接続してmysqlの再起動コマンドを発行しなくてもLunarpagesの管理画面上で簡単に再起動をする事が出来ます。

その手順をメモっておきます。

DBを使うコンテンツを運営していて突如としてアクセスが集中した場合、MySQLのコネクションの切断・接続の一連の流れが不具合を起こす場合があります。

そんな場合には、管理画面にログインしてUI上で再起動すると楽です。

Lunarpages Dedicated Server(専用サーバー)の管理画面にログインします。

メニューより

Configuration > Services  をクリックします。

 

余談ですが、ファミコン時代のFF(ファイナルファンタジー)で設定画面を出す時にコンフィグという名前があったと思います。

これは英語の

configuration ・・・ コンピュータシステムの器機構成、プログラムの設定

を略しています。つまりコンフィグなんて言葉はありません。

英語の出来ないスクエアのプログラマがコンフィグと言い出したんでしょうね。

脱線しました。

説明に戻ります!

Services

  • httpd
  • mysqld
  • postgresql
  • named
  • exim
  • imapd
  • imapds
  • pop3d
  • pop3ds

と動いているプロセスごとに

Start(開始)、Restart(再起動)、Stop(停止)をクリックする事で行えます。

今回は、MySQLのプロセスを再起動するので

mysqldのRestartボタンをクリックします。

MySQLの再起動が正常終了すると

Stopping mysqld: [ OK ]

Starting mysqld: [ OK ]

と表示されます。

Restart(再起動)は裏側では、

MySQLの停止 → MySQLの開始

こコマンドを発行しています。

 

いかがでしたか?

日本の場合、さくらインターネットなどのサーバでサイトを運営する事が多いと思いますが、海外のレンタルサーバー(Lunarpages)もなかなか使い勝手が良いです。

 

専用サーバについては、日本で専用サーバを借りる場合1か月で1万円程度ですが、Lunarpagesなどのアメリカのサーバ会社の場合、1.5~1.9万円が月間の相場です。

意外と知られていませんが、2017年現在、日本は先進国の中ではかなり物価が低いです。

1980年台までは日本の経済も良かったのですが、バブル崩壊後は日本は政治家と癒着のあるゼネコン会社をのぞき、その他は衰退の一歩をたどり続けています。

 

 


【MySQLエラー】Warning: mysql_connect() [function.mysql-connect]: Too many connections in XXX on line XXX


MySQLでToo many connectionsというエラーが出た場合

mysql-error

MySQLからこんなエラーが出る場合があります。
そんな場合の対処方法を纏めておきます。

Warning: mysql_connect() [function.mysql-connect]: Too many connections in XXX on line XXX
I cannot connect to the database because: Too many connections

なお、ブラウザからアクセスして↑のエラーが出ている場合、phpMyAdminにアクセスをしようとしても↓の様なエラーが出てしまいます。

mysql-error-2

 

手っ取り早く解消する方法

レンタルサーバ(Lunarpages)の管理画面にログイン > メニュー > Configuration > Service

mysql-error-3

mysqldの行のStopをクリック してmysqlを一旦停止します。

そして、Startを実行します。つまり、mysqlのプロセスを強制再起動します。再起動すると強制的にmysqlに繋がりっぱなしになっているプロセスをぶった切ってリセットする事が出来ます。

なお、Serviceで表示されている文字列は「mysqld」と最後に「d」が付いています。これは、mysqlのデーモンです。デーモンとは、UNIX系OS(CentOSなど)のバックグラウンドプロセスの事を表しています。WindowsOSでは、サービスと呼ばれています。

根本的に問題を解決する場合

2点の解消を行います。

1点目:最大接続数を増やす

2点目:1回の接続時間を短くする

mysqlの設定を変更すれば、余程多量のアクセスが無い限りはこの様な問題が起こらなくなります。

SSHでサーバに接続します。今回はLunarpagesにTeraTermでSSH接続しました。Lunarpagesでレンタルサーバを借りると、サーバの中にMySQLもインストールされています。さくらインターネットなどでは、DBサーバが分かれていますが、LunarpagesのDedicate Serverでは一体になっていました。

SSHでサーバに繋がったら

mysql

と入力するとmysqlに繋がります。

max_connectionsの確認 →最大接続数の確認が出来ます。
show global variables like’max_connections’;

wait_timeoutの確認 →接続時間を確認できます。
show global variables like’wait_timeout’;

デフォルトでは、 28,800秒 = 480分  = 8時間・・・とても長い、長すぎます。ここでは、60秒に設定します。

それぞれの数字をメモっておきましょう。

Control + C でmysqlを抜けてサーバ接続状態にします。

mysql-checking-1

winSCPでサーバに接続し

/etc/my.cnf

をローカルのデスクトップにコピーします。

mysql-checking-2

こんな感じに設定しました。

# 接続数
max_connections = 1000

# 待機時間
wait_timeout = 60

編集したらサーバの/etc/my.cnfにアップロードします。

以下コマンドを発行し

sudo service mysqld restart

と出ればMySQLの再起動は完了です。

Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]

MySQLのデーモンの再起動をしないと設定ファイルを変更しても反映されないので注意しましょう。

そして再び値をチェックします。

最大接続数:1,000

待機時間:60

にしっかり変更されました。

mysql-setting-finished

 

MySQLでエラーが頻発する場合には、この手順をすれば解決されます。

MySQLでステータス確認でたまに使うコマンドのメモ書き

MySQLで現在設定されている最大接続数を確認

show global variables like’max_connections’;

MySQLで現在の接続数を確認

show status like ‘Threads_connected’;

MySQLの累積のコネクション数を確認

show status like ‘Connections’;

 


MySQL Connectorのダウンロードとインストールまでのメモ書き


MySQL Connectorをインストールする方法

MySQL Connectorをダウンロードする為に
http://dev.mysql.com/downloads/connector/odbc/
基礎からのMySQL 改訂版 (基礎からシリーズ)
にアクセスします。

Select Platform: とあるのでその中から

Windows(X86,64-bit),MSI Installer
(mysql-connector-odbc-5.3.6-winx64.msi)
の行のDownloadをクリックします。

2016/11/3

時点で、ダウンロードしたMySQL Connectorのバージョンはこちらです。

mysql-connector-odbc-5.3.6-winx64.msi

mysql-connector
Windows (x86, 32-bit), MSI Installer  → 32bit版

Windows (x86, 64-bit), MSI Installer → 64bit 版

両方ダウンロードしてインストールしておきましょう。CSEなど昔のDB操作ツールでODBC接続したい場合には、32bit版でないとエラーが発生してしまいます。

 

インストーラー(msi)をキックするとインストールが開始します。

MySQL Connector/ODBC 5.3 – Setup Wizard
The Setup Wizard will install MySQL Connector/ODBC 5.3 release 5.3.6 on yourcomputer. To continue, click Next.
と出るので

Next > をクリック

License Agreement

画面が表示される。表示されたら

I accept the terms in the license agreement

にチェックを入れて

Next > をクリック

Typical  にチェックを入れる

Next > をクリックする。

Ready to Install the Program
The Wizard is ready to begin installation.

と出るので、 Install ボタンをクリックする。
詳細! PHP 7+MySQL 入門ノート

Installing MySQL Connector/ODBC 5.3
The program features you selected are beging installed.
Please wait while the Setup Wizard installs MySQL connector/ODBC 5.3.
This may take several minutes.
というメッセージが表示されます。

ざっくりとした意味は、インストールに数分かかる場合がありますという意味です。

この時にWindowsからセキュリティー対策として確認ダイアログが表示される場合があります。

このアプリがデバイスに変更を加える事を許可しますか?
mysql-connector-odbc-5.3.6-winx64.msi
確認済みの発行元: Oracle America, Inc.

と出たら「はい」をクリックします。

するとインストールが進んで Wizard CompletedになればOKです。

mysql-connector-5-3-6-finished
Finishをクリックします。これで MySQL Connectorのインストールは完了です。
エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド


HeidiSQLでSQL文を一発で整形する方法


HeidiSQLの整形機能は微妙

HeidiSQLでSQL整形を行う場合

メニュー > 編集 > SQLの整形(S)

をクリックします。一応整形されますが、正直整形の精度は微妙です。

フリーソフトのCSEの整形機能はしっかりしていたので、基本的なデータベース操作はHeidiSQLを使って、SQLの整形にはCSEを使うといった具合に使い分けると良いでしょう。

heidisql-15

また、ショートカットコマンドもあります。

 

Control + F8

キーです。覚えておくと便利です。

 


datetime型の列をグループ化して年月ごとにレコード数を取得する。


access_logsテーブルの中にaccess_date列があったと過程します。

そしてデータが↓の様に入っている事を想定します。

 

2015-03-02 17:35:25

2015-03-03 17:35:25

2015-04-03 17:35:25

 

この際に年・月ごとの数をgroup化することにより求めるSQLは次の様に記述します。

SELECT YEAR( access_date ) , MONTH( access_date ) , DAY( access_date ) , COUNT( * ) AS COUNT_DAILY
FROM access_logs
GROUP BY YEAR( access_date ) , MONTH( access_date ) , DAY( access_date )
ORDER BY YEAR( access_date ) ASC , MONTH( access_date ) ASC , DAY( access_date ) ASC


MySQLで作成済のビューのSQLコードを確認するには?


phpMyAdmin上で作成済のビューを確認する方法を纏めます。

 

1.データベースを選択する。

2.SQLタブをクリックする。

3.コマンドを発行しデータベースに作成されているテーブル一覧を表示する。

SHOW TABLES

4.ビューの名前が確認出来たら、そのビューを作成する為に必要なSQL分を以下コードを実行し確認する。

show create view `{ビュー名}`

※ビュー名は、バックスラッシュ「`」で囲まなくてはなりません。バックスラッシュの入力は、 Shift + @  を押します。

 

5.実行するとビューを作る為のSQLが一部分だけ表示されます。ただし、この状態だとSQLの全体を確認する事が出来ません。そこで

印刷用画面(全テキストを含む)をクリックします。

クリックすると SQL の結果 という画面が開いてその中にビューを作成する為のSQL分が全て表示された状態になります。

show-create-view


MySQLで使える基本的でかつ重要な命令文


MySQLで使える基本的でかつ重要な命令文

MySQLで使う頻度の高い、重要な構文などを不定期にメモ書きしていきます。毎度×2似たクエリを手書きで発行するのは効率が悪いので出来る限りコピペですぐ発行できる状態でまとめていきます。

【LIMIT】データの取得件数を制限する

SELECT * FROM HOGE_TABLE LIMIT S1 , S2

S1→取得開始位置。0から始まります。
S2→データ取得件数

例)
SELECT * FROM HOGE_TABLE LIMIT 0 , 10

この場合、
HOGE_TABLE から 0番目から10行のデータが取得されます。
インデックスとしては、 0~9になります。

 

要素の値がNULLであるかどうかを判定する

カラムの値がNULLのデータを抽出する場合
HOGE_NAME is NULL

と指定します。また、NULLではないデータを抽出する場合

HOGE_NAME is not NULL

とします。C# や php などに慣れていると

HOGE_NAME = null と誤って記述してしまいますが、、、これでは対象データを抽出する事が出来ないので注意しましょう。


MySQL mysql-5.5.39-winx64.msi をインストールする


関連したメモ

mysql-5.5.39-winx64.msi を事前にダウンロードします。

5.6をWindows 7 にインストールしようとしてもうまくいきません。

安定板の5.5.39をインストールする事を強くおススメします。

参考にしたサイト

インストールを行うと次の画面が表示されます。

mysql_7

 

Next > をクリックします。

次の画面でも再び Next > をクリックすると次の画面が表示されます。

Completed the MySQL Server 5.5 Setup Wizard

Launch the MySQL Instance Configuration Wizard にチェックが入っている事を確認し、 Finish をクリックします。

mysql_8

すると

Welcome to the MySQL Server Instance Configuration Wizard 1.0.17.0 という画面が起動するので Next > をクリックします。

mysql_9

 

 

MySQL Server Instance Configuration 画面が起動したら

Detailed Configuration にチェックが入っている事を確認し Next > をクリックします。

mysql_10

 

 

そこそこのアクセスを想定したWEBアプリの開発を行うのであれば Server Machineを選択し Next > をクリックします。

開発用でかつアクセス数が少ない場合には、 Developer Machine を選択します。

mysql_11

 

 

Multifunction Database にチェックを入れてNext > をクリックします。

mysql_12

MySQLのインストール先を選択します。通常はデフォルトのままで良いです。 Next > をクリックします。

mysql_13

 

 

 

 

同時接続数の想定値が20人位の場合には、

Decision Support(DSS)/OLAP を選択し Next > をクリックします。

mysql_14

 

リモート接続する必要がある場合は、Enable TCP/IP Networkingにチェックを入れます。また、ローカルで運用する場合にはチェックをはずします。リモート接続する場合は、ファイアウォールを開放してやる必要があるのでAdd firewall exception for this portにチェックをします。選択が終了したら、「Next」ボタンをクリックします。

mysql_15

 

MySQLの文字コード設定画面です。

Configure the MySQL Server 5.5 server instacne.

Best Support For Multilingualism

Make UTF8 the default character set.This is the recommended character set for storing text in many different languages.

を選択します。

mysql_20

 

Windows サービスとしてインストールするかと MYSQL の Bin ディレクトリをWindows PATH に含めるかどうかの選択画面です。両方にチェックをしてNext >をクリックします。

mysql_17

 

rootパスワードを入力します。

MySQLの場合、管理者のIDはroot です。別のマシンからコントロールしたい場合は、Enable root access from remote machinesにチェックをしてそうでない場合にはチェックをはずします。

チェックをしない事をおススメします。インストールで失敗する可能性があります。

最後にNext > をクリックします。
注意:以前のバージョンで は、Enable root access from remote machinesにチェックをするとインストールの最後で Error Nr. 1364 Field ‘authentication-string’ doesn’t have a default valueというエラーが発生するバグがありましたが、最近のバージョンでは解消されています。

mysql_18

 

ここまでの作業で MySQL の設定項目の入力が完了し設定の準備ができたという画面が表示されます。最後にExecuteボタンをクリックします。

mysql_19

 

これを実行した時にフリーズしてしまう事があります。原因は不明です。

Processing configuration ...    (応答なし)