忍者ブログ

インフラ構築手順書

はじめてのインフラ、サーバ構築時に役に立つように構築手順情報をまとめました。


[PR]

広告 

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



OracleからMySQLへのマイグレーション時に発生した問題点

広告 

OracleからMySQLへのマイグレーション時に発生した問題点

Oracle10gからMysql5.5へマイグレーションを行った際に遭遇したエラーや問題点をまとめました。
Mysqlのマイグレーションを考えている方の参考にして頂ければ幸いです。
OracleからMySQLへのマイグレーション時に発生した問題点

・行サイズの上限問題
・カラムの中の改行問題(explanation)
・Nullインポート問題
・OracleのDATE型(yy-mm-dd)をMysqlにインポートする際の不具合
・余分な空白が入る
・OracleのCLOB出力問題
・ミリ秒問題
・文字化け




行サイズの上限問題

InnoDBは、テーブルスペースのページサイズの約半分で、ページサイズのデフォルトは16KBなのでデフォルトの行サイズは約8KBです。
ページサイズを変更するには、MySQLをソースからコンパイルして、さらにテーブルスペースとログファイルを再作成する必要があります。 ページサイズの上限は64KBであるので、その場合の1行の最大サイズは32KBとなります。
MySQL Clusterは1行あたり最大8KB。
16Kb以外のテーブルサイズのサポートはMySQL5.6以降となります。

行サイズの上限問題に関するMysqlインポート時のエラーメッセージ
ERROR 1118 (42000): Row size too large. The maximum row si
■行サイズの上限問題の解決策
使用していない不要なカラムがあったので、不要カラムを削除することで回避しました。



カラムの中の改行問題(explanation)

SqlPlusは、カラム中に改行がある場合、空行を挿入する仕様となっているため、 Mysqlにインポートする際に空行の部分が、そのままインポートされてしまう。
つまり、余分なデータがインポートされます。

■カラムの中の改行問題の解決策
OracleからエクスポートしたCSVから手動で空行を削除し、MySQLへインポートすることで回避しました。



Nullインポート問題

Nullインポート問題として、「MysqlのDate型やint型のNull問題」と「UNIQUEKEYが指定されている場合、空カラムを複数登録できない」 という問題に遭遇した。
MysqlのDate型やint型のNull問題
Date型やint型がカラムが空の場合、OracleからエクスポートしたCSVをインポートすると値が[0]となり、インポートされてしまいます。 ※マイグレーションツールを使った場合は、NULLとしてインポートされました。

UNIQUEKEYが指定されている場合、空カラムを複数登録できない
Mysqlの場合、UNIQUEKEYが設定されているカラムに、空カラムをインポートできるが、複数あるとユニーク違反となり、 インポートできない。しかしNULLを明示すれば複数登録可能である。


■MysqlのDate型やint型のNull問題の解決策
カラムが空の場合、\Nに置き換える。 ※NULLに置き換えるとNULLとして認識されてなかった。 ※一部のカラムでNULLでは警告がでるので、NULLと同じ意味を持つ「\N」とする。 CSVインポートする際は、NULLを「NULL」と記述するより、「\N」と記述した方がいいようである。下記事象は「\N」とすることで解決しました。 (桁数が4桁以内の場合、「NUL」、「NU」の様に中途半端に入り、NULLではなくなる。)
Oracle側で空カラムをNULL文字列に置換してエクスポートする。
(マイグレーションツールの場合、デフォルトでNULL文字列に置換される)
・Null置換を考慮したSQL
set echo off
set linesize 32767
set pages 0
set trimspool on
set feed off
spool CSV_m_agencyhoge.csv
select
          '~' || DECODE(AGENCY_CD, '', '\N',AGENCY_CD  ) || '~'
 ||','||  '~' || DECODE(AGENCY_NAME, '', '\N',AGENCY_NAME  ) || '~'
 ||','||  '~' || DECODE(DELETE_FLG, '', '\N',DELETE_FLG  ) || '~'
 ||','||  '~' || DECODE(UPD_DATE, '', '\N',TO_CHAR(UPD_DATE , 'YYYY-MM-DD HH24:MI:SS' ) ) || '~'
 ||','||  '~' || DECODE(UPD_USER_ID, '', '\N',UPD_USER_ID  ) || '~'
 ||','||  '~' || DECODE(INS_DATE, '', '\N',TO_CHAR(INS_DATE , 'YYYY-MM-DD HH24:MI:SS' ) ) || '~'
 ||','||  '~' || DECODE(INS_USER_ID, '', '\N',INS_USER_ID  ) || '~'
