rss ログイン
JJ1RLWのXOOPS Cube Siteにようこそ

メインメニュー

ログイン


ユーザー名:


パスワード:





パスワード紛失  |新規登録

オンライン状況

3 人のユーザが現在オンラインです。 (1 人のユーザが xpress ブログ を参照しています。)

登録ユーザ: 0
ゲスト: 3

もっと...

アーカイブ

カテゴリー

アクセスカウンタ

今日 : 186186186
昨日 : 284284284
総計 : 271731271731271731271731271731271731

カレンダー

2018年10月
« 9月    
 123456
78910111213
14151617181920
21222324252627
28293031  

xpress ブログ » » DATABASE

  カテゴリー ‘DATABASE’ のアーカイブ
WordPress for XOOPS

MySQL 8.0のクラッシュ、その後3

以前にも書いたのですが、MySQL 8.0のクラッシュ、その後、MySQL 8.0.11から8.0.12にアップグレード後、mysql_upgradeコマンドを実行し、正常に終了しました。
mysqldを再起動してテストしても、やはりクラッシュしてしまいます。

今回は、システムが使うデータベース(information_schema、mysql、performance_schema、sys)以外のデータベースを一旦削除し、MySQL 5.7から改めてインポートしたら、クラッシュの発生は無くなりました。
しかし、レスポンスが異常に遅い。

どの処理が遅いのか、スロークエリーログから改善策を探すことにしました。
my.iniの内容は、
slow_query_log=1
long_query_time=2

ひとつ目の遅いクエリーは、logcounterxモジュールのlogcounterx_logテーブルを参照している
SELECT MAX(acccnt), COUNT(recid) FROM hoge_logcounterx_log;
そこで、
PRIMARY KEY (recid)

PRIMARY KEY (recid),
KEY acccnt (acccnt)

ふたつ目の遅いクエリーは、analyzer for XCモジュールのanalyzer_dataテーブルを参照している
SELECT DISTINCT d.mods, COUNT(d.mods) cnt, m.dirname FROM hoge_analyzer_data d,x174_modules m WHERE d.analysis = 1 AND m.dirname IN ( ‘xpress’,’pico’,’d3forum’,’hypconf’,’search’,’ccenter’,’zen-cart-menu’,’sitemap’,’myalbum’,’stdCache’,’NWiki-menu’,’d3downloads’,’d3pipes’,’links’,’xoops-menu’ ) AND d.analysis = 1 AND d.date > 20000101 AND d.mods != ‘index’ AND d.mods = m.name GROUP BY d.mods, m.dirname ORDER BY cnt DESC;
そこで
PRIMARY KEY (time,ip,mods),
KEY date (date),
KEY ip (ip)

PRIMARY KEY (time,ip,mods),
KEY date (date),
KEY ip (ip),
KEY mods (mods),
KEY analysis (analysis)

以下のクエリーでインデックスを追加出来ます。
ALTER TABLE プリフィクス_logcounterx_log ADD KEY acccnt (acccnt);
ALTER TABLE プリフィクス_analyzer_data ADD KEY mods (mods);
ALTER TABLE プリフィクス_analyzer_data ADD KEY analysis (analysis);
※2018/10/15追記

いずれもインデックスを追加することで、劇的にレスポンスが改善されましたが、まだMySQL 5.7の2~3倍の処理時間が掛かっています。

しかし、以前のクラッシュの原因については不明です。
推測ですが、データベースを作成した際に不具合が紛れ込んだのかも知れません。

試しに再び、MySQL 8.0での運用をしばらく続けようと思います。

PHP7対応のまとめ

以前に投稿したxpress ブログのPHP7対応の記事を資料室にまとめて見ました。

※リンクをクリックするとブラウザの新しいウインドウが開きます。
xpress ブログ記事へのリンク、
Analyzer for xcの改造
Analyzer for XC Ver 0.51のPHP7対応
Analyzer for XC Ver 0.51のPHP7対応その2

logcounterx Ver 2.74のUTF-8、MySQL、PHP7対応

myx_backup Ver 1.10のPHP7対応

