スポンサードリンク

2012年7月21日土曜日

CSVファイルをMySQLに取り込む

ソフトで毎回MySQL DBをオープンして登録するより、
ファイルに一気に出力し、そのあと一気にMySQLに登録させる方が早いことに気づいた。
その備忘録。

MySQL コマンド
load data local infile "CSVファイルのパス" into table テーブル名 fields terminated by ','

使用例)
CSVファイルは、/homeディレクトリ直下にData.csvがある。
CSVファイルは、,で区切られている。
登録するテーブルは、DataTableとする。

mysql > load data local infile /home/Data.csv into table DataTable fields terminated by ','; [ENTER]

※注意点
CSVファイルの,区切りで区切られている順に登録テーブルの列が定義されていること。
CSVファイルの文字列は、"" または '' で囲まれていないこと。
もし、""で囲まれている場合は、以下をSQLの最後に追加すればよい。

enclosed by '"';

以上

2012年7月1日日曜日

自宅サーバ再構築全手順

自宅サーバを一から構築するときの全手順をここにまとめる。
構築するサーバは、HTTPDサーバ、MySQLサーバ、SSHサーバとする。

おおまかな手順として、以下となる。

A. (旧サーバ) データ・設定のバックアップ
B.  OSの再インストール
C. (新サーバ) 初期設定
D. (新サーバ) サーバに必要な設定・ソフトウェアのインストール・調整
E. (新サーバ) 旧サーバデータの復元


A. (旧サーバ) データ・設定のバックアップ

バックアップ場所は、外付けHDDのBackupフォルダ(/media/HDD/Backup)とする。

1.MySQLのデータベースを全バックアップする。
 #su -
 #mysqldump --opt -u root -p --all-databases > /media/HDD/Backup/mysqlbackup.dump

2.MySQLの設定ファイルをバックアップする
  ※アクセス権もそのままでコピーしておけばそのまま使える
etcディレクトリ作成
#mkdir /media/HDD/Backup/etc
元設定ファイルをコピー
#cp /etc/my.cnf /media/HDD/Backup/etc/my.cnf

3.PHPの設定ファイルをバックアップする
#cp /etc/php.ini /media/HDD/Backup/etc/php.ini

4.HTTPの設定ファイルをバックアップする
#mkdir -R /etc/httpd/conf
#cp /etc/httpd/conf/httpd.conf /media/HDD/Backup/etc/httpd/conf/httpd.conf

5.その他、サイトサービスに関係するソフト・ファイルを退避する

B.  OSの再インストール

1.CentOS6のイメージを焼いたCDをPCにセットし、CDブートさせる。

2. 言語は、英語を選択する

3.HDDはカスタムレイアウトにする。

C. (新サーバ) 初期設定

1. ファイアウォールの以下のポート許可する。
    SSH      (22)      TCP/UDP
    smtp      (25)      TCP/UDP
    POP3    (110)    TCP/UDP
    VNC     (5900)  TCP/UDP
    MYSQL (3306) TCP/UDP
    IMAP    (143)    TCP/UDP

2. ネットワーク設定
     DHCP固定割当設定の通り、IPが割り当てられ、インターネットに
接続できるか確認。

3. PC再起動

D. (新サーバ) ソフトウェアのインストール・調整

※以降、SSH接続による作業
   ただし、公開鍵作成までは外部アクセスではなく、内部から設定すること。

1. 公開鍵を作成する

   (1). RSA暗号方式の鍵を生成する。
     $ssh-keygen -t rsa (ENTER)

   (2). そのままENTERキーを押す。

   (3). パスフレーズを入力する。
       (これはクライアントがアクセスするときに入力するフレーズになる。)

   (4). 再度パスフレーズを入力する。










  (5). (ホームディレクトリの.sshフォルダに鍵ファイルが作成されるので)
       鍵ファイル(id_rsa.pub)の名称をauthorized_keysに名称変更する。

      $mv id_rsa.pub authorized_keys

  (6). authorized_keysファイルのアクセス権を変更する。

      $chmod 600 authorized_keys


  (7) . id_rsaファイルは、SSHクライアントにて使用するので、
       クライアントのマシンで何らかの方法により渡すことで、
      外部アクセス時でも安全にSSH接続できるようになる。

