MYSQL

スレーブでデータを自動的に暗号化する

トリガを使ってスレーブで自動的にデータを暗号化してみる。 テーブルはこんな感じ。 CREATE TABLE `hoge` ( `id` int(11) NOT NULL AUTO_INCREMENT, `value` text, PRIMARY KEY (`id`) ) スレーブ側でトリガを準備。 DELIMITER // CREATE TRIGGER encrypt_v…

mysql/client.cのDNSラウンドロビンの調査

MySQL/Rubyの方は、libmysqlclientに依存するだろうから、client.cを読む。 hp = my_gethostbyname_r(host,&tmp_hostent,buff2,sizeof(buff2), &tmp_errno); /* Don't attempt to connect to non IPv4 addresses as the client could end up sending informa…

制御文字をエスケープするスクリプト

MySQLでtsvにダンプしたりすると制御文字が \<制御文字>とエスケープされる。テキストファイルでは、なるべく1行を1レコードをして扱いたいので、Perlで制御文字をエスケープ文字に変換するスクリプトを書いてみた。 #!/usr/bin/env perl use strict; use …

文字列をステートメントとして評価する

mysql> SET @sql = CONCAT('SELECT ', DATE_FORMAT(NOW(), '\'>\'')); Query OK, 0 rows affected (0.00 sec)mysql> SELECT @sql; + @sql + SELECT '>' + 1 row in set (0.00 sec)mysql> PREPARE stmt FROM @sql; Query OK, 0 rows affected (0.00 sec) Stat…

バイナリログのメモ

マスタでとあるクエリを実行した時のステータス。 mysql> create database hogehoge; Query OK, 1 row affected (0.00 sec) mysql> show master status; +-------------------+----------+--------------+------------------+ | File | Position | Binlog_Do…

Writing Storage Engines

http://forge.mysql.com/wiki/MySQL_Storage_Handler_Interface

Memcache Engine for MySQL

http://freshmeat.net/projects/ha_memcache どうもメンテナンスされていない気が。Drizzleに移ったのかな?

マスタが死んだときにスレーブで最後に実行されたクエリを抽出する

フェイルオーバーにmk-slave-moveが使えないんですけどー!!! Exec_Master_Log_Pos=`mysql -e 'show slave status \G' | awk '/Exec_Master_Log_Pos/{print $2}'` mysqlbinlog `ls /var/lib/mysql/mysqld-relay-bin.* | grep -v index | tail -n 1` | fgre…

MySQL Replication Tips and Tricks

(via http://www.mysqlconf.com/mysql2009/public/schedule/detail/6881)

SlackDB

Let’s Build a Relational Database for the Cloud SlackDB libdrizzleはどうなったんだろう。。。と思ってEric DayのBlogを見たら、SlackDBというKVS(?)の開発を始めたということが書いてあった。 ドキュメントを斜め読みするに、Erlangで実装された、ASID…

CentOS-x86_64 MySQL+Spider インストールスクリプト

#!/bin/sh yum install -y wget wget http://launchpad.net/spiderformysql/spider-2.x/2.23-for-5.1.44/+download/mysql-5.1.44-spider-2.23-vp-0.12-linux-x86_64-glibc23.tgz tar zxf mysql-5.1.44-spider-2.23-vp-0.12-linux-x86_64-glibc23.tgz mv mysq…

MySQL CluserのAMIを更新しました

7.1.8がリリースされていたのでMySQL ClusterのAMIを更新しました。 AMI ID: ami-d0077982 Name: winebarrel-CentOS-5.5-x86_64-MySQL-Cluster-0.1.1 変更点は以下の通り。 CentOS 5.4 → 5.5 以前はRightScaleのイメージから作っていたのですが、今回はスク…

HandlerSocket pluginのRubyバインディングを作りました

10/23 追記 twitterから流れてくる方がいるようなので、もっとちゃんとしたのを作ってキチンとメンテされてる方がいるので、そちらの方をオススメしておきます。(なんか変な日本語だ。。) http://github.com/miyucy/handlersocket http://github.com/wineba…

MySQL ClusterのAMIを公開しました

※Update! see http://d.hatena.ne.jp/winebarrel/20101023/p1 ap-southeastにMySQL ClusterのAMIを公開しました。 RightScaleのCentOS 5.4のAMIにMySQL Cluster 7.1.5をインストールしたモノです。 管理ノードとSQLノードとデータノードをひとまとめにして、…

MySQL Clusterの性能を検証してみる

あまりいい話を聞いたことがないMySQL ClusterをEC2で真面目に検証してみた。 サーバ構成 初期データ:2000万件 トランザクション:OFF 結果 http://spreadsheets.google.com/ccc?key=0ArOzt7qNZ1fldDVCUlozNlMxTngxUGM0dGRLWWx5YWc&hl=ja まとめ ReadとWrit…

CentOS 5.4(x86_64)にMySQL+Spiderをインストールする

手順がめんどくさかったのでメモしておく。 yum install -y ncurses-devel readline-devel wget http://storehouse.sakura.ne.jp/RPMS/x86_64/m4-1.4.12-2.x86_64.rpm wget http://storehouse.sakura.ne.jp/RPMS/noarch/autoconf-2.63-2.noarch.rpm rpm -Uhv…

CentOS 5.4(x86_64):ついでにInnoDB Pluginを有効にする。

/etc/my.cnfに以下を追加して再起動。 [mysqld] ignore_builtin_innodb plugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;…

Spiderで書き込みをスケールさせてみる

メモリに載らなくなったMyISAMをSpiderを使ってスケールさせてみる。 まず、c1.xlargeのMySQLに2000万件ほどデータをつっこむ。 CREATE TABLE `t1` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `intcol1` int(32) DEFAULT NULL, `intcol2` int(32)…

EC2で使えるMySQLのL7ロードバランサ

EC2で使えるMySQLのL7ロードバランサを探しているんだけど、オープンソースだとMySQL Proxyくらいしか見つからない。 MySQL Proxyは何回か試したんだけど。。。まだまともに動かせてない(接続は出来るけどバランシングされてないとか、Luaスクリプトが全然…

MyISAM、ext3、writeback

ずいぶん前にこの記事を読んで、MyISAMでベンチマークしてみたいと思ってたんだけど、EC2で試してみることにした。 サーバ m2.4xlarge(4コア / 64GB) CentOS 5.4 MySQL 5.0.77 クライアント c1.xlarge(8コア / 7GB) CentOS 5.4 mysqlslap 1.0 mysqlslap…

EC2でMyISAMを検証してみた

検証環境は以下の通り。 サーバ CentOS 5.4 MySQL 5.0.77 クライアント c1.xlarge(8コア/7GB) CentOS 5.4 mysqlslap 1.0 始めにサーバをm1.large(2コア/7.5GB)にしてconcurrency=8、load-type=updateでmysqlslapを実行してみたら8,000qpsぐらいになった…

真・AUTO_INCREMENTでIDを1000ずつ増やす

わざわざトリガを使うまでもなかったですよ。。。orzauto_increment_incrementとauto_increment_offsetというひどい名前のシステム変数があって、AUTO_INCREMENTの増分を制御できた。 http://dev.mysql.com/doc/refman/5.1/ja/server-system-variables.html…

IDを1000ずつ増やす(ndbcluster)

ndbclusterでも試してみた。 CREATE TABLE `sequence` ( `id` int(10) unsigned NOT NULL ) ENGINE=ndbcluster [root@ip-XXX-XXX-XXX-XXX ~]# time ruby test.rb real 5m12.842s user 0m0.028s sys 0m0.016s5分か…1666qps、まあ許容範囲かな。 [root@ip-XXX-…

IDを1000ずつ増やす

see http://d.hatena.ne.jp/spiritloose/20080327、http://blog.livedoor.jp/sasata299/archives/51280681.html CREATE TABLE sequence (id INT UNSIGNED NOT NULL) ENGINE=InnoDB; INSERT INTO sequence VALUES (100); CREATE TABLE hoge ( id INT UNSIGNED…

libdrizzleで繋いで閉じるだけ

exampleを参考にしつつ。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <libdrizzle/drizzle_client.h> static void result_info(drizzle_result_st *result) { printf("Result: row_count=%" PRId64 "\n" " insert_id=%" PRId64 "\n" " warning_count=%u\n" " column_count=%u\n\n", drizzle_</libdrizzle/drizzle_client.h></unistd.h></stdlib.h></stdio.h>…

最新のMySQLPlus

githubに2つリポジトリがあったり*1 *2、gemで検索するとバージョン0.1.1が2つあったり*3、RubyForgeにプロジェクトがあったりと、よく分からない状況のMySQLPlusだが、コードを読んだかぎりではgithubにあるoldmoe's mysqlplusが最新のようだ。 *1:http:/…

MySQLPlusのユースケース

MySQLPlusのユースケースについて、つらつらと考えてみた。 MySQLPlusはMySQLに非同期でクエリを投げられるドライバで、ちょっと見ただけだと「パフォーマンスが上がるかも」と思いそうだが、使いどころが難しい。 使いどころが難しい理由は ResultSetの取得…

検索結果を縦に表示

全然知らなかった… mysql> select * from user where host = '%' and user = 'root' \G *************************** 1. row *************************** Host: % User: root Password: Select_priv: Y ・ ・ ・ (以下省略)

データベースのデータをコピー

mysqldump foo | mysql bar

urlのカラムをVARCHAR→TEXTに変更

amazonのページに付箋紙を貼ろうとしたら、urlが255文字以内に収まらなくて、変な表示に。 VARCHARのサイズを増やそうと思ったけど、どうもMySQL4だと255が最長のよう。なので、型をVARCHARからTEXTに変更した。今のところ、体感的な速度の低下は見られない…