Oracleビルドのrpmの話です。
独自リポジトリ(remiとかepelとか)の話はちょっと違います。
rpm -iを叩く前に/etc/my.cnf (/etcでなくても、自動的に読み込まれるパスならOK)をおいておくと、
mysql_install_db (rpmインストールの一番最後に流れる)が流れる辺りで
勝手に/etc/my.cnfを食ってくれる。
インストールしたあとにinnodb_log_file_sizeを変えて、
InnoDBログファイルと共有テーブルスペースを毎度作り直しているような方(半年前の俺)にはオススメ。
ところで/etc/my.cnfを読んでくれることは知っていたけれど、
何が、なぜ/etc/my.cnfを読むのかに気付いたのでその記録。
…
Percona-Toolkitのうちの1つにpt-ioprofileというやつがあって、
straceでwriteやread, fsyncのシステムコール呼び出し状況を記録して、
lsofでファイルディスクリプタ番号と紐付けて、集計して出してくれたりする。
一番単純な使い方は多分こんな感じ。
# pt-ioprofile --cell sizes --run-time 60
2013年 1月 6日 日曜日 17:08:03 JST
Tracing process ID 1824
total read
pread64 pwrite64 write
open _llseek filename
2191 0
1024 1167
0 …
以前Accessを使っていた時に、TRANSFORM .. PIVOT ..を使ったクロス集計クエリが意外と便利で
(TRANSFORM .. PIVOT ..が便利というより、クロス集計ウィザードが便利だった)
MySQL単体でもアレやりたいなぁとか思ったり思わなかったり。
実際のところ、MySQLにTRANSFORM .. PIVOT .. に該当する構文はMySQLには無いので
かなり泥臭い感じのクエリにはなるけれども、
下手をしなければテーブルスキャン1回分 + テンポラリテーブル +
ファイルソートのコストで処理できたりするので、
手でログテーブルの中身をざっと洗ってざっとした傾向を見るのくらいには意外と使える。
テストデータはこんな感じ。
mysql> SELECT * FROM t1 LIMIT 3;
+-----+-----------+---------------------+ …
俺の仕事用VMはこんな感じでメジャーバージョン違いのMySQLが複数入っている(しかも、昨日から同時起動している)関係で、ポートやソケットファイルがデフォルトと違う状態で4つある。
色々あってそこにcactiを突っ込みたくなって、cactiのデータ格納用MySQLに5.5.29を任命。portは64055,
socketは/usr/mysql/5.5.29/data/mysql.sock。
さて、cacti/include/config.phpを書き換えてっと。
多分接続先をlocalhostにすると、TCP
portを使わずにソケット使おうとして、/var/lib/mysql/mysql.sockを見に行って転けるだろうから、(ソケットを指定できそうなパラメータはconfig.phpには無かったので)
$host = '127.0.0.1';$port = '64055';
にしておく。…が、敢え無く失敗。
…
はじめまして、運用部アプリ運用グループのainoyaと申します。 今年4月に新卒で入社して以来、はじめてエンジニアブログを書きます。
この記事は、デスクトップ版も大変使いやすいFedoraから書いています。
はじめに ~ mixi vs 正月 ~
mixiを支えるバックエンドには、mixiを影で支えるエンジニアによって 大量のアクセスをさばききる頑丈なシステムが構築されていました。 ですが、年末年始にはその頑丈なシステムを打ち破るほど想定外な負荷が押し寄せてきます。
それは、月間利用者1,400万人以上のユーザの方々が、mixi上で交わす年末年始の挨拶です。
mixi vs 正月 ~ 戦いの歴史 ~
…
[さらに読む]
ちょこちょこ試したりする為に1つのVMにいくつもMySQLを入れてたりするけれど、
いちいちmy.cnfを書き分けるのが嫌になったのでついにmysqld_multiを使うことに。
mysqld_multiはたぶん1つのバイナリで複数のインスタンスを立ち上げることをメイン用途として想定している気がするけれど、意外と何とかなったのでメモ。
# ls -l /usr/mysql
合計 16
drwxr-xr-x 10 mysql mysql 4096 12月 27 16:23 2012 5.0.96
drwxr-xr-x 10 mysql mysql 4096 12月 27 11:26 2012 5.1.66
drwxr-xr-x 13 mysql mysql 4096 12月 27 11:44 2012 5.5.29
drwxr-xr-x 13 mysql mysql 4096 12月 27 16:48 2012 5.6.9
ソースコンパイルの時に、./configure --prefix=/usr/mysql/x.x.xxだったり
cmake …
wingリポジトリさんのメーリングリストでご指名いただいたので調べた時のメモ。
MySQL5.6.8のrpmをビルドしてインストールすると、/etc/init.d/mysqld
startでコケるらしい。
MySQL5.5.xを入れてあって、アンインストールしてからだとコケないらしい。
MySQL5.5.xを入れてあってアンインストールした後、/var/lib/mysqlを消してからだとコケるらしい。
メールに貼ってあったエラーログには、
ERROR: 1005 Can't create table 'db' (errno: 13)
errno: 13ってPermission …
意外に知られていない$HOME/.my.cnfを使って遊んでみよう企画。
$HOME/.my.cnfはMySQL関連のプログラムを起動した時に最後に読み込まれるオプションファイルで、オプションの優先順位が`後勝ち'なので直接渡したオプション以外はここに書いておいたものが/etc/my.cnfなんかと重複していても優先される。かつ、環境変数$HOMEに依存するので、特定のUNIXアカウントに対してのみ悪戯設定出来る。
ではれっつごー。
$ cat .my.cnf[mysql]execute = "SHOW PROCESSLIST"
$
mysql+----+------+-----------+------+---------+------+-------+------------------+|
Id | User | Host | db | Command | Time
| State | Info
|+----+------+-----------+------+---------+------+-------+------------------+|
7 | root | localhost | NULL | Query | …
やっとparallelのRとLを間違えなくなった。。
http://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html#option_mysqld_slave-parallel-workers
個人的にかなり期待していた5.6の新機能ではあるけれど、実際試してみた感想をメモ。
1) 前提条件として、パラレルで動けるのはデータベース単位。
⇒全部同じデータベースに突っ込んである環境だと効果なし。
⇒USEステートメントで選んだデフォルトデータベースでなく、
ちゃんと実効データベース(--replicate-wild-*-tableみたいな感じ)で判定してくれるっぽい。
2) データベース間をまたぐステートメント(INSERT INTO d1.t1 …
mysqldumpの--flush-logsオプション、mysqldumpを取ると同時にFLUSH
LOGSしてくれるので、
バイナリログの管理が便利になったりするあのオプション。
ドキュメントには、
`--master-dataまたは--lock-all-tablesを一緒につけないと、複数データベースをダンプする時に
各データベースのダンプごとにFLUSH LOGSするよ!'
とか書いてあるんだけど、一向に手元で再現しなかったのでソースを読んでみた。
結論、5.5.21以降(5.6も)では、--flush-logs --single-transactionならFLUSH
LOGSは1回だけしか実行されない。
5.5.20以前(5.1も)では、--flush-logs
--single-transactionではデータベースごとにFLUSH LOGSされる。
5.5.21以降のclients/mysqldump.cのmain関数の中で、
…