MySQL でパーティションを設定したテーブルの PRIMARY KEY を変更しようとした時の話

とあるテーブルで複合 PRIMARY KEY を使用していたけれど,事情により変更する必要が出てきた. 例えば,PRIMARY KEY が GraphId (AUTO INCREMENT) と UserId の複合キーであったけれど,GraphId (AUTO INCREMENT) のみにしたくなったわけである. 元々このテーブルはアクセス頻度が高いので,パーティションも区切ってあった. パーティションに用いたカラムは UserId であり,そのため仕方なく PRIMARY KEY に追加したのだけれど,おかげで GraphId が UNIQUE にならず,大変不便であった.

取り敢えず普段使いの Heidi SQL

ALTER TABLE MyTable DROP PRIMARY KEY, ADD PRIMARY KEY (GraphId);

とすると,1503 A primary key must include all columns in the table's partitioning function で失敗する. (ちなみに innoDB です.)

仕方なく,SQL文を直打ちして,以下のように対応したところ PRIMARY KEY を変更できた.

  1. まずはパーティショニングを解除する.REMOVE PARTITIONING の代わりに DROP してしまうと大変な悲劇が起こる.

    ALTER TABLE TrendGraphTable REMOVE PARTITIONING;

  2. あまり深く考えずに以下のSQL文を打つと,1041 out of memory エラーが発生した.ちなみにテーブルのサイズは 123MB,32万件.

    ALTER TABLE MyTable DROP PRIMARY KEY, ADD PRIMARY KEY (GraphId);

  3. そんなときは

    ALTER TABLE MyTable DROP PRIMARY KEY, ADD PRIMARY KEY (GraphId), ALGORITHM = COPY;

  4. GraphId を AUTO INCREMENT に再設定する.

2018年11月某日のサイクリング

たまたまお休みがとれたので,サイクリングに出かけることにしました. まずは釜口水門の辺りからスタートです.ここ最近に比べると暖かく,空の綺麗な日です. f:id:ogwd:20181121230403j:plain f:id:ogwd:20181121230404j:plain 塩尻峠に向けて漕ぎ出しました.岡谷の街中には,教会と神社が向かい合わせに建っている場所があります. f:id:ogwd:20181121230407j:plainf:id:ogwd:20181121230408j:plain 坂道を登って岡谷市民球場に着きました.諏訪の平を見下ろします. f:id:ogwd:20181121230409j:plain 塩尻峠の頂上まで辿り着きました. f:id:ogwd:20181121230410j:plain 民家には柿の実のオレンジ色が映えます. f:id:ogwd:20181121230412j:plain 小坂田公園まで下りました. f:id:ogwd:20181121230413j:plain もうじき国道19号線と20号線の合流地です.交通安全を見守る神様. f:id:ogwd:20181121230416j:plain 塩尻駅近くは銀杏並木が黄色く染まっています. f:id:ogwd:20181121230418j:plain シーズンオフの葡萄畑を横目にぐんぐん進みます. f:id:ogwd:20181121230420j:plain 遠くにやまびこドームが見えます.平日昼時のドームには殆ど人がいませんでした. f:id:ogwd:20181121230421j:plainf:id:ogwd:20181121230422j:plain シーズンの熱気も冷めたアルウィン.今日はお休みです. f:id:ogwd:20181121230423j:plain 村井近くのラーメン屋さんが,知らないうちに閉店していました.その近所にある一里塚. f:id:ogwd:20181121230426j:plain 高速道路沿いをひたすら進みます.途中には畜産試験場f:id:ogwd:20181121230429j:plainf:id:ogwd:20181121230430j:plain 塩尻峠を再び登ります.小さな神社がありました. f:id:ogwd:20181121230431j:plain 峠を登りきったら,眼下に諏訪湖が見えてきました. f:id:ogwd:20181121230433j:plain

OpenSUSE 13.2 で sudo が遅くなるときのメモ

OpenSUSE 13.2 の管理をしているけど,zipper refresh & update した時に(恐らく) dbus 関連がアップデートされたときの話. zipper ps で実行中のバイナリに関するファイルが変更されているとの warning が出るので,

$ sudo rcdbus restart

または

$ sudo systemctl restart dbus

と正直に対応した後に sudo を使うと,何故か毎回 30 〜 60 秒くらい待たされることがあった.

仕方ないので $ sudo strace -o trace.log -r sudo ls と調べてみると,以下のような結果が得られた(一部抜粋).

