MySQL | Free Style



2009年10月30日

mysql移行メモ

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

mysql4.1から5.1にバージョンアップするための移行検証メモ。
4.1がrpm版なので、5.1はバイナリ版を/usr/local/mysql5に展開。

■初期DB作成
/usr/local/mysql5/scripts/mysql_install_db \
--defaults-file=/usr/local/mysql5/my.cnf \
--user=mysql \
--basedir=/usr/local/mysql5 \
--datadir=/usr/local/mysql5/data \
--pid-file=/usr/local/mysql5/mysql.pid \
--port=3307 \
--socket=/tmp/mysql5.sock

○ログ

Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/local/mysql5/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql5/bin/mysqladmin -u root -h localhost password 'new-password'

Alternatively you can run:
/usr/local/mysql5/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr/local/mysql5 ; /usr/local/mysql5/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/local/mysql5/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/local/mysql5/scripts/mysqlbug script!

The latest information about MySQL is available at http://www.mysql.com/
Support MySQL by buying support/licenses from http://shop.mysql.com/


■起動
/usr/local/mysql5/bin/mysqld_safe \
--defaults-file=/usr/local/mysql5/my.cnf \
--user=mysql \
--basedir=/usr/local/mysql5 \
--datadir=/usr/local/mysql5/data \
--pid-file=/usr/local/mysql5/mysql.pid \
--port=3307 \
--socket=/tmp/mysql5.sock \
&

■rootパスワード設定
/usr/local/mysql5/bin/mysqladmin -u root password 'password' --socket=/tmp/mysql5.sock

■接続
/usr/local/mysql5/bin/mysql --socket=/tmp/mysql5.sock -u root -p

■ダンプ
/usr/bin/mysqldump -uroot -p --all-databases --default-character-set=utf8 -C -e > /tmp/test.dump

■ロード
/usr/local/mysql5/bin/mysql --socket=/tmp/mysql5.sock -u root -p < /tmp/test.dump

2008年03月28日

MySQLロードマップ(5.1、6.0、6.x、7.0)

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

■MySQL5.1
○08Q2(4~6月)リリース予定

○新機能
・テーブル/インデックスパーティショニング
 →range,hash,key,list,compositeメソッドをサポート
  Merger,Federated,CSVエンジンではサポートしない
  NDBではkeyメソッドのみ
 →行ベース/ハイブリッドレプリケーション
 →ディスクベースクラスタ
 →組込ジョブスケジューラ
 →SQL問題検出
 →高速フルテキスト検索(但し、日本語はSenna依存)

○Nitroedb
 →有償3rdパーティ製エンジン
 →非常に高速なデータ登録性能

■MySQL6.0
○08Q4(10~12月)リリース予定

○新機能
・Falconエンジン
 →InnoDB後継みたいな位置づけ?
 →インメモリでできるだけ処理しちゃおう的なコンセプト
 →外部キーサポートはなし
 →自動スペース再利用
 →B-Treeインデックスのみ

・オンラインバックアップ
 →DMLは非ブロック、DDLブロック、全エンジン対応
 →SQLコマンド駆動
 →ポイントインリカバリサポート
 →ブロッキングリストア
 →データ以外もバックアップ

・オンライン列追加
 →Clusterのみ

・レプリケーション列追加
 →Clusterのみ

・オプティマイザ強化
 →サブクエリ/ジョインの高速化(レスポンスタイムが99.75%低減)

・Falconエンジンのパフォーマンス情報診断

・UTF-8の4バイト対応
 →MySQL5.1対応は未定、3バイトUTF-8の名称が変更に

■MySQL6.1(?)
○α、β版は08年中頃、09年前半にリリース予定

○新機能
・全てのエンジンで外部キーをサポート

・プリペアドステートメントが全エンジンで対応

・サーバサイドカーソルの改善
 →チェックサム

・オプティマイザ強化
 →さらに高速に

・ストアドプロシージャの改善

■MySQL7.0
○α、β版は09年中頃、09年末にリリース予定

○新機能
・セキュリティグループ、ロールが追加
 →容易な権限変更に

・透過的データ暗号化

・データ監査

・外部認証対応
 →OS認証やLDAPとか

・オンラインテーブル変更
 →オンラインDDL

■MySQL Cluster
○5.1
・ディスクベースのテーブル、クラスタ間レプリケーション

○6.0
・オンライン列追加
・高速結合処理
・レプリケーション競合検出機能

○Carrier Grade Edition
・独自のリリースサイクル

■レプリケーション
○5.1
・行ベース/ハイブリッドに対応

○6.x
・チェックサム

○6.x以降(7とか?)
・セミ同期
・マルチソース
・ハートビート

■DRBD(HAソリューション)
・分散型ストレージ
・ネットワークRAID1みたいな感じ
・同期レプリケーション
・高パフォーマンス
・特別なネットワークコンポーネントが不要
 →但し、ハートビートは除く
・障害発生時のデータ不整合を管理、解決
・リカバリ処理の複雑さが解消される
・ハートビートがフェールオーバーと仮想IPを管理

■Enterprise ロードマップ
・MySQL Enterprise Monitor
 →OracleのEMみたいな感じ。便利そうー。

・MySQL Load Balancer

・SQL解析
 →これはいい気がする

・MySQL Connection Maneger
 →言語関係なしに、Pコネクトできるみたい

・リモートインスタンス管理

・バックアップ/リカバリ管理

