ラベル MySQL の投稿を表示しています。 すべての投稿を表示
ラベル MySQL の投稿を表示しています。 すべての投稿を表示

2011年10月9日日曜日

[Memo]WikiデータをMySQLのテーブルへ格納

以下のサイトを参考にさせて頂きながら、
wikipediaのデータをMySQLへ投入しました。

全体の流れの手順については以下の2サイトを参考にさせて頂きました。
http://www.zubapita.jp/2009/03/02/build_wikipedia_db/
http://chamu.org/blog/?p=412

エラー回避にはこちらのサイトを参考にさせて頂きました。
http://d.hatena.ne.jp/mktkmr/20091005/1254752838

前提条件として、MySQLインストール済み(my.cnf設定も済み)とします。
xml2sqlというソフトをインストールするところからです。
xml2sqlをインストールすると同時にexpat-1.95.8というソフトも使用するので
設定しておきます。

ここのサイトからダウンロードして解凍します。
次にディレクトリ中のxml2xsqlの下記の部分を追加します。
[code]
[root@localhost ~]# cd xml2sql-0.5
[root@localhost xml2sql-0.5]# vi xml2sql.c
[/code]
以下の2行を追加します。
putcolumn(&rev_tbl, "NULL", 0);
putcolumn(&rev_tbl, "NULL", 0);

xml2sql_file_2011-10-09

2011年9月22日木曜日

[MySQL]パスワードが効かなくなったので調べた

先日からMySQLのログインができず、いつものパスワードが通らないので試行錯誤していた記録です。

まず、ログインを試みると

[code]
[root@skasuya ~]# mysql -u root -p
[/code]
Enter password: #ここでパスワード入力しています。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

このようなエラーがでます。

次に、そもそもMySQLが起動しているか確認します。

[code]
[root@skasuya ~]# mysqladmin ping
[/code]
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists!

pingを打ってもソケットを確認しろというメッセージ。

[MySQL]DB接続確認コマンド

ひさしぶりに新しいMySQLのコマンドを覚えたのでメモ。
(コネクションプールのテストを行ったときに必要なコマンド。)

rootではなくユーザー登録してDBを作成しておきます。
grant all privileges on DB名.* to ユーザー名@localhost identified by 'パスワード';

接続されているプロセスを見るコマンド
show processlist;
processlist

DBの接続数を見るコマンド
show status like 'Threads_connected';
Threads_connected

DB接続数の最大値を見るコマンド
show status like 'Max_used_connections';
Max_used_connected

2011年6月6日月曜日

mysql-pythonの設定

さくらVPSのCentOS上でPythonからMySQLを使用する為のドライバー設定を行った。

ez_setup.pyを予め設定しておく。


wget
http://peak.telecommunity.com/dist/ez_setup.py
python ./ez_setup.py



本家サイトから
mysql-pythonのドライバー(MySQL-python-1.2.3)を設定する。

