TL;DR
- 日々の覚書: pt-online-schema-change(と、pt-table-checksumとかもろもろ)の—recursion-methodについて をもっと即物的にした感じ
- マスターの外側のIPを接続元にして check_slave_lag 用のユーザーを強い権限で作ってしまう
- recursion_method=dsn にしてスレーブを全部列挙する
- 最後にcheck_slave_lag用のユーザーはDROPする
- DSNを列挙したテーブルもDROPする …
TL;DR
TL;DR
ledir の行を消す
ledir は
mysqld_safe にコマンドラインオプションとして渡す
mysqld_safe --defaults-file=/data/mysql/my.cnf
--ledir=/usr/local/mysql/bin
パッケージもの以外のMySQLで、 mysqld_safe を起動した時に↓のように言われることがある。
mysqld_safe --ledir option can only be used as command line option, found in config file
読んでそのまま、 ledir はコマンドラインオプション( mysqld_safe
--ledir=.. の形式)で渡さなければいけないのに、コンフィグファイルから
ledir の項目が見つかった、という意味。 MySQL 5.5.55とそれ以降、MySQL …
TL;DR
とある事情があってInnoDBのAUTO_INCREMENT関連のコードを読んでいた時に、innobase_next_autoincの中でこんなコードになっていることに気が付いた。
2497 if (block >= max_value
2498 || offset > max_value
2499 || current >= max_value
2500 …[さらに読む]
TL;DR
sql_mode=ONLY_FULL_GROUP_BY 依存
別のものを調べている時に /var/log/messages を見てたら、なんかがコア吐いてるのに気が付いた。
Jun 20 04:26:42 archive_host kernel: mysqldump[28611]: segfault at 0 ip 00000030b152859a sp 00007fffd760a358 error 4 in libc-2.12.so[30b1400000+18b000]
Jun 20 04:26:42 archive_host abrtd: Directory 'ccpp-2017-06-20-04:26:42-28611' creation detected
Jun 20 04:26:42 archive_host abrt[28613]: Saved core dump of pid 28611 (/data01/mysqlbin/mysql-5.6.20-linux-glibc2.5-x86_64/bin/mysqldump) to /var/spool/abrt/ccpp-2017-06-20-04:26:42-28611 (2609152 …[さらに読む]
4月にMySQLの日本語コレーションについて語り合う場に呼ばれていろいろ話を聞いてきました。すぐにブログを書こうと思ったんですが、はや2ヶ月経過…。
ときどき、自分がMySQLの文字コードに関して発表する際に、次のようなスライドをいれてるんですが、
MySQL 8.0 でとうとう日本語コレーションが入ることになったのに、なんか期待してたのと違いました。
で、その辺の話を聞きました(2ヶ月も経ってるのでうろ覚え)。
Q. わざわざ日本語ロケール作るんだったら日本人が扱いやすいロケールにしてほしい
…[さらに読む]MySQL Group Replicationは、グループで一つのIDを持つ為、通常のシングルインスタンスと同じようにレプリケーションを組む事が出来ます。4月のInnoDB Clusterリリース以降、MySQLを利用されているお客様から、幾つか質問を受けていたので念の為に挙動を再確認。
環境
複数サーバーを準備出来なかったので,シングサーバーにポートを変更して、2グループ(6サーバー)で先ずはGROUP
REPLICATIONを準備。
mysql> select @@version; +-------------------------------------------+ | @@version | +-------------------------------------------+ | 5.7.18-enterprise-commercial-advanced-log | +-------------------------------------------+ 1 row in set (0.00 sec)
…
[さらに読む]MySQL 5.6と同じ方法でMySQL 5.7を起動しようとしたら何も言わずに黙って終了してしまって少しだけハマったのでメモ。
MySQL 5.6では次のようにして起動してました。
# /usr/local/mysql-5.6/bin/mysqld --no-defaults --user=mysql
--basedir=/usr/local/mysql-5.6 --skip-networking --socket=/tmp/mysql56.sock
--log-error=/tmp/my56.err > /tmp/my56.err 2>&1
log-error をつけていても、最初の数行が標準エラー出力に出ちゃうので、log-error と同じファイルにリダイレクトするようにしていました。
同じようにしてMySQL 5.7を起動してみたら、すぐに終了してしまって、しかもエラーを何も出力しません。
# /usr/local/mysql-5.7/bin/mysqld --no-defaults --user=mysql
--basedir=/usr/local/mysql-5.7 --skip-networking --socket=/tmp/mysql57.sock
--log-error=/tmp/my57.err > …[さらに読む]
InnoDB Clusterを構築すると、MySQL Routerの設定ファイルが自動的に作成されます。基本的にはTTLによって構成はキャッシュされますが、metadata cache componentが常にMySQLに接続していて、Group Replicationの状況をモニタリングしています。それにより、構成変更や障害発生時には自動的に検知してアプリケーションを適切なデータベースに振り分けてくれます。
【以下、マニュアル抜粋】
MySQL Router keeps a cached list of the online MySQL servers, or
the topology and state of the configured InnoDB cluster.
Initially, the list is loaded from Router’s configuration file
when Router is started. This list was generated with InnoDB
cluster servers when Router was bootstrapped using the –bootstrap
option.
To keep the cache updated, the metadata cache component keeps an open connection to one of …
[さらに読む]MySQL5.7で約20程のJSON関数が追加されていましたが、MySQL8.0においても更に追加でJSON関数が加えられているので、基本的な動作のみを確認しています。JSON_ARRAYAGG(), JSON_OBJECTAGG(),JSON_PRETTY()
MySQL5.7 JSON関数マニュアル
https://dev.mysql.com/doc/refman/5.7/en/json-functions.html
MySQL5.7のJSONの概要に関しては、こちらにて資料がダウンロード可能です。https://www.mysql.com/jp/why-mysql/presentations/mysql-json-201701-ja/
まだ、MySQL8.0はDMRなので、これからまだ仕様が変わる部分がある事はご了承ください。
確認バージョン
mysql> select now(),@@version; …[さらに読む]
こんなん使ってます。
-- [前提となるテーブル]
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(i1 int not null primary key, v2 varchar(20))
engine = innodb;
-- [利用するストアドプロシジャ2: 1万件ごとにコミット処理あり]
drop procedure if exists test_insert_commit;
delimiter $
create procedure test_insert_commit(v_max int)
begin
declare v_id int default 0;
repeat
set v_id = v_id + 1;
insert into t1 values(v_id, v_id);
if (mod(v_id,10000) = 0) then commit;
end if;
until v_id >= v_max
end repeat;
end$
delimiter ;
JUGEMテーマ:コンピュータ