アーカイブ

Archive for 2012年1月

AccessでMySqlでリンク

MySqlのデータをGUIで更新するツールですが、意外とExcelとかから貼り付けができるツールが見当たらない。(知らないだけ?)
Accessでリンクマネージャで使えばいけるのでリンクしてみた。そこで文字化けしたのが以下で対応できる。

ODBCの詳細設定で文字セットの設定を以下に設定するとOK。

Initial Statement:set names cp932
Chatacter Set:cp932

カテゴリー:その他

MySqlの文字コード

OracleDBからMySqlにデータを移行したことろ文字化けしている。
しまった。文字コードの設定をしていなかったことを思い出した。。。

MySqlにログインして文字コードを調査。

>show variables like ‘character_set%’;

+————————–+—————————————-
| Variable_name | Value
+————————–+—————————————-
| character_set_client | cp932
| character_set_connection | cp932
| character_set_database | latin1
| character_set_filesystem | binary
| character_set_results | cp932
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5
+————————–+—————————————-

思ったとおり、「latin1」になっている。
「utf8」に変更しないと。

すでにデータを突っ込んでいるので先ずはデータをファイルにダンプする。

#mysqldump -u [ユーザ] -p[パスワード] lawyerseek –default-character-set=latin1 > dump.sql
※「–default-character-set=latin1」を指定しないとファイルにn出力した時点で文字化けしてしまう。

出力したファイルをテキストエディタで開き「latin1」を「utf8」に置換する。

次にMySqlの設定を変更する。

C:\Program Files\MySQL\MySQL Server 5.5\my.ini

※Linuxは「/etc/my.cnf」にある。

を開き、以下のように文字コードの設定を追加する。

※Windowsの場合はなぜか、my.iniを「C:\Windows」以下にも配置しない反映されない。

[client]
default-character-set=utf8

[mysqld]
character_set_server=utf8

MySqlを再起動する。

# net mysql stop

#net mysql start

※Linuxは「/etc/init.d/mysqld restart」でOK。

文字コード間違って作成されているデータベースを削除する。
>drop database lawyerseek;

文字コードを指定してデータベースを再作成
>create database lawyerseek default character set utf8;

先ほどバックアップして、文字コードの置換を行ったダンプファイルを読み込む。

>mysql -u lawyerseek -plawyerseek lawyerseek < _dump.sql

これで文字コードが直っているはず。

カテゴリー:その他

MySqlのログ出力

今運用しているサイトをOracleDBからMySqlへのリプレイスすることにした。
こないだまではrubyで作成されたサイトをjavaに置換していたりとなんとま効率の悪いこと。。。
でも、勉強にはなりますから。
テーブルの構造等はほとんどかえずにリプレイスを行ったが、SQLの構文が少し異なっている部分があり
エラーが出るので、ログの解析。そのときのメモ。

>show variables like ‘log’;
で設定の確認。
+———————————+————————
| Variable_name | Value
+———————————+————————
| log | ON
+———————————+————————

「log=ON」になっていなかった場合は

>set global log = ‘ON’;

で設定変更。

>show variables like ‘general_log_file’;

+——————+———————-
| Variable_name | Value
+——————+———————-
| general_log_file | C:\ProgramData\MySQL\
+——————+———————-

に設定されているファイルに実行されたSQLが出力される。

ついでに、スロークエリの設定もしておく。
レスポンスに問題があるSQLが出力される。

>show variables like ‘log_slow_queries’;
で設定の確認。
+———————+——————————-
| Variable_name | Value
+———————+——————————-
| log_slow_queries | ON
+———————+——————————-

「log_slow_queries=ON」になっていなかった場合は

>set global log_slow_queries = ‘ON’;

スロークエリを出力する閾値を1秒に設定する。

>show variables like ‘long_query_time’;
で設定の確認。
+—————–+———–+
| Variable_name | Value |
+—————–+———–+
| long_query_time | 10.000000 |
+—————–+———–+

>set global long_query_time = 1;

>show variables like ‘slow_query_log_file’;

+———————+——————-
| Variable_name | Value
+———————+——————-
| slow_query_log_file | C:\ProgramData\MyS
+———————+——————-

に設定されているファイルにスロークエリが出力される。

