1927 件中 431 - 440 件を表示
« 前の 10 件 | 次の 10 件 »
Displaying posts with tag: MySQL (reset)
グループレプリケーションのメンバーとInnoDB Clusterのメタデータと cluster.rescan()

TL;DR

  • グループレプリケーション(mysqldそのもの)が認識してるノードの情報は performance_schema.replication_group_members
  • InnoDB Clusterの中でMySQL ShellとMySQL Routerが使うノードの情報は mysql_innodb_cluster_metadata.instances
  • 整合性が取れなったら cluster.rescan でグループレプリケーション側の情報を正としてInnoDB Clusterのメタデータを修正できる

以下、 performance_schema.replication_group_members をメンバー、 mysql_innodb_cluster_metadata.instances をメタデータと略するます。 メンバーにいるけどメタデータにいないパターン 再現方法

  • 手で(=MySQL Shellを使わずに)グループレプリケーションのノードを追加したり、 …
[さらに読む]
シングルプライマリーとDDLとDMLと

TL;DR

  • シングルプライマリー構成のInnoDB Clusterにおいて
    • プライマリーノードで ALTER TABLE 中の後続のDDL, DMLはプライマリーノードでブロックされない限りは ALTER TABLE を追い越してコミットすることができる
      • コミットされた後続のDDL, DMLはセカンダリーのリレーログに渡ってリプレイされるので(セカンダリーでの実行にかかる時間程度で)データが同期される
    • セカンダリーノードで ALTER TABLE をリプレイ中にプライマリーで実行されたDDL, DMLはその対象に関わらず 「セカンダリーでリプレイ中の ALTER TABLE を追い越せない」
      • よって、セカンダリーノード側で最初に受け取った …
[さらに読む]
Ubuntu仮想環境 "Multipass" にトライした話(1)

 Ubuntu仮想マシンをぽんぽん立ち上げられる "Multipass" というものがあると知り、興味を持ちました。 例えば MySQLレプリケーションの例を示す時にも、MySQLサーバがどのように動作しているかを理解している人向けには「ポートを変えて立ち上げています」で通じますが、多くの人は「別々のサーバ上で動作している …

[さらに読む]
きょうMySQLユーザ会20周年イベントをやっているはずだった

 2020年、日本MySQLユーザ会(MyNA)は設立20年を迎えます。15周年の時にはコロプラさんに全面的にご支援いただいて、記念イベントを開催しました。コロプラさん、その節はどうもありがとうございました。このご恩は5年経っても、たぶん10年経っても忘れません!

[さらに読む]
MySQLの生成列を使って緯度・経度の列をGEOMETRYに

 緯度と経度それぞれが別々のカラムに格納されているデータに対して、生成列を使ってGEOMETRY型のカラムとして扱えるようにする方法を考えてみました。速度面で何かディスアドバンテージがあるのか否かは未知数ですが、こんな方法もあるのだというヒントになればと思い、書いてみました。

元データの用意

 まず、緯度、経度それぞれが別々のカラムに格納されているテーブル spot1 を作成し、データを投入します。

DROP TABLE IF EXISTS spot1;
CREATE TABLE spot1 (
  id integer auto_increment,
  name varchar(256) ,
  lat double ,
  lng double ,
  PRIMARY KEY (id)
);

INSERT INTO spot1 (name, lat, lng) VALUES ('サークルハッピー寺院', 35.16110304 ,136.87678426);
INSERT INTO spot1 (name, lat, lng) VALUES ('旋法学園螺旋',         35.16814112 ,136.88577498);
INSERT INTO spot1 …
[さらに読む]
壊したマルチプライマリーモード、その後に

TL;DR

  • グループレプリケーションが他のノードから受け取ったクエリーは hostname-relay-bin-group_replication_applier* というリレーログに保管される
    • グループレプリケーションといえどリレーログなので再起動とかで勝手に消えはしない
      • RESET SLAVE で消せる。
      • 【2020/03/09 16:34】relay_log_recovery = ON でも消せる
  • グループレプリケーションの復旧はかなり面倒なので、一回クラスター破棄して作り直した方が楽かも

日々の覚書: MultiPrimaryModeのGroup Replication環境を崩壊させるテスト

[さらに読む]
MySQL 8.0.19が来た! その2: mysqlコマンドラインツールのbinary-as-hexがデフォルトでオンに。

MySQL 8.0.19が来た! その2: mysqlコマンドラインツールのbinary-as-hexがデフォルトでオンに。

2020-01-13にMySQL 8.0.xのメンテナンスリリースである8.0.19が出ました。

多くの機能が追加されましたが、本ブログではあまり他の人が取り上げなさそうなものをご紹介します。
今回はmysqlコマンドラインツールのbinary-as-hexについて。

いきなり顛末はこちら。

MySQL8でCHAR関数がドキュメントどおりになってない(41から始めました)

# 私は40くらいからMySQLはじめてたみたいです。

ちなみにドキュメントではもともと「デフォルトでは、CHAR() …

[さらに読む]
InnoDB ClusterのマルチプライマリーモードはGTIDの払い出し方が雑…

TL;DR

  • Certificationのタイミングで綺麗に連番(GNO)を払い出しているのかとか思ったら全然そんなことはなかった
  • 各サーバー内ではちゃんと直列化して、サーバーまたいだ部分は100万番ずつズラしてユニークになるようにしているらしい。
    • 99万9999まで本物のトランザクションが来たら更にオフセットするのかしらん

取り敢えず構築してマルチマスターモードに変更したところ。

 MySQL  localhost:33060+ ssl  JS > cluster.status()
{
"clusterName": "myfabric",
"defaultReplicaSet": {
"name": "default",
"ssl": "REQUIRED",
"status": "OK",
"statusText": "Cluster is ONLINE and can tolerate up to ONE failure.",
"topology": {
"node1:3306": {
[さらに読む]
MySQL8でCHAR関数がドキュメントどおりになってない

MySQL8でCHAR関数がドキュメントどおりになってない

https://dev.mysql.com/doc/refman/5.6/ja/string-functions.html#function_char

を読むと、こう書いてある。

  • CHAR(N,... [USING charset_name])
    CHAR() は各 N 引数を整数として解釈し、それらの整数のコード値で指定された文字を構成している文字列を返します。NULL 値はスキップされます。
mysql> SELECT CHAR(77,121,83,81,'76');
        -> 'MySQL'
mysql> SELECT CHAR(77,77.3,'77.3');
        -> 'MMM'

MySQL5.7.29の場合

ドキュメントはこちら

mysql [localhost:5729] {msandbox} ((none)) > SELECT …
[さらに読む]
MySQL 8.0.19現在のGroup Replicationで空パスワードのアカウントの認証プラグインだけを変えようとすると変になる

TL;DR

  • epelのsysbenchがcaching_sha2_passwordに対応してないので、root@localhostのパスワードを空のまま認証プラグインだけmysql_native_passwordに変更しようとした
  • プライマリーノード以外ではパスワードがEXPIREされて再変更を促された
  • プライマリーノードで SET PASSWORD = '' を実行したらセカンダリーノードでもEXPIRE状態じゃなくなった

パスワードが空っぽの時だけ再現するので、現用環境で問題になる可能性は低い。 再現手順。

mysql> CREATE USER yoku0825 IDENTIFIED BY '';
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT user, host, plugin, password_expired FROM mysql.user WHERE user = 'yoku0825';
+----------+------+-----------------------+------------------+
| user | host | plugin | password_expired | …
[さらに読む]
1927 件中 431 - 440 件を表示
« 前の 10 件 | 次の 10 件 »