2017年6月12日月曜日
目次)MySQL化の理由は最後の背景で説明する。- MySQLのinstall
- remoteアクセスの設定
- 設定ファイルの変更
- RasperryPiからのアクセス実験
- rootではアクセスできない
- Databaseの移動
- RAID (mdadm)のpartitionへの移動 (堅牢化)
- Apparmor (CentOSでいう、SELinux) の無効化
- おまけ)MySQL workbench on Mac OS-X
- 背景
- microSDカードの書き込み寿命
- 対策
- USB HDDの利用
- MySQLなどremote databaseの利用
MySQLのinstall)
Ubuntu 16.04 LTSなので、
2016-11-17 Ubuntu 16.04 LTSにMySQLをインストールする
の通りに aptでinstallして、設定をすれば、まずはlocal machineで使えるようになった。上記にある、サンプルのtest_dbも、この通り動いた。
Remote Accessの設定)
- LinuxサーバのUFW を設定して、標準の3306ポートを開いた。
参考) - UFWの設定: http://qiita.com/yoh-nak/items/46935af3c5c4036e93b3
- コンソールからGUFWのほうが簡単かも:
http://sicklylife.at-ninja.jp/memo/ubuntu1404/gufw.html - ついでに /etc/sysctl.conf を書き換えてrebootしてIPv6も止めた。
参考) http://l-w-i.net/t/ubuntu/ipv6_001.txt - remote accessの設定)
- だが、telnet ipaddress 3306をやってもつながらない。
/etc/mysql/mysql.conf.d/mysqld.cnf の設定変更が必要bind-address = 127.0.0.1
でローカルマシンからしか接続できなくなっているので、これを、bind-address = 0.0.0.0
に書き換えてどこからでも接続できるようにする。
参考)http://bit.ly/2uVx9Rl How to allow mysql remote connections via particular interface - RasperryPIからのアクセス実験
rasp01 ~ $ mysql -h 192.168.0.88 -u user -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 26Server version: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.- :
mysql> connect test_db;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -AConnection id: 27Current database: test_dbmysql> show tables;+-------------------+| Tables_in_test_db |+-------------------+| emp || lights |+-------------------+2 rows in set (0.00 sec)mysql> select * from emp;+------+------+| id | name |+------+------+| 1 | aaa || 2 | bbb |+------+------+2 rows in set (0.00 sec)mysql> - ところがRasperryPIからrootでMySQLに入れない。mysladmin でやってみるとアクセス権がないとのこと。
rasp01 ~ $ mysqladmin -h Linux02 -u root -p versionEnter password:mysqladmin: connect to server at 'Linux02' failederror: 'Access denied for user 'root'@'192.168.0.122' (using password: YES)' - サンプルテーブルでの実験からも類推できるし、以下のようなやり方でできると書かれた webサイトもあったが。。。やり方がまずかったのか上手く行かない。mysql> grant all on *.* to 'root' identified by 'rootのパスワード';
- どうもlocal machine上で 管理table mysqlの設定をいじればよいらしいがよくわからない。
- Databaseの移動)
-
Quitta http://bit.ly/2uXMLnp をみて、ファイルをmdadmのpartition (/homeからのsymblic linkへ移動)
- が、/etc/init.d/mysql restart するとコケる。
# journalctl -xe でみると、apparmor (CentOSでいう、SELinux)が拒絶している) - https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765 を参考に、Apparmorの設定 /etc/apparmor.
d/usr.sbin. mysqld あたりを書き換えたが、なんどやっても上手く行かない。 - CentOSでは、SELinuxは扱いにくいので、無効化(おすすめは、http://red.ht/2uZTaP1 にあるPermissive mode) なので、Ubuntuでも無効化することにした。
-
Grubからdisableしてrebootして、問題になくデータベースは移動した。
しかし、Databaseを移動すると何がどうなってダメなのか不明。 - おまけ)rootになって # journalctl -xe をすると、Mac OS-XにインストールしたCanon printer drive (tools) のbonjure が、大量にbroadcastメッセージを出して、UFW (iptables) つまりlinuxサーバのfirewallが拒絶メッセージを出している。なんだか怪しい。。
- おまけ)MySQL Workbench on MacbookPro OS-X El Capitan.
Mac OS-Xからの確認用に、
https://www.mysql.com/jp/products/workbench/ からダウンロードした。グラフィカルにMySQLサーバに触れる。MySQL Workbenchでサンプルdatabase/tableの操作 - 背景)microSD cardの書き込み寿命
Local MachineからMySQLにroot権限で入って見える特権データベース (以前、SQLite3で、壊してひどいことになった。) |
localhost以外で追加してみようとするが。。 SQLは初心者なので、、、よくわかりません。。 |
Makerfairを主催する米国の雑誌Makerとは比べ物にならないほど内容が詳細で充実した..日本の誇る雑誌 トラ技 2017/7月号 (CQ出版社の画面 http://bit.ly/2tO4iB3 を引用)にラズパイ特集があった。実は、CQ出版社にはバックナンバーがほとんどあって、買い逃した本も上記リンクから行けるCQ出版のweb shopの通販で送料無料で数日で届く。カード支払いも可能。
CQ出版社webのトラ技2017/7月号情報 |
CQ出版社webにあるトラ技2017/7月号の目次情報 |
その第4章が、
「数Kバイトの小データを10年間記録し続ける高信頼メモリの技術
寿命対決! コンビニSDカード vs 産業用SDカード」であり、
ラズパイで使った時のmicroSDカードの寿命を徹底評価していた。 http://bit.ly/2tO4iB3 のリンクから各章の1ページ目がpdfで閲覧できる。
「数Kバイトの小データを10年間記録し続ける高信頼メモリの技術
寿命対決! コンビニSDカード vs 産業用SDカード」であり、
ラズパイで使った時のmicroSDカードの寿命を徹底評価していた。 http://bit.ly/2tO4iB3 のリンクから各章の1ページ目がpdfで閲覧できる。
SDカード(Flash memory)の詳細な仕組みから始まり、8GBのmicro SDカードを装着したラズパイで、4KBのファイルを1秒間に100個記録し続ける(古いのは消す)データロガーとして使ったときのmicro SDカードの寿命を算定していた。TPSM-GS1Sという産業用のSLC(Single level Cell)カードだと10年持つが、通常売られているMLCタイプの安いmicro SDカードだと18日でダメになるとのこと。(ここを特集するのは、さすが、トラ技。)
そりゃそうだ、wear levelingも適当な安価SDカードだし。。
さすがに、1秒間に100個ずつファイルを記録することもなく、1分間に1個。同じファイルへの書き込みはbufferされていると考えると、もうちょっと持つのかもしれないが、小さいファイルを更新しまくるlinux/unixのストレージが市販microSDカードというのは、いかにも心配である。
さすがに、1秒間に100個ずつファイルを記録することもなく、1分間に1個。同じファイルへの書き込みはbufferされていると考えると、もうちょっと持つのかもしれないが、小さいファイルを更新しまくるlinux/unixのストレージが市販microSDカードというのは、いかにも心配である。
記事にある書き換え寿命の仕様(保障)値を引用すると、
SLCで10万回、p-SLCで2万回、MLCで3000回。
実効最小ではSLCで21万回、p-SLCで11.8万回、MLCで1.2万回。
SLCで10万回、p-SLCで2万回、MLCで3000回。
実効最小ではSLCで21万回、p-SLCで11.8万回、MLCで1.2万回。
amazon.com http://amzn.to/2tNVmvM では、p-SLCの16GBのmicroSDカードが10枚 $815で、SLC 4GBのmicroSDカードが10枚 $805で売られている。---- 高い!!!!
拙blog: http://bit.ly/2sccXwe に掲載した、RaspberryPIを使ったコンセント制御。cron でアプリが1分ごとに起動して、タイマー機能を実現する作りになっている(簡単なので..) 。
機能拡張するのに状態管理をファイルでやろうと思ったが、危ない。。常時起動しているdaemonにするか、状態管理daemonと通信させるか、ちょっとやり方を考えたい。と、考えた結果、MySQLサーバを立ち上げて、今後増えるであろう、いろいろな家庭内IoT機器の情報をRelational Databaseで共有して、検索・変更を容易にすることにした。
機能拡張するのに状態管理をファイルでやろうと思ったが、危ない。。常時起動しているdaemonにするか、状態管理daemonと通信させるか、ちょっとやり方を考えたい。と、考えた結果、MySQLサーバを立ち上げて、今後増えるであろう、いろいろな家庭内IoT機器の情報をRelational Databaseで共有して、検索・変更を容易にすることにした。
コンセント制御では、WebベースなのでPHPを使っており、PHPにはMySQLをアクセスするライブラリもある。
Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5 (Learning Php, Mysql, Javascript, Css & Html5) 4th Edition (amazon.com http://amzn.to/2uPRBmF でベストセラーらしい。以下表紙写真)にも、PHPとMySQLの連携について書かれている。
参考になりそうなR'REILLY本 |