from m_agencyhoge ;
spool off
※区切り文字[,]、文字列の囲み[~]としています。環境に合わせてください。




OracleのDATE型(yy-mm-dd)をMysqlにインポートする際の不具合

Oracle側で99-12-31というデータはMAX年(9999)を意味しているがMysqlにインポートすると1999-12-31と解釈されてしまう。

■OracleのDATE型をMysqlにインポートする際の不具合の解決策
Oracle側でエクスポートする際にDATE型のフォーマットをYYYY-MM-DDとしてエクスポートする。
上記SQLの「TO_CHAR(INS_DATE , 'YYYY-MM-DD HH24:MI:SS' )」の部分




余分な空白が入る問題

Oracleからエクスポートする際に、「set colsep ','」を使うと余分な空白が入り、Mysqlへインポートされる。

■余分な空白が入る問題の解決策
Oracle側でエクスポートする際に「set colsep ','」を使わず、下記の様にカラムをひとつひとつ書くと回避できる。
 
select emp_id ||','|| dept_id ||','|| first_name ||','|| last_name ||','||salary from emp;




OracleのCLOB出力問題

CLOB型が含まれているデータをCSV形式にエクスポートすると正常に出力されない現象が発生

調べてみるとsqlplus で文字数が制限があるためCLOB型のデータを全文表示できないことが分かった。

■OracleのCLOB出力問題の解決策
そのため「set long 数字」で文字数制限を広げる必要がある。
set PAGESIZE 0
set LINESIZE 500
set long 6000
select CLOB_TAG_INFO from t_event_html_info;




ミリ秒問題

Mysqlではミリ秒に対応していないため、Oracle側のミリ秒をインポートするとエラーがでてしまう。
OracleからエクスポートしたCSVファイルでは、ミリ秒単位まで格納されている場合、Mysqlにインポートすると「0000-00-00 00:00:00」という値でインポートされる。
ミリ秒問題に関するMysqlインポート時のエラーメッセージ
| Warning | 1264 | Out of range value for column 'upd_date' at row 1 |
■ミリ秒問題の解決策
エクスポート時にフォーマットを指定する。
または時間として取り扱っていないのであれば、CHARA型に変更し、文字列として扱う。




文字化け

マイグレーションツールを利用する場合、CSVファイルの文字コードと特殊文字により文字化けすることがある。
OracleデベロッパーなどをクライアントPC(Windows)にCSVファイルを作成する場合も注意が必要!!
※文字コードだけの問題であれば、変換コマンド(iconv)で変換できるが、特殊文字(ー)などがあるとエラーとなる。

■文字化けの解決策
マイグレーションツールを利用せず、手動でエクスポート・インポートする場合は、SSHの文字コードを合わせることで回避できる。



拍手[2回]



システム監視構築の目次

広告 

システム監視構築の目次

システム監視ソフトによるシステム監視では、専用エージェントを用いたサーバーのサーバ監視と、エージェントレスのネットワーク監視がある。

下記は実績があるオープンソースのシステム監視ソフトがある。
リソース監視・死活監視ができるシステム監視ソフト
 Nagios、Zabbix、Hinemos
リソース監視ができるシステム監視ソフト
 Munin


