MySQL Fabricの基本概念としては、
* Fabricサーバーはファームに関する情報だけを提供して、
* 実際の接続のハンドルはFabric対応コネクターが提供する
Fabricサーバーがしゃべるプロトコルは2種類。XML-RPCとMySQLプロトコルで、問い合わせ結果はコネクター側にキャッシュされて、TTLによって破棄される(実際にはコネクターの実装に依存するんだろうけど)
現在MySQL Fabricに対応しているコネクターは
* Connector/Python (○racleさん謹製)
* Connector/J (○racleさん謹製)
* …
环境:Centos6.5 x64 minal 安装方法 1.rpm安装 [crayon-55d2ef6de16 […]
マスター昇格編
でマスターをkillしても、スレーブがちゃんとマスターに昇格してくれるところまでは良かったんですが、
$ mysqlfabric group lookup_servers my_first_fabric
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
server_uuid address status mode weight
------------------------------------ --------------- ------- ---------- ------
47cf54df-63fc-11e4-942e-fa163e020fd0 127.0.0.1:20886 FAULTY READ_WRITE 1.0
4b7036a9-63fc-11e4-942e-fa163e020fd0 127.0.0.1:20887 PRIMARY READ_WRITE 1.0
(旧)マスターを起動したあとでも、待てど暮らせどファームには勝手に戻ってこない。
$ ./m[さらに読む]
Welcome to the MySQL monitor. …
一昨日インストールして 、 昨日HA構成だけ設定してみた MySQL Fabric。
さすがに手動での切り替えくらいは簡単だった。
* ファームに登録しているのはMySQL::Sandboxで作ったマスター/スレーブ1台ずつ構成です。
$ ./use_all "select @@read_only"
# master
@@read_only
0
# server: 1:
@@read_only
1
$ ./check_slaves
master
File: mysql-bin.000004
Position: 191
slave # 1
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 191
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Exec_Master_Log_Pos: 191
…
昨日インストールしたMySQL Fabric にファーム(MySQL
Fabric管理下のmysqld群をこう呼ぶぽい)を追加していく。
まずはグループを作成。これが「同じデータセットを持っているマスターとスレーブの組」扱いになるはず。
$ mysqlfabric group create my_first_fabric --description="MySQL Fabric is too hard to me"[さらに読む]
Password for admin:
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
uuid finished success result
------------------------------------ -------- ------- ------
8fb1a6df-0be9-4395-8240-8082c50a88e6 1 1 1
state success when description
----- ------- ------------- …
取り敢えずインストールだけしたメモ。インストール編といいながら続編があるかどうかは定かではない。
$ sudo rpm -i http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
$ sudo yum install mysql-community-server mysql-utilities
$ sudo service mysqld start
MySQL
Fabric用のMySQL(Fabric的にはバッキングストアとかストレージって呼んでる)なので、取り敢えずOracle公式のyumリポジトリーで突っ込む。
そのほうがMySQL
Utilities(mysqlfabricはコレに入ってる)のインストール(Connector/Pythonを要求してくる)が簡単なので。
$ mysql -uroot
mysql> GRANT ALL ON fabric.* TO fabric@localhost IDENTIFIED BY 'fabric_password';
バッキングストアにはfabricスキーマを作っておく。
…
super_read_onlyって何?
=> Facebook MySQL 5.6が最初に突っ込んだ(と思う)機能 で、
Super_privがあってもread_only状態を無視できなくする機能(フツーのread_onlyはSuper_privがあると更新できちゃう)
=> これがFacebook MySQLから WebScaleSQL にポートされて、それが更に Percona Server にポートされたかたち。
=> Percona Server 5.6.21-70.0 is now
available
…
というか混じりようがない。
innodb_file_format
はそもそも.ibdファイルだけに利くパラメーターであり、innodb_file_per_table が無効の場合は勝手にAntelope相当の状態にフォールバックされる。
mysql56> SET GLOBAL innodb_file_per_table= 0;[さらに読む]
Query OK, 0 rows affected (0.05 sec)
mysql56> SET GLOBAL innodb_file_format= Barracuda;
Query OK, 0 rows affected (0.03 sec)
mysql56> CREATE TABLE t1 (num int) ROW_FORMAT= Dynamic;
Query OK, 0 rows affected, 2 warnings (0.59 sec)
mysql56> SHOW WARNINGS; …
結論から言うと、ひろせが望ましいと思う順にこうすればいいんじゃないの?ってのを列挙します。
- my.cnfに[libmysqlclient]グループを追加しそこにdefault-character-set =
utf8mb4と書き、DBD::mysqlでは mysql_read_default_file=/etc/my.cnf;mysql_read_default_group=libmysqlclient と指定する
- mysql_enable_utf8を使いたい場合はSET NAMES指定も必要
- my.cnfの[client]グループにdefault-character-set = utf8mb4と書き、DBD::mysqlでは …
や、MyNA会でデモした時にむしろこれをやれよって話なんですが。
InnoDB Plugin以降で加わったInnoDBのfast index
creationと、それまでのインデックス作成について、innodb_rubyを使って比べてみました。
まずは最初にロードを済ませてから、後からfast index creationでインデックスを作るパターン。
master [localhost] {msandbox} (d1) > CREATE TABLE t1 (num int unsigned primary key, val varchar(32) not null);[さらに読む]
Query OK, 0 rows affected (0.02 sec)
master [localhost] {msandbox} (d1) > LOAD DATA INFILE '/tmp/md5_10000' INTO TABLE t1;
Query OK, 10000 rows affected (0.17 sec)
Records: 10000 Deleted: 0 Skipped: 0 Warnings: 0
$ innodb_space -f d1/t1.ibd space-extents-illustrate
Start Page …