2017/1/25の MyNA会 行ってきました。
赤井さん、やまさきさん、俺、かじやまさんでインプレスさんからMySQLの本が出た順にしゃべるヤーツ。
MySQLerの7つ道具 plus from yoku0825
ネタ的にはこの時のリライトです(ただし結構リライトしてる…)
日々の覚書: 2年越しの #ChugokuDB in 中国地方
…
MySQL5.7で実装されたJSONデータ型とJSON関数のレビューになります。
ご利用になる場合は、参考にして頂ければと思います。
ネイティブJSONデータ型 (バイナリ形式)
Insert時のJSON構文バリデーション機能
組み込みJSON関数 (保存、検索、更新、操作)
ドキュメントにインデックス設定し高速アクセス
SQLとの統合を容易にする、新しいインライン構文
utf8mb4の文字セットとutf8mb4_binの照合 「」
サイズはmax_allowed_packetの値で制限 (Default:4MB)
MySQL5.7からは、リレーショナル、スキーマレスを同じ技術スタックで利用可能になっています。
13.16.1 JSON Function Reference
…
Group Replication で特定のサーバのデータが吹き飛んでしまった場合の復旧手順を確認。
動いているサーバからdumpを取って、復旧すれば良いのだが、、、
--single-transaction で mysqldump しようとすると、GRではSavepoint
がサポートされていないため、 コケる。。。
※ https://bugs.mysql.com/bug.php?id=81494
で修正の要望が出されている
-bash-4.1$ mysqldump --all-databases --single-transaction -uroot --triggers --routines --events -p > dump.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysqldump: Couldn't execute 'SAVEPOINT sp': The MySQL server is running with the --transaction-write-set-extraction!=OFF option so it cannot execute this statement (1290)
…
[さらに読む]
バイナリー.tar.gz版のはなし。
こんな風に/usr/local/mysqlじゃないところにPercona
Serverをダウンロードして、/usr/local/mysqlにシンボリックリンクを張る。
$ cd /usr/local[さらに読む]
$ wget https://www.percona.com/downloads/Percona-Server-5.7/Percona-Server-5.7.16-10/binary/tarball/Percona-Server-5.7.16-10-Linux.x86_64.ssl101.tar.gz
$ tar xf Percona-Server-5.7.16-10-Linux.x86_64.ssl101.tar.gz
$ ln -s Percona-Server-5.7.16-10-Linux.x86_64.ssl101 mysql
$ ll
total 234348
drwxr-xr-x 2 root root 18 Jun 8 2016 bin
drwxr-xr-x 2 root root 6 Sep 23 2011 etc
drwxr-xr-x 2 root root 6 Sep 23 2011 games
drwxr-xr-x 2 root root 6 Sep 23 2011 include
drwxr-xr-x 2 root root 6 Sep 23 2011 lib
drwxr-xr-x 3 root root 18 Jun 8 2016 lib64
drwxr-xr-x 2 root root 6 Sep 23 2011 libexec …
group_replication_recovery チャネルは障害後のサーバ間の差分同期のみに使われる。
Group Replication のステータスが ONLINE 状態のときは、Master_HostがNULL、Slave_{IO,SQL}_Running は NO。
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+---------------------------------------+-------------+--------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+---------------------------------------+-------------+--------------+
| group_replication_applier | 0cdd0b6a-cd84-11e6-b223-fa163e0b2b7c | gr02 | 3306 | ONLINE |
| group_replication_applier | 1edf2e1d-cd83-11e6-961b-fa163e83e8e7 | gr01 …[さらに読む]
@sakaik
さんの連載(?)を読んでいたらやたら楽しそうで俺もなんかビルドしたくなってたまらなくなったので。
- MySQLをビルドする on AWS Red Hat 7.3 -
sakaikの日々雑感~(T)編
- ふたつのバージョンのMySQLを同時に動かす on AWS Red Hat 7.3 -
sakaikの日々雑感~(T)編
- MySQL 5.7 のビルドにトライ ~ 5.6とは大違い -
sakaikの日々雑感~(T)編
- MySQL 5.7 を t2.micro でもビルドできた! - …
テスト用のテーブル
mysql> CREATE TABLE grplt.tbl (pk SERIAL, col1 int, who_update varchar(10));
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO grplt.tbl (col1, who_update) VALUES (1, 'node1') , (2, 'node1'), (3, 'node1');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM grplt.tbl;
+----+------+------------+
| pk | col1 | who_update |
+----+------+------------+
| 1 | 1 | node1 |
| 8 | 2 | node1 |
| 15 | 3 | node1 |
+----+------+------------+
3 rows in set (0.00 sec)
いつものデッドロック
同じサーバに対して、入れ子の行ロックを取る2つのトランザクションを実行するパターン。
ERROR 1213 (40001): Deadlock found when trying to get lock; try
restarting transaction …