2. HTTPDインストール・設定
   (1)  rootになる。
         #su -
   (2) インストールコマンドを実行 (既にインストールされている場合はそのまま終わるのでOK)
        #yum -y install httpd
 
   (3) デフォルトのHTTPD設定ファイルのhttpd.confを一応退避しておく。
        #cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_org

   (4)バックアップ元からhttpd.confを復元する。(これで旧サーバと同じ設定になる)
       #cp /media/HDD/Backup/etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf

   (5)HTTPDサービスを開始 (本当は、startでよいが、一応一度停止させるため)
      #service httpd restart
 
   (6)OS起動時に自動的にサービス起動する設定
     #chkconfig httpd on

   (7) (6)設定の確認 (3, 5でONになっているのであればOK)
     #chkconfig | grep httpd

 3. MYSQLインストール・設定
 (1) MySQLインストール

     #yum -y install mysql-server

 (2)デフォルトのMySQL設定を一応退避する。

     #cp /etc/my.cnf /etc/my.cnf_org

 (3) 旧サーバのMySQL設定を復元する
     #cp /media/HDD/Backup/etc/my.cnf /etc/my.cnf

 (4) MySQLサービスを再起動する。

     #service mysqld restart

 (5) MySQLサービスの自動起動設定をする。

    #chkconfig mysqld on

 (6) (5)設定の確認

    #chkconfig | grep mysqld

  (7) 旧サーバのデータベースのデータを復元する。

     #mysql -u root < /media/HDD/Backup/mysqlbackup.dump

  (8) MySQLに接続
    #mysql -u root

  (9) ユーザリストを確認
    > select user,host,password from mysql.user;

  (10) root以外のユーザを削除する
   > delete from mysql.user where user='削除するユーザ名';

  (11) rootのパスワードを設定する。
  > set password for root@localhost=password('任意のパスワード');
  > set password for root@127.0.0.1=password('任意のパスワード');

  (12) root以外のユーザを作成する。(192.168.0ネットワークから接続できるユーザ)
  >grant all on *.* to 任意のユーザ名@"192.168.0.%" identified by '任意のパスワード' with grant option;

  (13)   ローカルホスト接続ユーザ作成
>grant all on *.* to 任意のユーザ名@localhost identified by '任意のパスワード' with grant option;

4. PHPインストール・調整
(1) PHP環境をインストール
 #yum -y install php php-mbstring php-pear php-mysql mysql-devel php-gd

(2) PHPのデフォルト設定ファイルを退避
 #cp /etc/php.ini /etc/php.ini_org

(3) 旧サーバのPHP設定ファイルを復元
 #cp /media/HDD/Backup/etc/php.ini /etc/php.ini

(4) HTTPD再起動
 #service httpd restart

4. cronの自動実行スクリプト設定
(1)  ユーザ用のcrontabファイルを作成する
      #crontab -u (ユーザ名) /etc/crontab
(2)  指定ユーザのcrontab設定ファイルを編集
     #crontab -u (ユーザ名) -e

(3) DynamicDNSへの通知を10分おきに実行する設定
  */10 * * * * wget --spider --http-user=(mydns割り当てID) --http-password=(mydns割り当てパスワード) http://www.mydns.jp/login.html

(4) 保存して閉じる
    :wq

(5) cronサービスを再起動する
   #service crond restart
 
5. MySQLデータベースドライバ for Java 配置
本ブログ管理者の環境では、サービス用ディレクトリと同じ階層にlib
フォルダを配置し、その中にmysqlconnector - *を配置する。


(その他、必要に応じて以下を設定する)

7.VNCサーバ動作させる設定。サーバ再起動後も動作するようにする。
(パスワードは8文字しか入力できないがそれ以上入力すればちゃんと読み込まれているので長いパスワードにすること)

8. HP用、サービス用ファイルを元あった場所にコピー

<確認>
1. ホームページアクセスできるか?
ファイアウォールの80番ポート許可していなければNGになるので注意
2. VNCクライアントでリモートデスクトップ使えるか
    ファイアウォールの5900番ポート許可していなければNGになるので注意
3. SSHで鍵を使用して接続できるか?
ファイアウォールの22番ポート許可していなければNGになるので注意
4. データベースで表示させて正常に復元できているか
   
以上

MySQLネットワーク接続

1.サーバのポート許可する
    3306 TCP/UDP オープン

2. mysqlにrootとして接続
  $mysql -u root (ENTER)
  パスワードを入力

3.ホストを作成する
  > grant all on *.* to test@"192.168.0.%" identified by 'pass' with grant option;

 ユーザ名 test
  接続できるネットワークアドレスは、192.168.0
   パスワード pass

4. ユーザが正しく作成されたか確認
   select user,host,password from mysql.user;




以上