システム監視項目
WEBシステム監視監視項目 監視項目説明
サーバ監視リソース監視 CPU使用量 ユーザ時間とシステム時間におけるCPU稼働率を監視
(マルチプロセッサの場合は、総合的な稼働率を取得)
ロードアベレージ CPUでの処理待ちの実行プロセス数を監視
メモリ使用量 物理メモリ(バッファ+キャッシュを省くこと可能)の使用率を監視
SWAP使用量 スワップ領域の使用率を監視
HDD使用量 指定したパーティションの使用率を監視
WEBレポート
(リソース状況)
リソースの使用状況をWEBレポートとして提供
プロセス監視 HTTP(S) 指定したプロセスの存在を監視
SMTP
DNS
SSH
MYSQL/PostgreSQL
その他多数のプロセス監視
ログ監視 システムログ監視(messages,secure) システムログ(messages,secure)に出力される指定機ワードを監視
ネットワーク監視URL監視 HTTP応答文字列監視 対象URLに対してHTTPリクエストを発行し、その応答ページに指定文字列の有無を監視
HTTPS応答文字列監視
サービス応答監視 HTTP(S) 各プロトコルに合わせたネゴシエーションし正常に応答があるのかを監視します。
SMTP
Port監視 全ポートに対応 指定ポートのオープンを監視
死活監視 PING PINGによる応答を監視


システム監視構築の記事一覧

 ・システム監視Muninの導入手順
 ・システム監視Zabbixの導入手順




[Zabbix統合監視「実践」入門 ~障害通知、傾向分析、可視化による省力運用]の書籍横断比較とレビュー

Zabbix統合監視「実践」入門 ~障害通知、傾向分析、可視化による省力運用
著者:寺島 広大
出版日:2010-04-08
出版社:技術評論社

[Nagios統合監視[実践]リファレンス]の書籍横断比較とレビュー

Nagios統合監視[実践]リファレンス
著者:株式会社エクストランス
出版日:2011-03-25
出版社:技術評論社


[サーバ管理技術入門]の書籍横断比較とレビュー

サーバ管理技術入門
著者:笠野 英松
出版日:2007-05-17
出版社:翔泳社

[rsyslog 実践ログ管理入門]の書籍横断比較とレビュー

rsyslog 実践ログ管理入門
著者:鶴長 鎮一
出版日:2011-04-22
出版社:技術評論社


[サーバ・インフラ構築・運用完全ガイド ]の書籍横断比較とレビュー

サーバ・インフラ構築・運用完全ガイド ~Linux/FreeBSD/Solaris/HP-UX/AIX/WindowsServerマルチ対応
著者:笠野 英松
出版日:2012-11-21
出版社:技術評論社

[サーバ/インフラエンジニア養成読本 管理/監視編 [24時間365日稼働を支える知恵と知識が満載!]]の書籍横断比較とレビュー

サーバ/インフラエンジニア養成読本 管理/監視編 [24時間365日稼働を支える知恵と知識が満載!]
著者:SoftwareDesign編集部 編
出版日:2012-04-11
出版社:技術評論社




拍手[0回]



Munin構築手順

広告 

Muninによるシステム監視