...
0.000075 recvmsg(9, {msg_name(0)=NULL, msg_iov(1)=[{"l\4\1\1\n\0\0\0\2\0\0\0\215\0\0\0\1\1o\0\25\0\0\0", 24}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG
_CMSG_CLOEXEC) = 24
0.000075 recvmsg(9, {msg_name(0)=NULL, msg_iov(1)=[{"/org/freedesktop/DBus\0\0\0\2\1s\0\24\0\0\0"..., 146}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_C
MSG_CLOEXEC) = 146
0.000636 recvmsg(9, 0x7fff25a66e70, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
0.000054 ppoll([{fd=9, events=POLLIN}], 1, {24, 999236000}, NULL, 8) = 0 (Timeout)
25.004158 open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
...

何度やっても recvmsg にて /org/freedesktop/DBus にアクセスした後の ppoll の次の処理で時間がかかっているらしい. 色々調べた挙句,

$ sudo systemctl restart systemd-logind 

とコマンドを打つと sudo を使っても待たされることがなくなった. 参考にしたのは以下の URL.

55136 – DBus Timeout on poll(): kdialog, plasma-desktop and other binaries are freezing

unix.stackexchange.com

MacBook Pro の iTunes と iPhone6 の WiFi 同期に失敗した時の対策

以前に MacBook (2008) と iPhone6 の間の同期を iTunes でしていたけれど,最近 MacBook Pro (2016) を購入して,MacBook からの移行 (TimeMachine 経由)をした.

すると,MacBook ProiPhone6WiFi 同期がどうやっても実行されない.iPhone の「設定」-「一般」-「iTunes Wi-Fi 同期」を選択して,「今すぐ同期」を選択しても,「(MacBook Pro のホスト名) を検索中...」とのメッセージが表示されるだけで,一向に同期が行われないし,iTunes も無反応.

色々試したところ,自宅ルータの「IPv6 マルチキャスト通信」が無効になっていたので,これを有効にしたら同期が行われるようになった. MacBook の時には IPv6 以外の何らかの方法で同期を行なっていたけれど,MacBook Pro からは IPv6 オンリーになったということなのだろうか.

ちなみに,以下の写真はうちの無線LAN ルータの設定画面.矢印の箇所を設定変更した. f:id:ogwd:20161217203628p:plain

2016年11月某日のサイクリング

秋なので,11月初頭に紅葉目当てのサイクリングをしました. 塩尻峠を岡谷側から登りきったところに,塩嶺御野立公園はあります. f:id:ogwd:20161103210106j:plain

午後の日差しに映える赤い葉. f:id:ogwd:20161103210344j:plain f:id:ogwd:20161103215512j:plain 木彫りの梟がいました. f:id:ogwd:20161103210732j:plain

展望台からは諏訪湖の向こうの富士山や北アルプスを見渡すことができます. f:id:ogwd:20161103210759j:plain f:id:ogwd:20161103210745j:plain

下り道は自動車で混んでいるので,スピードを出し過ぎないように. f:id:ogwd:20161103210721j:plain

岡谷ICの出入り口を過ぎれば,出早神社に着きます. f:id:ogwd:20161103215546j:plain まずは神社にお参り. f:id:ogwd:20161103215527j:plain 奥に進むと,池に映って紅葉二つ. f:id:ogwd:20161103221609j:plain

2015年7月某日のサイクリング

下諏訪から国道20号線を辿る旅. 上諏訪駅前を通り過ぎ,ひたすら茅野方面へ.横に見えるのは名前もわからない神社. f:id:ogwd:20150728233752j:plain

大きな交差点を越えて,坂室バイパスに進みます.トンネルの上り(左側)には歩道スペースがあるので安全です. f:id:ogwd:20150728233803j:plain

緑と川のせせらぎに囲まれた青柳駅に寄り道します. f:id:ogwd:20150728233747j:plainf:id:ogwd:20150728233751j:plain

青い空と緑の夏. f:id:ogwd:20150728233743j:plain

富士見からはひたすら下り坂の続く,楽な道のり.やっぱり名前のわからない石碑や神社,街並が横を流れていきます. f:id:ogwd:20150728233739j:plainf:id:ogwd:20150728233750j:plain

道の駅 蔦木で休憩してから(写真取り忘れ),長野と山梨の県境に辿り着きました. f:id:ogwd:20150728233759j:plain

僅かに雨も落ちています.昼時のウイスキー工場の門は車で混雑しています. f:id:ogwd:20150728233746j:plain

道の駅 白州に着きました.川縁でイベントをしているらしく,子供達が岩魚の掴み取りに挑戦していました. 大人は売店でお金を出して収穫物を頂きます. f:id:ogwd:20150728233753j:plainf:id:ogwd:20150728233757j:plain

川で遊ぶ子供達を横目に,水の補給を済ませたら,雨の降る前に復路に入ります. f:id:ogwd:20150728233801j:plain

左車線には六地蔵f:id:ogwd:20150728233742j:plain

途中の荒田交差点で,国道20号線に暫しの別れを告げて,小淵沢に向かいます. 渦巻き状の坂を登れば,国道はもう下界に. f:id:ogwd:20150728233748j:plain

きつい坂を登ったら,小淵沢小学校のSLが待っていました. f:id:ogwd:20150728234645j:plain

小淵沢駅までもう少し登ります.空はどんよりとしています. f:id:ogwd:20150728233741j:plain

小淵沢ICの前では,如来様が周囲に気を配っています. f:id:ogwd:20150728233744j:plain

さらに登れば,道の駅 小淵沢に到着です.今日はどの駅も観光客で賑わっていました. f:id:ogwd:20150728233749j:plainf:id:ogwd:20150728233758j:plain

小淵沢から富士見へ向けて農道を走ります.交通量も少なく,曇りがちの空に緑の森.少しだけ涼しくなった気がします. f:id:ogwd:20150728233740j:plainf:id:ogwd:20150728233755j:plain

富士見駅に辿り着きました. f:id:ogwd:20150728233800j:plain

少し下れば再び国道20号線.行きで下った場所は,帰りには上りになります.久し振りに攣りそうになった脚を誤魔化しながら帰ります. f:id:ogwd:20150728233802j:plain