ドライバーを設定する前に環境の確認を行う。


  • MySQL-3.23 から 5.0
  • Python-2.3 から 2.7
  • Python3系は今後サポートされる予定(2011/06/05現在)
  • wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz/download
    tar xzvf MySQL-python-1.2.3.tar.gz
    cd MySQL-python-1.2.3
    python setup.py build
    python setup.py install
    echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf.d/mysql.conf
    ldconfig
    [/code]

    これでできたみたい。
    (後から追記すると思う。)

    2010年9月6日月曜日

    [MySQL]ERROR 1366 (HY000): Incorrect string value

    mysqlでERROR 1366 (HY000): Incorrect string valueが出た場合は、
    my.iniの文字コードの設定に問題があるため下記の様に変更する。

    my.iniのある場所はWindows機だと、C:\Program Files\MySQL\MySQL Server 5.0 に格納されている場合が多い。

    [code]
    [mysql]
    #default-character-set=utf8
    default-character-set=sjis
    [/code]

    [code]
    mysql> show variables like 'character%';
    +--------------------------+---------------------------------------------------------------+
    | Variable_name | Value |
    +--------------------------+---------------------------------------------------------------+
    | character_set_client | sjis |
    | character_set_connection | sjis |
    | character_set_database | utf8 |
    | character_set_filesystem | binary |
    | character_set_results | sjis |
    | character_set_server | utf8 |
    | character_set_system | utf8 |
    | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
    +--------------------------+---------------------------------------------------------------+
    8 rows in set (0.00 sec)
    [/code]

    でcharacter-setがsjisになっていることを確認しておく必要がある。

    2010年9月2日木曜日

    [MySQL] テーブル作成編

    [DB作成]
    [SQL]
    CREATE DATABASE PARTS_VIEW;
    [/SQL]
    [テーブル1]
    [SQL]
    CREATE TABLE PARTS_PICT(
    PO_NO VARCHAR(30) NOT NULL,
    PO_PICT VARCHAR(100),
    PRIMARY KEY (PO_NO))
    type=InnoDB;
    [/SQL]

    [テーブル2]
    [SQL]
    CREATE TABLE PARTS_INFO(
    PO_NO VARCHAR(30) NOT NULL,
    SUP_NO VARCHAR(100),
    SUP_NAME VARCHAR(100),
    SUP_CONTACT VARCHAR(20),
    PRIMARY KEY (PO_NO))
    type=InnoDB;
    [/SQL]

    2010年8月1日日曜日

    ubuntu10.04にLAMP設定を行う

    ubuntu10.04をWebサーバーに変更してからWeb環境を構築するに当たり
    インストールしておけば楽になるものを探していたら下記の3つのパッケージを
    インストールすることで最小限のWebサーバーが完成しました。
    とても簡単、コマンド打って、途中"Y"をEnterするだけです。
    [code]
    sudo apt-get install mysql-server php5-mysql
    sudo apt-get install php5-cli
    sudo apt-get install phpmyadmin
    [/code]

    test.php というファイル名で下記を記入して保存します。
    [code][/code]

    これでOKです
    確認方法は、http://localhost/test.php できちんと表示されればOK!
    またphpadminもインストールしたので、http://localhost/phpmyadmin/ できちんと表示されればOK!

    2009年12月9日水曜日

    JDBCドライバの接続確認

    JDBCドライバとMySQLの接続テスト


    public class Dbconnect {
    public static void main(String args[]) {
    Connection conn = null;
    try {
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    conn = DriverManager.getConnection("jdbc:mysql://localhost/データベース名", "root", "パスワード入力");
    System.out.println("MySQL と接続しました。");
    } catch (SQLException e) {
    System.out.println("MySQL との接続失敗");
    System.out.println("SQLExceptionは " + e.getMessage());
    System.out.println("SQLStateは " + e.getSQLState());
    System.out.println("VendorError: " + e.getErrorCode());
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    try {
    if (conn != null) {
    conn.close();
    conn = null;
    System.out.println("MySQLとの接続を切断しました");
    }
    } catch (Exception e) {
    }
    }
    }
    }

    2009年8月7日金曜日

    Java World Day 2009に参加して(1)

    Java World Day 2009に参加してきた。セミナー内容と会場共に充実していた。
    自分が特に気になったのは、Sun Microsystems社とスティルハウス社のセミナーだった。
    忘れないうちに記しておく。

    Sun Cloudアーキテクチャ

    は以下の4項目の戦略が

    1. Conpute Service

    2. Virtual Datacenter経由での管理を行う。AWS EC2ににたAPIを提供している。
    3. Virtual DataCenter

    4. ドラッグ&ドロップにて構築済のコンポーネントを設計が可能。
      クラウドへ適用。
    5. Open API

    6. Project Kenaiというプロジェクトや各APIを提供。
    7. Storage Service

    8. WebDAV経由でファイル操作が可能。



    Virtual Datacenterの設定手順:
    1)WANとルーターが表示されている。
    2)Hadoopをルーターのノードに必要数設定する。
    3)WANとルーターの間にファイヤーウォールを設定する。
    ここでグローバルIPを設定する。
    4)最後にファイヤーウォールとルーターを接続する。
    5)以上

    2009年7月29日水曜日

    CIAのdb作成(1)

    mysql> show tables;
    +-------------------+
    | Tables_in_CIA |
    +-------------------+
    | mysqlicious |
    | scuttle_bookmark |
    | scuttle_tags |
    | toxi_bookmark |
    | toxi_bookmark_tag |
    | toxi_tags |
    +-------------------+
    6 rows in set (0.00 sec)


    mysql> show tables;
    +----------------------------+
    | Tables_in_CIA |
    +----------------------------+
    | days |
    | folder |
    | folder_item |
    | item |
    | item_metadata |
    | item_review |
    | item_type |
    | mysqlicious |
    | scuttle_bookmark |
    | scuttle_tags |
    | search_terms |
    | tag_summary |
    | tagging_source |
    | tags |
    | toxi_bookmark |
    | toxi_bookmark_tag |
    | toxi_tags |
    | user |
    | user_item_rating |
    | user_item_rating_statistic |
    | user_item_tag |
    | user_metadata |
    | user_search_term |
    +----------------------------+
    23 rows in set (0.00 sec)

    2009年5月8日金曜日

    JDBCドライバーの設定

    Tomcatがインストールできたので、JDBCドライバーを入れてみることにした。

    [root@localhost ~]# //←場所はここで作業をした。
    wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.0.8.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/
    tar xvzf mysql-connector-java-5.0.8.tar.gz
    cd mysql-connector-java-5.0.8
    mv mysql-connector-java-5.0.8-bin.jar /usr/local/tomcat/lib
    export CLASSPATH=$CLASSPATH:/usr/local/tomcat/lib/mysql-connector-java-5.0.8-bin.jar

    さてここからコネクト実験だ。

    2009年3月29日日曜日

    MySQLレプリケーション

    レプリケーションとは

    一般にレプリケーションとは、他のサーバにデータベースを複製することをいいます。複製はLANやインターネットなどネットワークを経由して行われるので、物理的に離れた場所にあるサーバへデータベースをレプリケートすることもできます。

    複製方法の種類

    複製の方法には同期と非同期の2種類があります。
    同期複製の場合は、レプリケーションを構成する全てのサーバで常に全く同じデータが保持されることが保証されますが、一方でデータの同期を取るために他のサーバの応答を待つ必要があるので、サーバの台数が多くなる程、全体の応答性が低下する可能性があります。

    逆に非同期複製は、サーバ台数の増加によるパフォーマンスの低下はほとんどありませんが、短い時間で観測した場合、サーバ間でデータの同期が保証されないという問題があります。

    構成の種類

    主なレプリケーションの構成にはマスタスレーブとマルチマスタがあります。
    マスタスレーブ構成は、更新系のクエリを受け付けるのはマスタサーバのみで、スレーブはマスタから伝搬されたもの以外の更新処理は行いません。

    マルチマスタは、どのサーバでも更新系のクエリを受け付けるような構成です。

    MySQLのレプリケーションでできること


    負荷分散


    負荷分散機を経由して、スレーブサーバ群に参照系のクエリを負荷分散することができます。ただし、前述した通りMySQLのレプリケーションは非同期なの で注意が必要です。具体的には、全く更新しないテーブル、もしくは、クライアントアクセスがない夜間のバッチ処理でしか更新しないマスタテーブルに対する 参照系のクエリのような、スレーブへの伝搬の遅延が問題にならないクエリは負荷分散することができますが、ユーザ情報の更新をマスタに対して行った直後に スレーブにそのユーザの情報を問い合わせるような場合には、得られた結果が食い違う危険性があります。

    MySQLのレプリケーションでできないこと


    更新系の負荷分散


    更新系クエリの負荷を複数のサーバに分散することはできません。

    まず、単純なマスタスレーブ構成ではマスタは1つしかないので、更新系のクエリはこのマスタに集中させるしかありません。

    次にデュアルマスタ構成を考えてみます。MySQLのレプリケーションでは、スレーブは他のスレーブのマスタになることができるので図3のようなデュアル マスタ構成にすることができます。しかし、マスタ間で更新処理が競合する可能性があるので、より上位のレイヤで更新対象となるテーブルごとにクエリの発行 先のマスタを区別するなど工夫が必要です。例えばユーザー情報の更新はマスタAへ、商品情報の更新はマスタBへ、というようにです。

    これで更新系のクエリを分散することができるようになるわけですが、実は負荷の分散にはなっていません。なぜなら、マスタAに対して行われた更新処 理は、レプリケーションによりマスタBでも実行されるので、結局、両方のマスタで更新系のクエリが実行されることになり、更新系クエリの受け付けの分散は できても更新処理の負荷を分散したことにはならないからです。

    Reference http://www.irori.org/doc/mysql-rep.html