Munin は,システムリソース(ディスク、メモリ、CPU、トラフィック等の使用量を自動でグラフ化し, Web ブラウザから簡単に見れることができるようにするソフトウエアです。
Munin は優れた RRDToolと Perl で書かれたフレームワーク、それと様々な言語で書かれたプラグインたちによって構成されています。Munin は マスター/ノード アーキテクチャー を採っていて、マスターが全てのノードに対し定期的にデータ収集を行います。データは RRDファイル に記録され、必要に応じてグラフを更新します。

Munin構築手順

ここでは、システム監視ソフトであるMuninのインストール・設定手順を説明します。


EPELリポジトリの導入

Muninは、標準リポジトリでは提供されておらず、EPELリポジトリから提供されています。
下記サイトにて、対応のバージョンパッケージをダウンロード・インストールする。
・CentOS6(x86_64)の場合
  http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/
# wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm


・EPELリポジトリをデフォルトでは無効とする。
EPELリポジトリのパッケージをインストールする場合は、明示的にリポジトリを指定させる設定にする。
※意図せず、標準パッケージをEPELリポジトリのパッケージで上書き防止するため。
# vi /etc/yum.repos.d/epel.repo
------------
enabled=0
※enabledの値をすべて「0」にする。


Muninのインストール

監視対象のノードには「munin-node」をインストールし、監視サーバには「munin」をインストールする。
監視サーバ自身の監視を行いたい場合は、「munin-node」と「munin」の両方をインストールする必要がある。

・監視対象のノード
# yum --enablerepo=epel install munin-node
・監視サーバ
# yum --enablerepo=epel install munin
※「--enablerepo=epel」として、EPELリポジトリを明示的に指定する。


インストール後、監視ページhtml自動生成cronジョブが登録される為、設定が完了するまで停止する
# vi /etc/cron.d/munin
---------------
#*/5 * * * *     test -x /usr/bin/munin-cron && /usr/bin/munin-cron


監視対象ノードの設定

初期設定のままでは不要なデータも取得するため、Munin-nodeが起動していた場合は停止させる。
# /etc/init.d/munin-node stop
・監視サーバからのアクセスを許可する
デフォルトままでは、自分自身からのアクセスしか許可されていないため、監視サーバからのアクセスを許可する。 ここでは監視サーバのIPを172.18.1.10としている。
# vi /etc/munin/munin-node.conf
----------------
allow ^127\.0\.0\.1$
allow ^172.\.18\.1\.10$
その他、iptablesでポートを閉じている場合は、監視サーバから監視対象ノードの4949ポートを許可する必要があります。


監視サーバの設定

監視スタート後、監視画面について、追加はできるが監視ノードの削除やレイアウト変更はできないので、注意してください。
・監視画面ツリー構成の設定
DMZとTrustセグメント等のグループ分けすると見やすい画面になる。
# vi /etc/munin/munin.conf
---------------------------
 [1.DMZ;WEB;node-01]
        address 172.18.1.120
        use_node_name yes
        load.load.critical 5
        cpu.user.warning    300
        cpu.user.critical   350



監視プラグインのカスタマイズ

・不必要なプラグインの削除
デフォルトで不要なプラグインが含まれているため削除する。
# cd /etc/munin/plugins
# rm entropy fw_packets ntp_kernel_err ntp_kernel_pll_freq ntp_kernel_pll_off ntp_offset ntp_states proc_pri uptime
上記ディレクトリにシンボリックリンクを張ることで各プラグインスクリプトの出力結果を取得する。最低限のプラグインを設定し、必要になったときリンクを作成する。

Apacheの設定(Muninのグラフ表示設定)

WEBにてリソース情況が確認できるよう、Apacheに設定を追加する。 下記の設定では、基本認証をかけています。
# Include conf.d/munin.conf
--------------------
Alias /munin/ /var/www/html/munin/


Options ExecCGI FollowSymLinks -Indexes
AuthUserFile /home/Admin/.htpasswd
AuthName "Munin"
AuthType Basic
Satisfy any
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
require user administrator




・munin.confファイルを読み込む設定
# vi /etc/httpd/conf/httpd.conf
----------------
Include conf.d/munin.conf

・muninのログ出力ディレクトリ作成
CGIによる動的ページ生成の際、ログを出力する為、Apache起動ユーザーで/var/log/munin/配下にログを出力できるよう権限を設定する。
# chmod 775 /var/log/munin
# chown munin:apache /var/log/munin

グループ毎のday、week表示させる際、グループディレクトリ配下にシンボリックリンクを作成する。
# cd /var/www/html/munin/1.DMZ
# ln -s /var/www/html/munin/1.DMZ ./1.DMZ


Muninのシステム監視開始

・全サーバにおいてmuni-nodeの起動と自動起動設定
# /etc/init.d/muni-node start
# chkconfig munin-node on

・監視サーバでmuninによる監視を開始する
html等の出力をmuninユーザで行う。そのためデフォルトの設定をコメントアウトする。
*/5 * * * *     munin test -x /usr/bin/munin-cron && /usr/bin/munin-cron
#*/5 * * * *     test -x /usr/bin/munin-cron && /usr/bin/munin-cron


拍手[0回]



Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us FC2 ニフティクリップ iza Buzzurl 


最新記事
(09/17)
(04/09)
(04/09)
(03/22)
(01/16)
(12/30)
(12/26)
(09/21)
(09/21)
(09/20)
(09/12)
(06/13)
(06/13)
(03/14)
(02/15)
(01/03)
(01/03)
(10/04)
(09/20)
(09/15)
(09/14)
(09/14)
(09/14)
(09/06)
(08/30)
最古記事
(10/29)
(10/29)
(10/29)
(10/29)
(10/29)
(04/12)
(04/12)
(06/12)
(06/12)
(06/20)
(06/22)
(07/22)
(07/22)
(07/30)
(07/30)
(08/18)
(08/18)
(08/22)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)