・memcachedを正式にサポート
 →08Q2ぐらい、Enterprise版のみ

・DWH用エンジン
 →Nitroedb、Infobright
  MySQLオプティマイザと独自のオプティマイザを併用

■ツール
○MySQL Wordkbench
・有償版と無償版

・有償版は1万ぐらい

・ソースからリバースエンジニアリング
 →ER図とか作れる

・MySQLへフォワードできる

・MySQLと同期(有償版のみ)


MySQL6が意外と熱い。
逆を言えば6までは待ちかなぁ…
まだまだOracleの代替品としては使えない気がする。
松竹梅でいう梅コース担当候補ではあるけれども。

2007年11月02日

MySQLで全文検索(その1)

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

を試してみたので後日レポートに書くとます。。。

内容気にせずにとりあえずブログ更新を二日に一回は更新したいところ。

の第一弾。今回はネタなし。

全文検索回りを調べたのでそこら辺をネタにする予定。
主にMySQLになると思われ。

あとはVM使って、CentOS4.5とCentOS5.0あたりをネタにしようかと。

今のところメインはbemani SNSのリニューアル作業なり。。。

2007年01月26日

MySQL 各ストレージエンジン比較

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

下記、4つエンジンを比較してみる。

  • MyISAM
    ⇒一番扱い易い。ただし、トランザクションが使えない。
  • InnoDB
    ⇒唯一トランザクションが使用可能。但し、MyISAMよりは遅い。
  • Archive
    ⇒パフォーマンスが落ちる代わりに、データ容量を圧縮。
     インデックス使用不可。レコード挿入可能。
  • Memory
    ⇒メモリ上にテーブルを作成。詳細は前述。
  • どれも一長一短で、Case-by-caseで使い分ければ、
    使える場面もあるかもしれない。
    基本はMyISAMかInnoDBの二択。
    トランザクションが必要か不要かを気にする程度
    で良いかと思われる。

    ストレージエンジンの処理性能比較

    MySQL MEMORYエンジン

    MySQL MEMORYエンジン

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    MySQL MEMORYエンジン(4.0まではHEAPエンジン)メモ

    max_heap_table_sizeまでのテーブルが作成可能。
    下記制限と特徴がある。

  • 複数のクライアントからアクセスが可能

  • HashとBtreeの2つのインデックスが使用可能

  • メモリ内に作成されるのでアクセスが非常に高速

  • ユニークなインデックスは不可

  • 固定長のフィールドだけを扱う事ができる

  • BLOB、TEXT型は使用不可

  • AUTO_INCREMENTは使用不可

  • NULLを許しているフィールドにインデックスが使用不可

  • インデックスは=と<=>の比較演算子が使用されたときだけ使用される

  • MySQLサーバプロセスが消滅するとテーブルも消滅
  • インメモリDBライクな使い方ができるわけではない模様。
    参照系の制限があるので、そこまで期待できる速度は出ない。

    MemoryとArchive

    MySQLスケールアウト考察

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    MySQLオフィシャルのセミナーの資料をもらったので、
    MySQLに限ったお話だけど蘊蓄。
    また、実際導入した訳ではないので、詳細に関しては不明というのが前提。

    MySQLはレプリケーション機能がついている。
    また、MySQL Clusterを使用することでも対応が可能。
    レプリケーションとは物理的にサーバを増やして、
    負荷分散をする機能。(ミラーリングみたいな)

    個人的な見解ではレプリケーション機能の上位が、
    MySQL Clusterであると感じた。
    但し、MySQL ClusterはフロントはインメモリDBで受けつつ、
    各ノード(MySQLServer)と通信をしているので、
    通常のレプリケーションよりかなり高速である。
    但し、MySQL Clusterを入れるサーバに関しては、
    大容量のメモリが必要であり、64bitOSの使用が望ましい。
    (データ量にもよるが、8G程度は欲しい。)

    割とMySQLの場合はメモリ増やしてどうにかなるという
    パターンも多い。ストレージをMEMORYタイプにして、
    なんちゃってインメモリDB化とかも可能かと思う。

    時代はメモリということか…ッッ!
    まぁ、メモリも安くなったし、64bitOSで扱える量も増えた
    ので、自然な流れではあるかと思う。

    が、個人レベルで使うには遠い話です(笑
    個人でやるならメモリをドカンと乗せて、MEMORYストレージと
    バッファにガン付けするぐらいが精一杯かなぁ。

    以下参考資料。

    現場指向のレプリケーション詳説

    レプリケーションで負荷分散と可用性

    レプリケーションいろいろ

    レプリケーションを使う

    MySQL 5.1期待のクラスタリング機能

    MySQL Clusterを試す

    MySQL Cluster の最適構成

    2007年01月24日

    MySQL起動・再起動

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    ソースインストールしてるとついつい忘れがちなので備忘録。
    設定変更時ぐらいしか触らないので尚更忘れがち。。。
    このあたりRPMだったらすげー楽だなぁと。

    インストールディレクトリは「/usr/local/mysql/」の場合

    ■起動
    /usr/local/mysql/bin/mysqld_safe &

    ■終了
    /usr/local/mysql/bin/mysqladmin -u root shutdown

    ■起動スクリプト
    /usr/local/mysql/share/mysql/mysql.server






    MSN:chrome_fs@hotmail.co.jp
    ※メッセ専用

    800*600 ATOM1.0
    RSS1.0 RSS2.0
    人気ブログランキング - Free Style