PHP7とXOOPS Cube環境下でのPHPエラーメッセージ

zen-cart Ver1.5.1-jpのPHP7対応での変更点

資料室の記事へのリンク
Analyzer for XC Ver 0.51のPHP7対応などまとめ

logcounterx Ver 2.74のUTF-8、MySQL、PHP7対応などまとめ

myx_backup Ver 1.10のPHP7対応まとめ

PHP7とXOOPS Cube環境下でのPHPエラーメッセージ

zen-cart Ver1.5.1-jpのPHP7対応での変更点

MySQL 8.0のクラッシュ、その後2

MySQL 8.0のクラッシュ、その後、MySQL 8.0.11から8.0.12にアップグレード後、mysql_upgradeコマンドを実行し、正常に終了しました。
mysqldを再起動してテストしても、やはりクラッシュします。

MyISAMとInnoDBの両方のデータベースエンジンで、クラッシュが発生します。
作成したばかりのデータベースで、「SHOW TABLE STATUS FROM hogehoge」のクエリーでクラッシュが発生します。
やはり、以前と同じで、
[ERROR] [MY-000000] [InnoDB] InnoDB: Assertion failure: row0sel.cc:4603
とのエラーログが出力されて、mysqldが落ちてしまいます。

ほかにもクエリーの応答時間が、MySQL 5.7と較べて「激遅」なのも問題です。

MySQL 8.0のバージョンアップで改善することを期待していましたが、改善していません。

MySQL 8.0のクラッシュ、その後

MySQL 8.0のクラッシュ、その後、MySQL 8.0インストール初期のmy.ini(my.cnf)を使って、mysqldを起動してテストしても、やはりクラッシュします。

MyISAMとInnoDBの両方のデータベースエンジンで、クラッシュが発生します。
作成したばかりのデータベースで、「SHOW TABLE STATUS FROM hogehoge」のコマンドでクラッシュが発生します。
MyISAMのデータベースを選択した場合でも、
[ERROR] [MY-012856] [InnoDB] InnoDB: MySQL is trying to perform a consistent read but the read view is not assigned!
[ERROR] [MY-000000] [InnoDB] InnoDB: Assertion failure: row0sel.cc:4603
とのログが出力されて、mysqldが落ちてしまいます。

MySQLのバグリポートに「Bug #90694 Server crashes」という同様の現象が報告されているが、解決策は不明です。

MySQL 8.0ではシステム関連テーブルがInnoDBになっているので、MySQLのシステムに近いレベルで、エラーが発生している様に思えます。
MySQL 8.0の次のバージョンで改善することを期待したいと思います。

※2018/07/04バグリポートについて追記

MySQLの運用を8.0から5.7に戻した

ここ一ヶ月程MySQL8.0で運用していましたが、問題がありMySQL5.7に戻しました。

問題点
1.MyISAMテーブルのクラッシュにより、MySQLのサービス(mysqld自体)が落ちる。
これが最大の問題で、長年MySQLを運用しているが初めての経験です。
MySQLの起動パラメーターの問題なのかは判りません。

2.パフォーマンス(レスポンス)の低下。
レスポンス比較(秒)の表
レスポンス比較(秒)の表
上の表は、XOOPS Cubeに設置してある「db response checker」のデータを簡単に集計した結果です。
MySQL8.0での運用だと明らかにWebの応答が遅く感じます。

あくまでも、テストした非力なサーバ環境での話です。
テスト環境
O S:Windows Server 2008R2 x64
メモリ:2GB
HDD:1TB(普通のSATA HDD)
Webサーバ:IIS7.5
PHP:7.0
Webアプリ:XOOPS Cube
※メモリが少なすぎますね。

IPTables log analyzerをulogd2.xで使う

IPTables log analyzerをulogd2.xで使える様に、いつもの「ちょとだけ改造」をして見ました。

おもな変更点は、
1.PHP7.0への対応で、mysql拡張からmysqli拡張へ、廃止された関数の書き換え
2.ulogd2.xでは、IPアドレスの格納形式がlong型からIPv6対応のバイナリ型となったことへの対応