PR

Copyright © インフラ構築手順書 : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]

管理人限定

検索フォーム

カスタム検索

フリーエリア

ESXiの基本設定・運用設定
ESXiのSSH設定
ESXiの NTP設定
VMware ESXiでの時刻同期(NTP)ペストプラクティス
ESXiのゲストOS(仮想マシン)複製
ESXiのOVF形式で複製
異なるESXiバージョン間の複製(移行)
クローン作成後の後処理
仮想マシンのLVM追加
仮想共有ディスクファイルの作成
ESXi上でハイパーバイザーを稼動させる
パフォーマンスがでないとき確認すること


サーバ構築手順
ESXi上でRACを構築する
GFS2+DRBD構築
PaceMaker+MySQLレプリケーション構築
PaceMaker+DRBD構築
HeartBeat2+DRBD構築


Solarisの構築手順
Solarisのネットワーク設定変更
Solarisのホスト名変更
Solaris11のresolv.conf変更手順
Solaris11のHDD増設手順


AWS(Amazon Web Service)の基本設定・運用設定
S3 WEBサイトの構築
S3 WEBサイトのアクセス制限
S3 WEBサイトのリダイレクト設定


Windows Azureの基本設定・運用設定
AzureでWordpress構築
英語版Wordpressを日本語化する
AzureWebサイトの独自ドメイン設定
AzureWebサイトのモード変更
WEBアクセスログ解析ツールの比較


WordPressの基本設定・運用設定
WordPressの基本構造
WordPressのインストール手順
Wordpressマルチサイト機能
「続き読む(more)」カスタマイズ
Wordpressの独自PHP
Wordpressをサブディレクトリに移す
既存サブディレクトリをルートディレクトリとする
Wordpressが利用可能な共用ホスティング


Postfix構築
Postfixにおける暗号化したSMTP認証設定


SoftEtherVPNの構築
ESXi上のSoftEtherVPN構築
DDNSと組み合わせたSoftEtherVPNの設定


LinuxのAD連携
LinuxのActiveDirectory連携について
PAM認証でAD連携
ApacheでAD連携(LDAP認証)
ApacheでAD連携(Kerberos認証)
SAMBAで2台目DCサーバを構築
RedmineとGitのLDAP(AD)認証設定
JenkinsのLDAP(ActiveDirectory)認証設定


Redmine設定
Alminium(RedmineとGit/SVN)のインストール手順
RedmineとGitのLDAP(AD)認証設定
RedmineとGitの移行
JenkinsのLDAP(ActiveDirectory)認証設定


サーバの基本設定・運用設定
Apache
Apacheの基本設定
Apacheの仮想ホスト設定
PHPの基本設定
Nginxのロードバランサ設定
WebDAV構築手順
アンチウィルス
無償アンチウィルス(ClamAV)の導入手順
システム監視
システム監視ソフトMuninの導入手順
システム監視ソフトZabbixの導入手順
sarによるリソース使用情報取得


サーバ移行
Mysqlマイグレーション
MySQLマイグレーション時の問題点と解決策
Windows
Windows OS評価版からの移行
SQL Server評価版からの移行
クラスタソフト
クラスタソフトの比較

ツリーカテゴリ

広告ーSEO





人気ブログランキングへ
にほんブログ村 IT技術ブログ Webサイト構築へ

ブログ王ランキングに参加中!


最新トラックバック

バーコード

アフィリエイト2