今回は上記設定をクエリから行ったが、常時同じ設定にするのであれば
my.cnfを修正する。

カテゴリー:その他

muninのインストール

先日リリースしたサーバを監視するためmuninをインストールします。
muninは他の監視ツールより高機能で導入も簡単とのこと。
今回、監視ツールを初めて使うので他との比較はできませんが。。。

まずは、yumインストールをしたいのでmuninがyumインストールできるEPELリポジトリを追加する。

# rpm -ivh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm

※サーバ機は、CENTOS6系なので、上記のrpmファイルにてリポジトリをインストール。
CENTOS5系の場合は、別5系のrpmがある。最初は、間違って5系のrpmでリポジトリを追加してしまいmuninのインストールで失敗していました。。。
一日かかってやっと気が付き、5系のリポジトリをアンインストールして、6系のリポジトリに入れなおしたらうまくいった。

epelのリポジトリの確認
# yum list installed | grep epel
epelのリポジトリ削除
# yum erase epel-release.noarch

次は、muninとmunin-nodeをyumインストール
# yum –enablerepo=epel -y install munin munin-node

次はmuninの設定
# vi /etc/munin/munin.conf

以下で監視するサーバの設定をおこなう。「[SampleInfo]」の部分がmuninのTOPページのリンクになる。

# a simple host tree
[SampleInfo]
address 127.0.0.1
use_node_name yes

次は、監視される側の設定。監視されるホスト名を設定する。

また、munin-nodeサーバにアクセスする親サーバのIPアドレスに対して許可設定をする。

# vi /etc/munin/munin-node.conf


# Set this if the client doesn't report the correct hostname when
# telnetting to localhost, port 4949
host_name sample.com

# A list of addresses that are allowed to connect.  This must be a
# regular expression, since Net::Server does not understand CIDR-style
# network notation unless the perl module Net::CIDR is installed.  You
# may repeat the allow line as many times as you’d like
allow ^116\.80\.16\.202$

次にmuninを再起動する。設定を変更した場合は再起動しないと反映されない。
# /etc/init.d/munin-node restart

アパッチも再起動。
# apachectl -k graceful

ポートの開閉確認。一応、muninで使用しているポートが正しく開かれているか確認。
nmap localhost -p 4949

つきに以下のコマンドで起動設定を確認
# chkconfig –list munin-node

マシン起動時にmunin-nodeも起動するように設定
# chkconfig munin-node on

エラーなどのログは以下から参照する。
# ls /var/log/munin/

カテゴリー:その他

Oracleのリスナについて

WindowsのローカルマシンにオラクルDBを入れているのだが、データを参照するときはいつも「Oracle Sql Developer」を使っている。
サーバ機もにオラクルDBを入れているが、そのデータを参照する場合は、ターミナルでsqlplusを使って参照している。

でいつもは「Oracle Sql Developer」でローカルのオラクルDBを参照しているところ、なにを思ったのかコマンドプロンプトでsqlplus叩いてみた。

# sqlplus system/system@XE

>>>> ORA-12154: TNS: 指定された接続識別子を解決できませんでした

え・・・

な~ぜ~。。。

# tnsping localhost
→サーバのオラクルリスナーが起動しているか?OK。
# lsnrctl status
→クライアントのオラクルリスナーが起動しているか?OK。
# lsnrctl services
→リスナー「XE」の設定はちゃんとあるか?OK。
→oracle\product\10.2.0\server\NETWORK\ADMIN\tnsnames.oraにもちゃんとあるか?OK。
# lsnrctl stop
→停止。権限の問題で直接コマンドはたたけないのでコントロールパネルのサービスから停止する。
# lsnrctl start
→開始。権限の問題で直接コマンドはたたけないのでコントロールパネルのサービスから開始する。

んんんんんんん。問題が見当たらない・・・・。

# sqlplus system/system@XE
↑こいつがいけないのか。。。でもサーバ機ではこのコマンドで通る。。。
でも、やっぱ怪しい。

# sqlplus system/system@localhost:1521/XE

に変更してみる。通った。「localhost:1521」って指定しないといけなかったけ。
俺の環境の問題か?今度時間があれば調べよう。

カテゴリー:その他