DNSのキャッシュテーブルを参照できない時の画面
DNSのキャッシュテーブルを参照できない時の画面

DNSのキャッシュテーブルを参照できている時の画面
DNSのキャッシュテーブルを参照できている時の画面

サブネットを指定してフィルタリングをした時の画面
サブネットを指定してフィルタリングをした時の画面

参考サイト
[Linux]ファイルの圧縮、解凍方法
Debian 9(Stretch)にPostgreSQL 9.6をapt-getでインストールし、外部アクセスを許可する
postgreSQLにコマンドラインからSQLファイルを実行
18.2.5. vsftpd 設定オプション
[ulogd] seems something wrong with mysql-ulogd2.sql
【PHP】関数 mysql_… を mysqli_… へ書き換える。
MySQL IPアドレスをlong型で記録する方法
ip2long
long2ip
Net_IPv4 – PEARマニュアル
■[MySQL][メモ]MySQLでIPアドレスを記録する方法
MySQLの1つのカラムでIPv4、IPv6両方のIPアドレスを格納する方法を考える
mysqlからmysqliへ移行変換
PHPのip2longとMySQLのINET_ATON
iptablesログ解析(IPTables log analyzer) (最終更新日:2010/02/16)
Raspberry Piでcrondは動いているのにcron.hourlyが動かない?
Debian 6.0 (squeeze) での、cronのログ有効化
run-partsが認識するファイル名ではまった
/etc/crontabと/etc/cron.d設定ファイルの書き方
IPアドレスが指定したIPアドレス範囲の中にあるかチェック
DBでバイナリ型にSELECT文実行
IPv6アドレスを完全表記(省略されていない表記)に変換するPHPコード
PHPでIPアドレス+ネットマスクに適合するかチェック

Raspberry Pi 3 のルーターにcactiを導入

Raspberry Pi 3 のルーターに、ようやくcactiを導入出来ました。

今回、導入する際に引っかかったのは、以下の3箇所です。
1.cacti用DBを作成する際にインデックス長制限
2.SNMPへのアクセス制限
3.直接は関係無いがMIBを人に判り易く表示するプログラムでエラーが発生

Raspberry Pi 3 にcactiを導入した画面
Raspberry Pi 3 にcactiを導入した画面

参考サイト
Ubuntu 14.04, Ubuntu 16.04上のsnmpwalk,snmptranslateでエラーが出力される
SNMPの設定
Ubuntu Server 16.04.2 LTSでSNMPを使えるようにする話
[鯖缶] SNMP(3) NET-SNMP のインストール

MySQL 8.0.11(GA)のインストールをテスト

MySQL 8.0が一般公開版としてリリースされていたので、MySQL 8.0.11(GA)のインストールをテストして見ました。

MySQL 8.0は開発者向け版からテストしていたので、最初はサーバ(Windows)にインストールされている「MySQL Installer – Community」から、Add(追加)でインストールを試みたところ、プログラム部分は正常にインストールされるが、Dataフォルダに初期データが作られずに途中停止する状態となり先に進めません。

次にZIP版をテストしたが、データの初期化までは出来るがサービスを起動出来ません。
ZIP版の場合は、my.iniのパラメーターや初期設定のコマンドが変更されている可能性があるではと思っています。

結局、「mysql-installer-community-8.0.11.0.msi」を使ったインストールだと問題無く、MySQL 8.0.11(GA)のインストールが完了ます。
はじめからインストーラを使えば良かったと後悔しています。
これから実データを入れて、色々と試したいと思います。

参考サイト
Download MySQL Community Server

Accessで家計簿をつけ始めた

昔、家計簿を手書きしていたけど、いつの間にかやめてしまいましたが、昨年夏頃からエクセルを使って家計簿をつけ始め、エクセルのデータをAccessにデータを移行して見ました。

使ったのはフリーで配布されている「Accessの入門用の例題」で、テーブルはたった二つで非常にシンプルです。
大体はレシート単位でデータ入力するだけで、費目の月単位での推移をグラフに出来たりします。

