MySQL Group Replication
現状、まだLab版ですが、MySQL5.7の追加のプラグインとして、マルチマスタまたはアクティブ/アクティブレプリケーションをサポートする...
View ArticleMySQL 5.7のngramパーサーはアルファベットを含む文章を上手くトークナイズできない
MySQL Bugs: #82330: Don't recursively-evaluate stopword after tokenizengramパーサー を使ってアルファベット混じりの日本語全文検索をしようとすると悲劇が起こる。デフォルトのストップワード一覧は このへん 。MySQL...
View ArticleSHOWステートメントをSHWOとタイポしてしまう
SHOWってshwoってタイポしませんか? わたしはします。mysqlコマンドラインクライアントでの改変は、やった。- 日々の覚書: mysqlコマンドラインクライアントでuseの代わりにcdを使うクエリーリライトプラグインも、やった。- 日々の覚書: 過去、現在、未来、全宇宙に存在する全てのクソクエリーを、生まれる前に自分の手でカジュアルに消し去ること(仮)- Handlerさんコンニチワ...
View ArticleMySQL プロトコル上のテキストの闇
MySQL 5.7 で JSON 型が追加されたのに関連して、私がメンテナをしている MySQL ドライバーで罠にハマったので、 MySQL のテキストプロトコルの闇を書き残しておくことにします。 Text Resultset MySQL にクエリを投げるコマンドが COM_QUERY で、そのレスポンスとして返されるのが Text Resultset...
View Articleオープンソースカンファレンス(OSC)2016-Kyoto 参画
京都で開催された、オープンソースカンファレンス(OSC)2016-Kyoto に参加してきました。 今までは、関西開催の京都の部、みたいな感じで、OSC-Kansai/Kyoto という呼び方でしたが、このたび実績を重ねてめでたく OSC-Kyoto となったとのことです。http://www.ospn.jp/osc2016-kyoto/...
View ArticlemysqlslavetrxによるGTIDベースレプリケーション時のエラーSKIP処理
ログポジションベースのレプリケーションの場合は、レプリケーション障害発生時にスレーブでSKIP処理を容易に行う事ができましたが、GTIDモードの場合は以下のように空のトランザクションを実行して、エラー対応をする必要がありました。 mysqlslavetrxを利用しない場合の例 root@localhost [sakila]> stop slave; Query OK, 0 rows...
View Articlemikasafabric for MySQLのビルド
mikasafabric for MySQL が何なのかについては こちら取り敢えずビルド方法のメモ。雑に。#!/bin/bashversion="0.1.1"dirname="mikasafabric-${version}"rm -rf ~/rpmbuildmkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}if [ -d ~/$dirname...
View ArticleFLUSH PRIVILEGESやFLUSH TABLESはバイナリーログに書かれるのでgtid_executedに記録されるよ
や、まあ、バイナリーログに吐かれるのはマニュアルに書いてあってそうなんだけれども、GTID振られるのは失念してた。一つだけマニュアルが誤解を招く表現。デフォルトでは、サーバーは FLUSH ステートメントをバイナリログに書き込み、それらがレプリケーションスレーブにレプリケートされるようにします。ロギングを抑制するには、オプションの NO_WRITE_TO_BINLOG...
View ArticleMySQL/MariaDB Transactd 超 高可用運用 (THA)
MySQL/MariaDB用 NoSQLプラグイン Transactdでの高可用運用(Transactd High Availability)ツール「THA」と、対応したプラグイン(Version 3.5)の提供を開始しました。...
View ArticleMySQL で utf8 と utf8mb4 の混在で起きること
MySQL を UTF-8 で使おうと思ってハマりがちなのは charset utf8 を指定してしまうことです。 MySQL の UTF-8 には歴史的事情により utf8 と utf8mb4 の二つあります。 UTF-8 は1バイト〜4バイトで1文字が構成される文字コードですが、MySQL の utf8 は4バイト文字を扱うことができません。ハマりたくなければ utf8mb4 を使いましょう。...
View ArticleMySQL Group Replication DMR(5.7.14)
MySQL5.7.14のGroup Replication DMR版が先月リリースされていたので、基本的な動作確認をしました。 まだ、DMR版なので前回の5.7.10とまた微妙に異なっていて、 group_replication_peer_addressesがgroup_replication_group_seedsに代わっていたり、...
View ArticleMySQL 8.0.0でmysqlスキーマの中身がほぼ全部InnoDBになった
MySQL 8.0でmysqlスキーマの中身が全部InnoDBになった。5.7だと↓だったのが、mysql57> SELECT table_name, engine FROM information_schema.tables WHERE table_schema = 'mysql' ORDER BY...
View ArticleMySQL 8.0.0からmysql_install_dbがなくなってる、ついでにbinディレクトリ探求
日々の覚書: MySQL 5.7.6でデータベースの初期化が変わる mysql_install_dbからmysqld --initialize1年半の時を経て、ついに消えた様子。(MySQL 5.7の時点で、mysql_install_dbはscriptディレクトリーからbinディレクトリーに移動になってた)$ ll bin/mysql_install_dbls: cannot access...
View ArticleMySQL 8.0.0時代のmy.cnfの探り方
以前、straceで開いてるmy.cnfを調べて…とかやってたけど、それももう過去の話。日々の覚書: ラッパーも含めて mysqldが起動するときにどのmy.cnfを舐めてるのか知りたいときMySQL 8.0.0では performance_schema.variables_info という便利なテーブルができた。mysql80> SELECT * FROM...
View ArticleMySQL 8.0.0でSET PERSIST構文が出来て、my.cnfへの反映忘れが防げそう
MySQL 8.0.0時代のmy.cnfの探り方 の続き。ここに /etc/my.cnf から読み込まれた innodb_buffer_pool_size = 128MB があるじゃろ? (AA略)mysql80> SELECT variable_name, variable_source, variable_path, variable_value FROM...
View ArticleMySQL 8.0.0で追加されたROLEの仕組み
正直なんの情報もなくてすごく困ったんだけど、何故か自分のブログ記事に助けられた。日々の覚書: MariaDB 10.0.5で実装されたROLEを試すほぼこの時と同じ。MariaDB 10.0の時はロールを割り当てるユーザーが存在しなくても割り当てられたけど、MySQL 8.0は先にCREATE USERしておかないと割り当てられなかったことくらい。mysql80> CREATE ROLE...
View ArticleMySQL 8.0.0のmysqlコマンドラインクライアントでは `--ssl` オプションの名前が変わった
実は(?) GA後の MySQL 5.7.11でdeprecatedになっていたヤーツ。The client-side --ssl option is deprecated as of MySQL 5.7.11 and is removed in MySQL 8.0. For client programs, it is preferable to use --ssl-mode...
View ArticleMySQL 8.0.0現在の文字コードについて
Planning the defaults for MySQL 5.8 | MySQL Server Blog の時点でIn addition to utf8mb4, we are also considering switching the default collation to be...
View ArticleMySQL 8.0.0のdatadirにあるなんか変なSDIファイル
取り敢えず mysqld --initialize したdatadirを覗いてみると、見慣れないSDIファイルがあることと見慣れた.frmファイルが **ない** ことに気付いた。$ ll data/mysql/*.frmls: cannot access data/mysql/*.frm: No such file or directory$ ll data/*.SDI-rw-r----- 1...
View ArticleMySQL 8.0.0現在で追加されているperformance_schema
MySQL 8.0.0時代のmy.cnfの探り方 で出てきたvariables_info の他にも events_errors_summary_* というテーブルが増えてる。$ diff <(mysql80 -sse "SHOW TABLES FROM p_s") <(mysql57 -sse "SHOW TABLES FROM p_s")3,7d2<...
View Article