vagrant上のmysqlを5.6にUpdateしたメモ
以下の本を買ってみたけど、MySQLのバージョンが古すぎたので、Updateしたけど、いろいろ詰まったのでメモ
データベース徹底攻略 (WEB+DB PRESS plus)
- 作者: 松信嘉範,羽生章洋,ミック,奥野幹也,松下雅和,桑野章弘,青木峰郎,ひろせまさあき,小林篤,島田慶樹,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/15
- メディア: 大型本
- この商品を含むブログを見る
あんま人が読んでもわからないと思う。自分用メモの意味合いが強い
前提
- vagrant上のやつをアップデート
- mysqlのバージョンは5.1だったのを5.6.15までアップ
- もともと入ってるデータがないに等しいので、何もバックアップしてない
- レプリケーションは設定してない
- slowlogの設定はした
作業メモ
$ sudo service mysql stop $ sudo apt-get -y remove mysql-server mysql-client mysql-common $ sudo apt-get -y autoremove $ sudo apt-get -y autoclean $ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-debian6.0-x86_64.deb # ↑これが数十分かかった $ sudo dpkg -i mysql-5.6.15-debian6.0-*.deb $ sudo sh -c 'echo "PATH=$PATH:/opt/mysql/server-5.6/bin" >> /etc/profile' $ source /etc/profile $ sudo vi /etc/mysql/my.cnf basedir = /opt/mysql/server-5.6 $ sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql $ sudo update-rc.d mysql defaults $ sudo ln -s /opt/mysql/server-5.6/bin/mysqld /usr/sbin/mysqld $ mysql_upgrade $ sudo service mysql start vagrant@~$ mysql -uroot -e 'status' | grep -i 'server version' Server version: 5.6.15 MySQL Community Server (GPL)
途中でエラーった
$ sudo vi /etc/mysql/my.cnf [mysqld] log-error=/var/log/mysql/error.log $ sudo chmod o+rw /var/log/mysql $ touch /var/log/mysql/error.log $ sudo chmod o+r /var/log/mysql.error.log $ tail -f /var/log/mysql.error.log
基本は、/var/lib/mysql以下がおかしくなってたので、ib_logfile0やら、ibdata1を消したらOKだった。
slowlogの確認
$ sudo vi /etc/mysql/my.cnf + slow_query_log=ON + log_output=TABLE - long_query_time = 2 + long_query_time = 0 ※0秒にすると全ログ出るので、注意 [root][localhost][(none)]> show variables like 'slow%'; +---------------------+---------------------+ | Variable_name | Value | +---------------------+---------------------+ | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /tmp/mysql-slow.log | +---------------------+---------------------+ 3 rows in set (0.00 sec) [root][localhost][(none)]> show variables like 'long%'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 0.000000 | +-----------------+----------+ 1 row in set (0.00 sec) [root][localhost][(none)]> show create table mysql.slow_log; ~~~ 長いので省略 ~~~ # 適当にcreate database&table [root][localhost][mysql]> create database test; [root][localhost][mysql]> use test [root][localhost][test]> CREATE TABLE example ( id INT, data INT, ) ENGINE=InnoDB; [root][localhost][test]> show tables; +----------------+ | Tables_in_test | +----------------+ | example | +----------------+ 1 row in set (0.01 sec) [root][localhost][test]> select * from example; Empty set (0.00 sec) [root][localhost][test]> select start_time,query_time,sql_text from mysql.slow_log order by start_time desc limit 1; +---------------------+------------+---------------------------------------------------------------+ | start_time | query_time | sql_text | +---------------------+------------+---------------------------------------------------------------+ | 2014-03-16 15:45:57 | 00:00:00 | select * from mysql.slow_log order by start_time desc limit 1 | +---------------------+------------+---------------------------------------------------------------+ 1 row in set (0.00 sec)
まとめ
まだまだチューニングとか全然してないので、あとでアップデートするとは思うが、とりあえず、今のmy.cnfを貼っとく
prompt="[\\u][\\h][\\d]> " auto-rehash
↑のプロンプトの設定いじりと、auto-rehashによる補完は便利なので入れたおきたいところ
参考サイト
ChatWorkにURLを貼り付ける際に整形するブックマークレット作った
そもそもなんのためにやってる?
コミュニケーションツールとして、ChatWork使ってるけど、面白いサイトとか共有したURLをChatWorkにURLを貼り付ける際には、相手にわかりやすくするためにURLだけを貼るのではなく、メッセージ記法でやってる
公式ドキュメントから引用
[info][title]...[/title]...[/info]
※公式サイトのURLからの画像を拝借しています。問題があれば削除します
上記タグを入れてあげると件名と内容が入る
自分の場合はtitleにタイトルとURLをいれて、infoにはコンテンツの中身を一部引用した感じで良く貼る
でコピペするのめんどくさくなったので、ブックマークレット化しただけ
上記リンクをコピペって、ブラウザのブックマークレットに入れるだけ。
引用したい部分をマウスでドラッグした状態で、ブックマークレットをクリックするとコピペできるWindowが出てくるので、それをコピペしてあとはChatWorkに貼るだけ
貼ると以下の形式になる
[info][title]タイトル( URL )[/title]マウスでドラッグしたところ[/info]
ただ、それだけ。
出力結果の画像貼ろうかと思ったけど、めんどくさくなったので、やめた。
nodejsで突然のエラー(events.js:72)の対処メモ
vagrant上でnodejsをいじってると、急にエラーが出た
vagrant@node$ node index.js server has started events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE at errnoException (net.js:904:11) at Server._listen2 (net.js:1042:14) at listen (net.js:1064:10) at Server.listen (net.js:1138:5) at Object.start (/home/vagrant/node/server.js:11:32) at Object.<anonymous> (/home/vagrant/node/index.js:11:8) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12)
ゴミのプロセスが残ってないか調査
vagrant@node$ ps ax | grep node 4290 pts/2 Sl+ 0:00 node index.js 10478 pts/5 S+ 0:00 grep node
起動しっぱなしのプロセスがあるっぽいので、KILLする
vagrant@node$ kill 4290
終了
VagrantとSunziを組み合わせて環境構築
Vagrantそこまでガッツリいじってなかったので、いじってみたメモ
前置き
Vagrantの説明はここではしない。
ググったらいくらでも記事出てくると思うので。。。
VagrantにはプロビジョニングツールのChefとかPuppetと組み合わせて当たり前でしょ?みたいな空気があってそれも勉強しないとだめな雰囲気があって覚えることが多いから躊躇してたけど、@jishihaさんからSunziってのものがあるよって教えてもらったのでそれと組み合わせていじってみました。
結果的にShellScriptでやってますが、ShellScriptでやるメリットとして、誰が見てもわかりやすいという敷居低さがあると思ってます。
ChefがわからなくてもLinuxのセットアップをやったことがあれば多分理解できるはず…。
単純にShellScriptでやるよりもSunziでやったほうがスマートに出来ました。
Sunziとは?
Sunzi is the easiest server provisioning utility designed for mere mortals. If Chef or Puppet is driving you nuts, try Sunzi!
と書かれてます。簡単なプロビジョニングツールです。 詳しくはGitHubのREADMEを見てもらえればいいんですが、RubyでのセットアップかShellScriptでできるようで、自分はShellScriptで設定しました。
Vagrantfileに以下の一文を追加して、Vagrantの設定をしましょう。(READMEに書いてる)
echo 'root:vagrant' | /usr/sbin/chpasswd
次に、sunziのインストールをします。
sudo gem install sunzi
あとはdeployするだけでVagrantに設定が反映されますが、 deployする前に設定しましょう。
Sunziの設定
$ tree . ├── compiled │ ├── attributes │ │ ├── environment │ │ └── ruby_version │ ├── install.sh │ ├── recipes │ │ ├── rvm.sh │ │ └── sunzi.sh │ └── roles │ ├── db.sh │ └── web.sh ├── files ├── install.sh ├── recipes │ └── sunzi.sh ├── roles │ ├── db.sh │ └── web.sh └── sunzi.yml
こんな感じ。
基本いじるのはinstall.shとroles下に新規で**.shってのを追加するだけ。
roles/db.shとかは中身見ればわかるが、カテゴリごとに分けられたシェル。
$ cat roles/web.sh # Install Web server apt-get -y install nginx # Nginx # apt-get -y install apache2 # Apache
vimの初期にインストールさせたい場合はrole/vim.shとか作ってもいいし、なんかのCMSの初期設定とかを入れてもいい。
※注意点
- Rootで実行する前提なので、~/とかって設定ファイルを反映させる場合は/root以下にできたりするので注意
- どっかで失敗するとそこで止まってその先が進まない(自分だけかも)
設定が完了するとあとはDeployして反映させるだけ。
deployすると、Vagrantの/rootにsunziフォルダができて、いろいろ実行してくれます。
sunzi deploy localhost:2222
port番号はvagrant ssh-configで調べましょう。
まとめ
Chef等のプロビジョニングじゃなくてShellScriptで設定できるし、Vagrantじゃなくてもその辺のVPSにも設定できるだろうし、良さ気。
ファイルもカテゴリごとに分けておけるし、管理もしやすい。
おまけ
設定するものはなんでもよかったけど、concrete5が公式サイトのリニューアルするらしいので、それを対応させたvagrantファイルとsunziをGithubにあげておきました。
とりあえず、これダウンロードさせてvagrant upとsunzi deployかませばサンプルサイトができあがる
(少なくともオレの手元では…)
- VagrantのこのBOXをベースにLAMPを作ってるのでちょっと古いかも
- MySQLはmysql -urootで入れるので、ユーザー:rootでPasswordは空っぽでいける。
- vimは自分の.vimrcが入っちゃってるので、環境によっては色とかおかしいくなるので、.vimrcは捨てたほうがいいかも
- .bashrcとか.tmux.confも気に入らなかったら捨ててね
- .gitconfigとかいじってないからコピってください
- Vagrantには scp -P 2222 Vagrantfile vagrant@localhost:~/とかあげれる
- わからなければ、誰かが作ったchefで動かすVagrantがGitHubにあったはずなのでそっち見てね
参考リンク
vimのスクロールや起動が遅いので調べた
pluginいろいろ入れてるから遅いのかわからないので、とりあえず調べてみたメモ
続きを読むMySQLにALTERぶん投げて投げてワタワタしたお話
仕事でALTERぶん投げたときにワタワタしたので忘れない用にメモ。
続きを読む