今回、表示や印刷時に「年度、月度」を「年、月」に変更、また、残高更新のボタンを押すと「データ型の変換エラー」となるので、モジュール1を
— ここから–
‘累計残高をグローバル変数で宣言
Dim RuiZan As Long
Public Function ZanIni()
RuiZan = 0
End Function
Public Function ZanDaka(A As Long, B As Long) As Long
RuiZan = RuiZan + Nz(A) – Nz(B)
ZanDaka = RuiZan
End Function
— ここまで —

— ここから–
‘累計残高をグローバル変数で宣言
Dim RuiZan
Public Function ZanINI()
RuiZan = 0
End Function
Public Function ZanDaka(A, B)
RuiZan = RuiZan + Nz(A) – Nz(B)
ZanDaka = RuiZan
End Function
— ここまで —
に変更しました。

家計簿のテーブル画面
家計簿のテーブル画面

家計簿のフォーム画面
家計簿のフォーム画面

ガソリン代をグラフ表示した画面
家ガソリン代をグラフ表示した画面

参考サイト
Access活用講座

CakePHP関連のリンク(一部PHP関連を含む)

CakePHPをいじった時に参考にさせて頂いたサイトの情報を投稿するのを忘れていたので、リンクを投稿しました。
なお、リンク集(links)にもデータを追加しました。

参考にさせて頂いたサイト
CakePHP Installation
CakePHP インストール
CakePHPフレームワークによる快速WEB開発
【CakePHP入門】bakeの使い方
cakePHPインストールでハマった話。(intl.so)
CakePHP3でのタイムゾーンの設定
CaKePHP3 DBタイムゾーン設定
CakePHP3でのタイムゾーンの設定
日付と時刻 – CakePHP
CakePHP3での日時フォーマットとタイムゾーン対応について
DateTime クラスのまとめメモ
CakePHP3でUpload Plugin 3.0を使ってファイルがアップロードできない
CakePHP 画像や各種ファイルのアップロードフォームを作る
画像や様々なファイルをDBに格納
CakePHP / Tips
composerでのcakePHPインストール
cakePHP2でコマンド実行
cakePHP selectフォームのdisabled
cakePHP 日本語のヴァリデーション
cakePHP ビューでの日付の整形
cakePHP TOPページカスタマイズ
cakePHP 確認画面
cakePHP modelの再定義
cakePHP redirect
cakePHPで共通変数の定義
cakePHP アソシエーション
cakePHP モデル等の複数形に注意 information
cakePHP ロールバック
cakePHP conditionの指定方法
cakePHP formで複数要素を配列として利用
cakePHPで共通変数の定義
cakePHP ファイルアップロード
cakePHP 動的にタイトルを変更
Upload Plugin 3.0
For documentation (Introduction Upload Plugin 3.0,..etc)
Uploading files and images with CakePHP 3 or a tutorial on using the 3.x version.
Upload Plugin 2.0 for CakePHP 2.x documentation.
CakePHP3でファイルのアップロード処理を自作・解説付き・その1
CakePHP3で画像・ファイルのアップロード処理を自作・解説付き・その2
CakePHP3のForm Helperの使い方のまとめ
CakePHP3でDocumentRootやtmp、webroot、logsなどのフォルダへのパスの定数
CakePHP3でDocumentRootやwebroot、imgフォルダのURLやドメイン、パスを取得
2017年版!最新のPHPフレームワーク比較と選ぶ基準
Windows 10 + IIS + PHP 7+CakePHP 3+MSSQLを、サブディレクトリに入れて使う
CakePHP を IIS7.5 で動かす
xoopsCube + CakePHP
CubeCakeを使う場合に注意する点 その1
Cakecon xoops cubeなのにcake-phpを使う
PHPでファイルアップロードを実装する方法
PHP製ファイル管理ツール『File Thingie』
PHP Labo – フリーPHPスクリプト配布サイト


 

Powered by XOOPS Cube 2.2 © 2001-2016 XOOPS Cube Project Distributed by XOOPS Cube 2.2 Distribution Team.