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」って指定しないといけなかったけ。
俺の環境の問題か?今度時間があれば調べよう。