ScrapboxやGyazoを生み出しているNOTAの開発の現場 の話を聞いてきたよ
土曜日が自社イベント、日曜がTOEICでふらっふらなんですが・・・でもアウトプットはしとかなきゃ。
揮発性高いんすよ、記憶が。
今日はこちらの勉強会に参加してきました。
devlove-kansai.doorkeeper.jp
開発の現場話シリーズ、大好きです。
自分の現場や仕事にしか興味がない人もそれはそれでいいのですが、
私は他の人やチームやグループや他社の現場や仕事にも大いに興味があるので。
面白そうな事例があったらぜひ参考にさせてもらいたいし。
会場到着。初めてお邪魔させていただく株式会社リアズさん。素敵なオフィスだー(^^) #DevKan
— らん🐽 (@run51502) 2018年10月29日
椅子も可愛いし、座ったら5秒で寝落ちしそうないい感じのソファーはあるし。
カントリー調っぽくてウッディなミーティングスペースです!
開発拠点は京都。 #DevKan
— らん🐽 (@run51502) 2018年10月29日
私、実家京都どす。
ググったら大体あの辺りね、と。
4人の方がそれぞれの役職や立場でお話してくださいました。
アルバイトさんまで・・・(しかもはてなさんと掛け持ちって・・・すごい)
キーワードで印象に残っているのはこんな感じ。
- リモートワーキング!
- ドッグフーディングでぐるぐる改善
- リアルタイムでドキュメント編集
- Chat Ops
- 案ずるより産むがやすし
ドッグフーディングされているとのことで、すんごいドキュメント数なんだとか。
で、気になったのが・・・
凄いページ数なんだな…新しく入ってきた人は読むのどれぐらいかかるんだろう… #DevKan
— らん🐽 (@run51502) 2018年10月29日
ほら、新規参入者ってどこにどのドキュメントあるかって探すだけで疲れ果てちゃうじゃないですか。
するとこんな回答いただきました。
必要なものだけ、知りたいときにリンクと辿りながら読んでいくスタイルです。
— RAKUSAI Isshu (@rakusai) 2018年10月29日
リンクがいい感じにサマれるページが作りやすいから、きっと辿りやすいんだろうなぁ。
この辺りはデモを見せていただいてなんとなく理解しました。
反対に使ってみないとピンと来ないかも。
文章書いた人の顔アイコンが表示されてたり、絵文字もいっぱいあってなかなか楽しそうです。
これはぜひ使って見たい。まず、自分用でw
PRが大きくなりすぎないって凄い。さらっと話されてるけどこれ凄いぞ。 #DevKan
— らん🐽 (@run51502) 2018年10月29日
朝起きれない人でもミーティング出れなくてもドキュメント共有してるから大丈夫!(凄い #DevKan
— らん🐽 (@run51502) 2018年10月29日
スプリントは2週なんだけど、中間ポイントチェックみたいなのがある。 #DevKan
— らん🐽 (@run51502) 2018年10月29日
そうそう、2週であるのはいいのだけど、ちょっと長く感じることもあるんですよね。
中間ポイントもうけるのっていいアイディアだなぁ。
最後に本が欲しくてじゃんけん大会に参加。
ジャンケンで勝ってゲットー!ありがとうございました。#Devkan
ステッカーもいただきましたよ。
Scrapboxのステッカーかわいいw手に持ってるの、出町柳にある有名な店の豆餅かしら…?
プロダクトに惚れ込んだユーザーさんが開発者に転身したり、
ドッグフーディングで出た不満を改善してガンガンプルリク出したり、
開発者としてかなりエモい話が聞けた気がしますw
最後の質問タイムで印象に残ったのは、
リモート開発をしていると勤怠管理や評価をどうするのか?という質問に、
「結果(アウトプット)で判断」というシンプルな答えでした。
私個人的には質も気にはなるんですけどね・・・。
私の体験の話なんですけど、ゆるすぎるものとかレベルの高くないものを多発された場合はどうなるんだろう、とか・・・。
小さい、とレベルが低いは決して同じではないと思っていて。
んー、この辺りモヤモヤして頭の整理がついてないでかなりとっ散らかった表現になりますが。
今日もいい刺激いただきました。がんばろ。
継続的インテグレーション(CI)・継続的デリバリー(CD)のお話 を聞いてきたよ
✳︎シェアしていただいた発表資料の埋め込みを追加しました。
今日はこちらの勉強会に参加してきましたよ!
devlove-kansai.doorkeeper.jp
体調悪いので雑なメモですんません・・・。
Jenkinsしか触ったことないのですよー。
しかも1系が現役で動いているっ やばいですねっ はいっ。
負け惜しみじゃないけど(?)、どうやって動いているかを知っているので、
簡単に設定出来るようになった!は感動出来るんじゃないかなーと思ったり(ぐぬぬ)。
洋さんのお話を聞いていたら廊下を凄い勢いで走る音。
そのあと最初の登壇者である、みうみうさんが現れたのでありましたw
みうみうさんのCI一覧の凄さったら・・・
本日、「発表の途中で使う」一覧表です。 https://t.co/NNnsIUTSKD #DevKan
— 個人事業牛 (みうら かずひと) (@kazuhito_m) 2018年10月22日
トップバッター用に作られたという発表、さすが包括的なお話でわかりやすかったです。
次はにしむらさんのScrewdriver.cdのお話。
米ヤフーさんが作ったものだったのですね。
ヤムルってるところとかさすがサービス型CIだなーという感じ。
インターフェースとかCircleCIに似てますね、という意見も。
外部勉強会で初登壇ということでかなり緊張?されてたようですが、堂々とお話されてました。
凄いなぁ。ぎっはぶトラブルにも冷静に対処されておられたしw
どこかでお見かけしたかも・・・?と思ってたら去年までうちの現場に居られたのですね!
チームは違うけど。
ギルドワークス前川さんのCircleCI話も、実際に案件で使用されていることもあり
とてもわかりやすかったです。
ぎっはぶが落ちてなければデモもぜひ見たかった・・・!
ちゃんとキャプチャを用意されていたのはさすがですね。
あとCircleCIってローカルに落として動かせるんですね、知らなかった・・・。
speakerdeck.com
お話を聞いていて思うのは・・・no more CI職人。
ややこしい設定やスクリプトを組まないに越したことはない。
新しいシステム組むならチャンスですね。CIを使う前提で考えたいもんです。
既存システムの場合は・・・小さく始めるならまずビルドから、って意見が出てました。
いいですね、そこからなら何とか着手出来そう。
MySQL8.0 でごにょごにょしてみた(仮) つづき
さて、前回の続きでっす。
run-around.hatenablog.com
バイナリログについてちょっとだけ勉強してみた。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.2.4 バイナリログ
リンクはバージョンが5.6なのだけど、リファレンスマニュアルです。
バイナリログには、テーブル作成操作やテーブルデータへの変更などのデータベース変更を記述する「イベント」が格納されます。
ふーむ。
バイナリロギングを有効にしてサーバーを実行すると、パフォーマンスがいくらか低下します。ただし、レプリケーションをセットアップでき、リストア操作に対応できるというバイナリログの利点は、一般的にこのパフォーマンスの減少よりも重要です。
確かに、書き込みが増えるんだからパフォーマンスには影響するでしょうなぁ。
このバイナリログ、MySQL 8.0からデフォルトで出力されているらしいです。
あ、ってことは8.0以前は自分で設定変えないと出力出来なかったってことかしら。
前回書いたバックアップしたダンプデータだけではバックアップを取得した時点のデータしか戻せない。
でもこのバイナリログを利用することで戻したい時点を選んでデータを戻せるってことですかね。
で、バイナリログってどんな感じってことで触ってみることにします。
全てのバイナリログファイル名を表示してみます。
mysql> show master logs; +---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000002 | 199 | | binlog.000003 | 1782 | +---------------+-----------+ 2 rows in set (0.02 sec)
1番のファイルがないのは、ちょっと試しに消してみたので無くなってますw
気にしないでー。
3番のファイルがデカイっすね。テーブル作成やデータ登録したからここに詰まってるんですかね。
で、今使ってるログファイルはどれなの?を調べるのはこれかな。
mysql> show master status; +---------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +---------------+----------+--------------+------------------+-------------------+ | binlog.000003 | 1782 | | | | +---------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
あ、やっぱり3番のファイルがナウなんですな。
今3番なのですが次のファイルに切り替えたいなーっていう時はこれ。
mysql> flush binary logs; Query OK, 0 rows affected (0.06 sec)
本当に切り替わったかしら、と確認してみる。
mysql> show master logs; +---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000002 | 199 | | binlog.000003 | 1826 | | binlog.000004 | 155 | +---------------+-----------+ 3 rows in set (0.02 sec)
おー。4番のファイルが出来たー。
不要なバイナリログの削除も出来ちゃう。2番消しちゃおうかな。
ちょっと注意なのは、2番を消したい場合は「3番以前のファイルをパージ」って設定するんですね。
mysql> purge master logs to 'binlog.000003'; Query OK, 0 rows affected (0.02 sec) mysql> show master logs; +---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000003 | 1826 | | binlog.000004 | 155 | +---------------+-----------+ 2 rows in set (0.00 sec)
全てのバイナリログ削除も出来るんですが、今回はやんないw
reset master;
バイナリログってテーブル変更時などに記録されるんですよね。selectとかじゃ記録されないのかな?
mysql> show master logs; +---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000003 | 1826 | | binlog.000004 | 155 | +---------------+-----------+ 2 rows in set (0.00 sec) mysql> select * from stray_cat_tbl; +-----+----------+---------------+ | seq | cat_name | cat_type | +-----+----------+---------------+ | 1 | Black | NULL | | 2 | Mike | Tortoiseshell | +-----+----------+---------------+ 2 rows in set (0.00 sec) mysql> show master logs; +---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000003 | 1826 | | binlog.000004 | 155 | +---------------+-----------+ 2 rows in set (0.00 sec)
うん、やっぱりバイナリログは動いてないなー。
で、データ登録をすると・・・。
mysql> show master logs; +---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000003 | 1826 | | binlog.000004 | 155 | +---------------+-----------+ 2 rows in set (0.00 sec) mysql> INSERT INTO house_cat_tbl (cat_name, cat_type) VALUES ('Anko', 'Mix'); Query OK, 1 row affected (0.18 sec) mysql> show master logs; +---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000003 | 1826 | | binlog.000004 | 457 | +---------------+-----------+ 2 rows in set (0.00 sec)
おー。バイナリログが4番に書き込まれたー。
バイナリログからロールフォワード用SQL文を生成っていうのをやってみようかと。
まず実際のバイナリログってどこに保存されてるんですかね?
ほほぅ。ここのパスなのか。
mysql> show variables like 'datadir'; +---------------+-----------------------+ | Variable_name | Value | +---------------+-----------------------+ | datadir | /usr/local/var/mysql/ | +---------------+-----------------------+ 1 row in set (0.02 sec)
んじゃ、本当にファイルがあるか確認。ありますねー。ちゃんとある。
ls -la /usr/local/var/mysql/ total 336000 drwxr-xr-x 28 run admin 952 10 21 14:07 . drwxrwxr-x 4 run admin 136 10 16 23:47 .. -rw-r----- 1 run admin 2175 10 20 23:58 USERnoMacBook-Pro.local.err -rw-r----- 1 run admin 6 10 17 20:35 USERnoMacBook-Pro.local.pid -rw-r----- 1 run admin 56 10 16 23:47 auto.cnf -rw-r----- 1 run admin 1826 10 21 13:59 binlog.000003 -rw-r----- 1 run admin 457 10 21 14:22 binlog.000004 -rw-r----- 1 run admin 32 10 21 14:07 binlog.index (略)
ロールフォワード用SQLを作ってみる。指定するバイナリログは3番にします!
mysqlbinlog --disable-log-bin --start-position=0 /usr/local/var/mysql/binlog.000003 > /Users/run/Downloads/recover.sql cat /Users/run/Downloads/recover.sql /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!32316 SET @OLD_SQL_LOG_BIN=@@SQL_LOG_BIN, SQL_LOG_BIN=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #181017 20:47:53 server id 1 end_log_pos 124 CRC32 0xdbb81c39 Start: binlog v 4, server v 8.0.12 created 181017 20:47:53 BINLOG ' aSHHWw8BAAAAeAAAAHwAAAAAAAQAOC4wLjEyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAEwANAAgAAAAABAAEAAAAYAAEGggAAAAICAgCAAAACgoKKioAEjQA CgE5HLjb '/*!*/; # at 124 #181017 20:47:53 server id 1 end_log_pos 155 CRC32 0x3c0d7a6a Previous-GTIDs # [empty] # at 155 #181021 0:07:40 server id 1 end_log_pos 228 CRC32 0x34c60bf0 Anonymous_GTID last_committed=0 sequence_number=1 rbr_only=no original_committed_timestamp=1540048060324006 immediate_commit_timestamp=1540048060324006 transaction_length=182 # original_commit_timestamp=1540048060324006 (2018-10-21 00:07:40.324006 JST) # immediate_commit_timestamp=1540048060324006 (2018-10-21 00:07:40.324006 JST) /*!80001 SET @@session.original_commit_timestamp=1540048060324006*//*!*/; SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/; # at 228 #181021 0:07:40 server id 1 end_log_pos 337 CRC32 0x6b672ae7 Query thread_id=9 exec_time=0error_code=0 Xid = 15 SET TIMESTAMP=1540048060/*!*/; SET @@session.pseudo_thread_id=9/*!*/; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/; SET @@session.sql_mode=1168113696/*!*/; SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; /*!\C utf8mb4 *//*!*/; SET @@session.character_set_client=255,@@session.collation_connection=255,@@session.collation_server=33/*!*/; SET @@session.lc_time_names=0/*!*/; SET @@session.collation_database=DEFAULT/*!*/; /*!80005 SET @@session.default_collation_for_utf8mb4=255*//*!*/; create database miaow /*!*/; # at 337 #181021 0:12:52 server id 1 end_log_pos 412 CRC32 0x3a6d06c7 Anonymous_GTID last_committed=1 sequence_number=2 rbr_only=no original_committed_timestamp=1540048373074347 immediate_commit_timestamp=1540048373074347 transaction_length=379 # original_commit_timestamp=1540048373074347 (2018-10-21 00:12:53.074347 JST) # immediate_commit_timestamp=1540048373074347 (2018-10-21 00:12:53.074347 JST) /*!80001 SET @@session.original_commit_timestamp=1540048373074347*//*!*/; SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/; # at 412 #181021 0:12:52 server id 1 end_log_pos 716 CRC32 0x900b0bd2 Query thread_id=9 exec_time=1error_code=0 Xid = 23 use `miaow`/*!*/; SET TIMESTAMP=1540048372/*!*/; CREATE TABLE `house_cat_tbl` ( `seq` int(10) unsigned NOT NULL auto_increment, `cat_name` varchar(255) NOT NULL, `cat_type` varchar(255) default NULL, PRIMARY KEY (`seq`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 /*!*/; # at 716 #181021 0:12:54 server id 1 end_log_pos 791 CRC32 0xa8495111 Anonymous_GTID last_committed=2 sequence_number=3 rbr_only=no original_committed_timestamp=1540048375056693 immediate_commit_timestamp=1540048375056693 transaction_length=379 # original_commit_timestamp=1540048375056693 (2018-10-21 00:12:55.056693 JST) # immediate_commit_timestamp=1540048375056693 (2018-10-21 00:12:55.056693 JST) /*!80001 SET @@session.original_commit_timestamp=1540048375056693*//*!*/; SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/; # at 791 #181021 0:12:54 server id 1 end_log_pos 1095 CRC32 0x31c4cf25 Query thread_id=9 exec_time=1 error_code=0 Xid = 24 SET TIMESTAMP=1540048374/*!*/; CREATE TABLE `stray_cat_tbl` ( `seq` int(10) unsigned NOT NULL auto_increment, `cat_name` varchar(255) NOT NULL, `cat_type` varchar(255) default NULL, PRIMARY KEY (`seq`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 /*!*/; # at 1095 #181021 0:20:11 server id 1 end_log_pos 1170 CRC32 0x42108fb4 Anonymous_GTID last_committed=3 sequence_number=4 rbr_only=yes original_committed_timestamp=1540048811250826 immediate_commit_timestamp=1540048811250826 transaction_length=687 /*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/; # original_commit_timestamp=1540048811250826 (2018-10-21 00:20:11.250826 JST) # immediate_commit_timestamp=1540048811250826 (2018-10-21 00:20:11.250826 JST) /*!80001 SET @@session.original_commit_timestamp=1540048811250826*//*!*/; SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/; # at 1170 #181021 0:18:53 server id 1 end_log_pos 1246 CRC32 0x27a08215 Query thread_id=9 exec_time=0 error_code=0 SET TIMESTAMP=1540048733/*!*/; BEGIN /*!*/; # at 1246 #181021 0:18:53 server id 1 end_log_pos 1315 CRC32 0x0151adba Table_map: `miaow`.`house_cat_tbl` mapped to number 67 # at 1315 #181021 0:18:53 server id 1 end_log_pos 1371 CRC32 0x87f099de Write_rows: table id 67 flags: STMT_END_F BINLOG ' XUfLWxMBAAAARQAAACMFAAAAAEMAAAAAAAEABW1pYW93AA1ob3VzZV9jYXRfdGJsAAMDDw8E/QL9 AgQBAYACASG6rVEB XUfLWx4BAAAAOAAAAFsFAAAAAEMAAAAAAAEAAgAD/wABAAAABABUYW1hCABKYXBhbmVzZd6Z8Ic= '/*!*/; # at 1371 #181021 0:18:53 server id 1 end_log_pos 1440 CRC32 0x33a35344 Table_map: `miaow`.`house_cat_tbl` mapped to number 67 # at 1440 #181021 0:18:53 server id 1 end_log_pos 1505 CRC32 0x8727ce76 Write_rows: table id 67 flags: STMT_END_F BINLOG ' XUfLWxMBAAAARQAAAKAFAAAAAEMAAAAAAAEABW1pYW93AA1ob3VzZV9jYXRfdGJsAAMDDw8E/QL9 AgQBAYACASFEU6Mz XUfLWx4BAAAAQQAAAOEFAAAAAEMAAAAAAAEAAgAD/wACAAAAAwBab2USAEFtZXJpY2FuIFNob3J0 aGFpcnbOJ4c= '/*!*/; # at 1505 #181021 0:18:53 server id 1 end_log_pos 1574 CRC32 0xe64ddbc0 Table_map: `miaow`.`stray_cat_tbl` mapped to number 68 # at 1574 #181021 0:18:53 server id 1 end_log_pos 1621 CRC32 0x06e417a5 Write_rows: table id 68 flags: STMT_END_F BINLOG ' XUfLWxMBAAAARQAAACYGAAAAAEQAAAAAAAEABW1pYW93AA1zdHJheV9jYXRfdGJsAAMDDw8E/QL9 AgQBAYACASHA203m XUfLWx4BAAAALwAAAFUGAAAAAEQAAAAAAAEAAgAD/wQBAAAABQBCbGFja6UX5AY= '/*!*/; # at 1621 #181021 0:18:53 server id 1 end_log_pos 1690 CRC32 0x94a25b09 Table_map: `miaow`.`stray_cat_tbl` mapped to number 68 # at 1690 #181021 0:18:53 server id 1 end_log_pos 1751 CRC32 0x5b723527 Write_rows: table id 68 flags: STMT_END_F BINLOG ' XUfLWxMBAAAARQAAAJoGAAAAAEQAAAAAAAEABW1pYW93AA1zdHJheV9jYXRfdGJsAAMDDw8E/QL9 AgQBAYACASEJW6KU XUfLWx4BAAAAPQAAANcGAAAAAEQAAAAAAAEAAgAD/wACAAAABABNaWtlDQBUb3J0b2lzZXNoZWxs JzVyWw== '/*!*/; # at 1751 #181021 0:20:11 server id 1 end_log_pos 1782 CRC32 0x5783d3c3 Xid = 27 COMMIT/*!*/; # at 1782 #181021 13:59:19 server id 1 end_log_pos 1826 CRC32 0xd8f503e3 Rotate to binlog.000004 pos: 4 SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/; DELIMITER ; # End of log file /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!32316 SET SQL_LOG_BIN=@OLD_SQL_LOG_BIN*/; /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
なんか凄いの出たw
次はバイナリログからデータベースを復元する!をやります。
じゃ、まずはデータベースを削除しますかー。
mysql> drop database miaow; Query OK, 2 rows affected (0.65 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.02 sec)
ほいほい、消えましたね。ばっさり。
で、コマンドを実行するわけですが・・・「mysql.sock」のありかが分からなかったんで、調べてみた。
え、こんなとこにあるの?w
mysql_config --socket /tmp/mysql.sock
でもって、さっき作ったロールフォワード用SQLを作ってようやく実行。
mysql --user=root --password=(パスワード) --socket=/tmp/mysql.sock --default-character-set=utf8mb4 < /Users/run/Downloads/recover.sql
さて、データベースは復活したかな?
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | miaow | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)
わーい!みぁおぅ!w
テーブルも確認してみます。
mysql> select * from house_cat_tbl; +-----+----------+--------------------+ | seq | cat_name | cat_type | +-----+----------+--------------------+ | 1 | Tama | Japanese | | 2 | Zoe | American Shorthair | +-----+----------+--------------------+ 2 rows in set (0.00 sec) mysql> select * from stray_cat_tbl; +-----+----------+---------------+ | seq | cat_name | cat_type | +-----+----------+---------------+ | 1 | Black | NULL | | 2 | Mike | Tortoiseshell | +-----+----------+---------------+ 2 rows in set (0.00 sec)
そう、ロールフォワード用SQLを作る時、3番のログを指定しているので、以下のデータは含まれないんですよね。
mysql> INSERT INTO house_cat_tbl (cat_name, cat_type) VALUES ('Anko', 'Mix');
まー、これでなんとか指定時点のデータを戻すっていうのは検証出来たかな。
お疲れ様ー。
MySQL8.0 でごにょごにょしてみた(仮)
関西DB勉強会に2回ほど参加させていただいたのと、
会社にお願いしてこのセミナーに行かせてもらったこともあって、
【大阪開催】MySQL8.0入門セミナー ~バックアップ編~
んでもって先日社内でセミナー参加報告のLTもしたこともありまして、
ちょっと趣味でMySQLを触ってみることにしましたん。
と言っても色々教わったことの10分の1ぐらいしか試せないへっぽこなので、
自分へのメモといった感じです。
まずはインストールしなきゃ(一番重要w
このあたりのページを参考にさせてもらいました。
MySQL8.0をmacOSにインストールする方法 | プログラミング入門ナビ
さくーっとインストールできて稼動確認も完了。
起動・再起動・停止
mysql.server start mysql.server restart mysql.server stop
ログイン・ログアウト
mysql -uroot -p(パスワード) exit
んじゃ、まずデータベースどんだけあるか一覧出してみますか。
show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.68 sec)
はい、特にまだなーんも触ってないんでw
じゃ、とりあえずデータベース一個作ってみますか。
mysql> create database miaow; Query OK, 1 row affected (0.16 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | miaow | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.02 sec)
うん、ミャオゥできたw
せっかくなんで作ったデータベースに切り替え。
use miaow;
じゃ、テーブルも作ってみるよ。とりあえず2個ね。
mysql> CREATE TABLE `house_cat_tbl` ( -> `seq` int(10) unsigned NOT NULL auto_increment, -> `cat_name` varchar(255) NOT NULL, -> `cat_type` varchar(255) default NULL, -> PRIMARY KEY (`seq`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected, 1 warning (0.15 sec) mysql> mysql> CREATE TABLE `stray_cat_tbl` ( -> `seq` int(10) unsigned NOT NULL auto_increment, -> `cat_name` varchar(255) NOT NULL, -> `cat_type` varchar(255) default NULL, -> PRIMARY KEY (`seq`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected, 1 warning (0.09 sec)
ちゃんとテーブル出来たか確認しておきましょうかね。
mysql> show tables; +-----------------+ | Tables_in_miaow | +-----------------+ | house_cat_tbl | | stray_cat_tbl | +-----------------+ 2 rows in set (0.01 sec)
出来た出来た。
データも登録しちゃおうかな。
mysql> begin; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO house_cat_tbl (cat_name, cat_type) VALUES ('Tama', 'Japanese'); Query OK, 1 row affected (0.10 sec) mysql> INSERT INTO house_cat_tbl (cat_name, cat_type) VALUES ('Zoe', 'American Shorthair'); Query OK, 1 row affected (0.00 sec) mysql> mysql> INSERT INTO stray_cat_tbl (cat_name, cat_type) VALUES ('Black', NULL); Query OK, 1 row affected (0.02 sec) mysql> INSERT INTO stray_cat_tbl (cat_name, cat_type) VALUES ('Mike', 'Tortoiseshell'); Query OK, 1 row affected (0.01 sec)
うん、満足(こら
ちゃんとデータ登録出来たか確認もしておきましょうね。
mysql> select * from house_cat_tbl; +-----+----------+--------------------+ | seq | cat_name | cat_type | +-----+----------+--------------------+ | 1 | Tama | Japanese | | 2 | Zoe | American Shorthair | +-----+----------+--------------------+ 2 rows in set (0.00 sec) select * from stray_cat_tbl; +-----+----------+---------------+ | seq | cat_name | cat_type | +-----+----------+---------------+ | 1 | Black | NULL | | 2 | Mike | Tortoiseshell | +-----+----------+---------------+ 2 rows in set (0.00 sec)
まぁ、ここまでは仕事で普通にやってることばかりでして、
本当はバックアップの確認をしたかったのですよね。
まずは仕事でも使っている(というかこれしかしたことないなぁ)ダンプ取得。
別ターミナル開いてコマンド打ってみます。
mysqldump -uroot -p(パスワード) -hlocalhost miaow house_cat_tbl stray_cat_tbl > miaow_dump.sql
取れた取れた〜。ダンプ取れた〜。
中身も見てみますかね。ふむふむ、こんな感じに出力されているんですね。
cat miaow_dump.sql -- MySQL dump 10.13 Distrib 8.0.12, for osx10.12 (x86_64) -- -- Host: localhost Database: miaow -- ------------------------------------------------------ -- Server version 8.0.12 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; SET NAMES utf8mb4 ; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `house_cat_tbl` -- DROP TABLE IF EXISTS `house_cat_tbl`; /*!40101 SET @saved_cs_client = @@character_set_client */; SET character_set_client = utf8mb4 ; CREATE TABLE `house_cat_tbl` ( `seq` int(10) unsigned NOT NULL AUTO_INCREMENT, `cat_name` varchar(255) NOT NULL, `cat_type` varchar(255) DEFAULT NULL, PRIMARY KEY (`seq`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `house_cat_tbl` -- LOCK TABLES `house_cat_tbl` WRITE; /*!40000 ALTER TABLE `house_cat_tbl` DISABLE KEYS */; INSERT INTO `house_cat_tbl` VALUES (1,'Tama','Japanese'),(2,'Zoe','American Shorthair'); /*!40000 ALTER TABLE `house_cat_tbl` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `stray_cat_tbl` -- DROP TABLE IF EXISTS `stray_cat_tbl`; /*!40101 SET @saved_cs_client = @@character_set_client */; SET character_set_client = utf8mb4 ; CREATE TABLE `stray_cat_tbl` ( `seq` int(10) unsigned NOT NULL AUTO_INCREMENT, `cat_name` varchar(255) NOT NULL, `cat_type` varchar(255) DEFAULT NULL, PRIMARY KEY (`seq`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `stray_cat_tbl` -- LOCK TABLES `stray_cat_tbl` WRITE; /*!40000 ALTER TABLE `stray_cat_tbl` DISABLE KEYS */; INSERT INTO `stray_cat_tbl` VALUES (1,'Black',NULL),(2,'Mike','Tortoiseshell'); /*!40000 ALTER TABLE `stray_cat_tbl` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2018-10-21 0:33:18
よく運用業務でデータ更新行う場合、まずダンプ取っておきますね。
失敗しちゃった場合すぐ戻せるように。
でもこれ、ダンプ取った後に他の処理からデータ更新されてたら、
ダンプ戻すとデータデグレするんですよね。(そりゃそうだ)
マスタデータで他に更新される心配がなければいいとは思うんですが。
で、セミナーでバイナリログの話を聞きまして。
お恥ずかしい話ですがバイナリログの話は全然知らなかったです。
バイナリログ操作する話も試してみようと思うんですが・・・
続きは次のエントリで(こら
おやすみなさい・・・
第9回 関西DB勉強会 に行ってきたよ
今日はNOVAレッスン後、こちらの勉強会に参加してきました。
うっかりグラフロで迷子になりかけましたw
結構いつも迷子になるグラフロ。インフォメーションのお姉さん親切に教えてくれたー #dbkan
— らん🐽 (@run51502) 2018年10月13日
さて、今回もグタグタな自分用メモ開始。
前回と同様大盛況。
前回は女性がかなり少なかった記憶があるのですが・・・今回は登壇者にお二人!
参加者にもちらほら女性がおられて何だか嬉しかったですー。
おお、登壇者が連続女性だ。今日女性参加者もちらほらいて心強い。 #dbkan
— らん🐽 (@run51502) 2018年10月13日
kintoneもFileMakerも機能は似ていたり、出来ること出来ないことに差分あったりもするけれどどっちも頑張って欲しいなぁ。
特にkintoneはメイドインジャパンっていうのもあるし。
以前デブサミ関西でkintoneのパフォチューニングの苦労話聞いたので、画面操作でバックエンドがどうなってるのか想像するとドキドキするw #dbkan
— らん🐽 (@run51502) 2018年10月13日
kintoneよりややこしいイメージのFileMakerってw #dbkan
— らん🐽 (@run51502) 2018年10月13日
元彼がめっちゃ出世して目の前に現れた感じのFileMaker #dbkan
— らん🐽 (@run51502) 2018年10月13日
FileMakerって Appleの子会社になってたのね。 #dbkan
— らん🐽 (@run51502) 2018年10月13日
FileMakerはさすが、iPadやiPhoneレイアウトのモードとかあるのはさすがだなと思いました。
よく携帯ショップの受付画面やケーブルテレビの工事者がタブレットで情報確認したり入力してる画面みるけど、あれってもしかしてFileMakerで作ったりしてるのかしら・・・と思いながらお話聞いてました。
DBのハードウェア側のお話、かなりダークな面もお話いただいてすごい勢いでしたw
ハードウェアには明るくないので聞くのに必死でしたが・・・。
前の現場ではちょっこし使ってたこともあるPostgreSQL11の話。
恥ずかしながらテーブルパーティショニングのこととか知らなかったので聞けてよかったです。
MySQLはブロックチェーンのお話。発表者の方は随分緊張されてたみたいですが、説明はすごくわかりやすかったですよ。
MySQL Shellのデモも見せていただきました。
セッション中にポンポンと質問は飛ぶし、笑いもあるし、いつもながら雰囲気の良い勉強会だなぁと。
チャンスがあったらkintoneのイベントは行ってみたいなぁ。
もっと色々出来ることとかカスタマイズ事例とか知りたいっす。
冬の焚き火
あまりに忙しいとぼんやり考える時間もなくて、クタクタで考える体力もなくて。
一人で考えると堂々巡りしちゃうこともあってちょっとよくないなーっと。
で、ちょっと気楽に話せる人と話す機会があったんですが。
ほんとは少人数のところでマイペースに生きたいんでしょ。
あ、バレた。そうなんだよなー。最初の就職もわざとそうした。
きっとここ3ヶ月はしんどかったんでしょ。
うんうん、そう。
きっと今が一番忙しくて、来月からはちょっとは落ち着けるよ、きっと。
そうだといいなぁ。
あと、正論ばっかりだとカチンとくる心の狭い人もいるから、言い方を工夫した方がいいよ。
あー、そうなんだー。
嫌いな人には自分を見せちゃダメだよ。自分が傷つくから。
やっぱりそうなのね。
5年後ぐらいを見据えて頑張りなよ。
おー、じゃ、長期計画立てるかー。
趣味も充実させないとダメだよ。切り替えできなきゃね。
ほんとだね、色々試してみよう。
ちょっとなんだかスッキリした3連休w
そう、7年ぐらい通っていたボイトレスクールを変えました。
諸事情あって(ここに理由書いても仕方ないことなので書きません)、新しいスクールでトレーニング始めてます。
あとは、ブランク空いてるけどちょっとものづくりもしたいなぁと思案中。
異文化コミュニケーションは好きだと思っていたんですよ。15年ぐらい。
多様性の受け入れもできてると思ってた。
でも、最近異文化コミュニケーションが嫌いになりつつあって、多様性の受け入れも出来てない気がした。
もしかして・・・好きで出来てるっていうのは勘違いだったのかもしれないです。
きっと本当には出来てなかった。
ちょっと嫌いになってから見つめ直してみる。
いいやり方が見つかるといいけれど。
【スクラムナイト#10】ふりかえりをふりかえろう に参加してきたよ
今日はこちらの勉強会に参加してきました。
最近までスプリントが2wだったんですが1wにかわり、ファシリテーターをメンバーでかわりばんこで担当することになりました。
みんなすごく色々考えてやってくれてて以前に比べればどんどん良くはなっているのですが・・・
母国語が日本語でない人も頑張ってホワイトボードに日本語を書いてふりかえりを進めてくれているの、本当にすごいなって思うんですよ。
もちろん英語も混じってなかなかの異文化コミュニケーションっぷり。
それでもなんだかモヤモヤする。モヤモヤしているのは私だけなのか???
もっといいやり方があるんじゃないのか???
というわけで、すごくタイムリーなイベントに参加してきました。
もう、これが私の悩みを吹っ飛ばした瞬間。
きちんとするのはプロセスやプログラムだったり、プロダクト。
ふりかえりを綺麗にしてどうしたいの?ってこと。
あー、くそ真面目に綺麗にまとめようとしてたかも・・・
綺麗にまとめたい ⇨ はみ出た意見を消し去りたい ⇨ 言いたいことが言えない
みたいなことになりそう。
以前はメンバーとして何か課題を口にすると、全部ファシリテーターに「違う」とか「必要ない」とか言って亡きことにされそうになって随分抵抗したんですよ。
空気めっちゃ凍りましたけどね(爆)。
嫌がられたかもしれないけど、今は随分みんな心の声が漏れてる?w 気がする。
でもまだまだかも。
色々ぶっちゃけてもらって、収集つかなくてもいいのかなぁ。
最後に本当にヤバいからこれだけはTryにしよう、って決めてもいいのだと思う。
あとアイス食べたいっすw
振り返った結果もどう保管するのとか、かなり具体的な質問やお悩みが出ていてとても参考になりました。
付箋見ながらワイワイ話していて出た本。これは読んでみたい。
因果ループ図を書くのはとっても難しかった・・・。
ほぼグループのみなさんに書いていただいた感じ。
紹介していただいた本はこちら。
かなり難易度高そうだけど読むのチャレンジしてみようかな・・・。
本にパーフェクトな答えがないのはわかっているのだけど、引き出しを増やしたい。