MySQLとpostgreSQLの違いは何か?
MySQLとpostgreSQLの違い(アーキテクチャ)は何か?こんなことを聞かれました。 僕が知っている違いと言えば、postgreSQLは論理削除を行っているくらいでした。(その場では答えられませんでしたが・・・)
僕の中での2つのRDBの使い分けは基本的にMySQLを使って、postgreSQLはジオメトリ型を扱う時くらいしか使用していませんでした。
MySQLのお話し
少しだけMySQLを整理すると、現在MySQLはWスタンダート?2つの方式からテーブル作成を行えます。 MySQLには「MyISAM」、「InnoDB」を選択できることは知っていました。 おそらく何も設定せずにMySQLでテーブルを作成すると、「InnoDB」になるハズです。
これはDBを読み書きする時の利便性で「InnoDB」の方が管理しやすいためだと思われます。 ・InnoDB:レコード単位でロック ・MyISAM :テーブル単位でロック + トランザクション機能が無い? こう見ると、MyISAM を選ぶ理由が見つかりませんが、バックアップの容易さはMyISAMの方が上のみたいです。(もしかするともうInnoDBの方が上かもしれませんが・・・)
MySQLとpostgreSQLの違いは?
MySQL単体だけでも結構な違いがありますが、MySQLとpostgreSQLの違いは? 調べたところ、大きそうなところは、 ・MySQL:マルチスレッド ・postgreSQL:マルチプロセス 最近のLinuxの仕組みだとマルチスレッドの方が有利みたいです。 それと「postgreSQL」は追記型なので、何度も同じレコードを更新すると容量を食うようです、この辺は考えて使う必要がありそうですね。 ちなみに「postgreSQL」のロック方式ですが、レコード単位の他色々オプションがあるようです。
もっと深堀する必要はありますが、なかなか調べる機会が無いので勉強になりました。
参考:PostgreSQLとMySQLはどちらかに明確な優位性がありますか? 参考:データベースの比較 参考:運用視点なMyISAMとInnoDBと。 参考:MySQLの「InnoDB」と「MyISAM」についての易しめな違い 参考:PostgreSQLのロック
いつのまにかPHPのverが5系になっていた件
自分用メモ しばらくはphp7で動いていたハズなんですが、久しぶりに確認するとphp5.3.3になっていました・・・。
php7の時もwordpressは得に問題なく動いていたので一回キレイな状態にしてphp7に入れ替えようかな・・・。(更新があった時も楽だし)
今はphpenvというツールでphpのverを切り替えられるようにしているハズなのですが、wordpressの描写には5.3.3が使われているようです。 なんかちょっと前にもこんな事で悩んだような?
参考になる記事があったので、後で自分で読みます。 nginx と PHP-FPM の仕組みをちゃんと理解しながら PHP の実行環境を構築する VagrantでCentOS7にNGINX+PHP-FPM+PHP7の環境構築
追記:2016/9/7 直らない゚(゚´ω`゚)゚。 linuxでPHPのバージョンを見ても7系が表示されるので、「service php-fpm start」をした時にphpenvの設定とは関係ない部分で「php-fpm.sock」が作成されていますね・・・。 トップページの変なすきまが「7.x」になったら何とかなったんだなって思ってください。
よくよく考えてみたら元々入っていたPHPが優先されている可能性が高いので、調べてみました。
どう考えてもこっちのPHPが優先されてますね・・・。 前どうやって切り替えたんだ・・・。
postgreSQLのコマンド(自分用)
自分用メモ postgreSQLの基本操作。
//データベースの一覧 \l //テーブル一覧 \d //テーブルの項目(フィールド)確認 \d テーブル名 //SQL(スクリプト)ファイルの実行 \i sqlファイル名 //psqll切断 \q //DB切り替え \c データベース名 ユーザ名 //不要領域の削除(mysqlにもあるらしい) VACUUM
象さん。
追記:2016/9/7 postgreSLQLはカラムの追加に任意の要素の下とかに差し込みできないと初めて知りました。
ローカル環境にwordpressを構築(DB書き換え)
前回のおさらい
前回vagrantでサーバー上のwordpressをローカルにコピーしました。 トップページの見た目上は、再現できていました。
前回の作業として、下記2点を行いました。 ・サーバー上のミドルウェアなどの環境を再現 ・mysqlの中のwordpressで使っているDBをdumpしてローカルのmysqlに複製
こうするとどうなるか?
見辛くて申し訳ないのですが、ローカルの記事のリンクも全てサーバー上のブログの方に飛ぶ状態になります。
推測ですが、管理画面→設定→一般の[WordPress アドレス (URL)]か[サイトアドレス (URL)]を参照してリンクを生成していると思われます。
管理画面に入れれば上記の部分を設定し直したら良さそうです。 ですが、管理画面の飛び先自体もサーバーの方に飛んでしまうので、それはできません・・・。 そんな訳で下記のコマンドを実行しました。
//※ローカル環境でなおかつテーマを編集が目的なので、xginxのrootを下記にしています。 cd /vagrant/data/wp/wordpress/ //一応中身確認 ls //hpptms.dip.jpが記述されたファイルを探す find ./ -type f -print | xargs grep 'hpptms.dip.jp'
おびただしい量の文字列が流れてきました(´・ω・)(´・ω・`)(・ω・`)
「find ./ -type f -print | xargs grep “hoge"」このコマンド自体はディレクトリー階下のファイルの中身を確認するコマンドで間違いないと思います。 業務でも何回か利用しています。※参照元:【Linux】複数あるファイルの中から特定の文字列を検索するコマンド 今回の場合は,wordpressのコンフィグファイルなどにURLの情報を記述する場所が無かったのかなと思っています。
参照元の参照元を推測して書き換える
かなりリスキーな行為ですが、ローカル環境なので参照元と思われるDBの情報を直接書き換えることにしました。 コマンド、又はphpMyAdminでもいいのですが、久しぶりにheidiSQLを使います。
phpMyAdminでもいいですが、heidiSQLなら別サーバーも設定さえ残しておけばクリック1つで接続先を変えられるので便利です。 PostgreSQLにも対応しているようですが、個人的な感想としてはpostgreSQL目的で使用するにはイマイチでした。
heidiSQLの設定
参照元:VirtualBox Vagrant上のMySQLにHeidiSQLで接続する方法 参照元の記事のままの設定で繋がりました。
中のワードプレスのDBを見てURLの参照元っぽいところを探します。
tableの[xxx_options]にかなりそれっぽいのがありました。
この「siteurl」がリンク生成の時に使われていそう・・・。 最悪ダメだったら戻せせばいいし、変更します。 一応ホスト側のhosts情報も書き換えてあるので、「http://wp/」でも繋がりそうですが、 ここは一応の安全策ということでvagrantのプライベートIPアドレスにします。(ここまで無茶やっといて何ですが)
結果どうなったかというと・・?
リンク先がローカルのwordpressに書き換わりました。
ひとまずローカルのリンク問題は解決しましたが、管理画面がCSS適応されてなかったり色々とまだ設定を直さないといけない場所があります。 サーバーからローカルへのwordpressのコピーも一苦労ですね。
追記: 管理画面でCSSが表示されない問題については、DBのテーブル「wp_options」のカラム「siteurl」に元々ローカルIPをそのまま入れていました。 ここが問題だったようで公開されている方のブログのDBと見比べてたところ、「http://hoge」と入っていたので、ローカル側もhttpををつけたところ、CSSも反映されるようになりました。
wordpressをローカル環境に作ろう
最近vagrantというベンリーツールを覚えたので、ローカルであっさり作れるかと思ったら失敗しました。
サーバーの方はnginxとphp-fpm7をphpenvという若干特殊な構成(そうでもない?)で動かしているのですが、設定など色んなサイトを参照しながらやっとのこと動作に至っている状態です。 ローカルでも同じ環境でいけるかなと思ったのですが、php-fpmでつまづきました。 サーバーの方では動作しているので、何とかなりそうなのでもう少し粘ってみますが、ダメだったらサッパリ諦めてapacheにしようと思います。
ローカルで同じ環境を作る目的はテーマの編集をやりやすくしたいだけなので、ミドルウェアはそこまで拘る必要もなさそうですし・・・。
yumを使って頑張ってインストールしてますが、puppetとかも覚えた方が早そうですね。
yumで頑張った形跡
1 yum install epel-release -y 2 yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm -y 3 yum update -y 4 yum -y install yum-plugin-priorities 5 vi /etc/sysconfig/i18n 6 yum -y install vim 7 sudo yum install epel-release 8 vi /etc/sysconfig/i18n 9 source /etc/sysconfig/i18n 10 echo $LANG 11 vi /etc/selinux/config 12 sudo yum install nginx -y 13 chkonfig nginx on 14 chkconfig nginx on 15 sudo /etc/init.d/nginx start 16 rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm 17 vim /etc/yum.repos.d/CentOS-Base.repo 18 history 19 cd /etc/yum.repos.d/ 20 yum serch php* 21 ls 22 vim webtatic.repo 23 yum search php7* 24 yum search php 25 yum install php70w php70w-opcache 26 yum update -y 27 reboot 28 sudo /etc/init.d/nginx restart 29 yum install git 30 httpd 31 service httpd stop 32 chkconfig httpd off 33 chkconfig 34 cd /etc/ 35 cd nginx/ 36 ls 37 cp nginx.conf nginx.conf.org 38 cd conf.d/ 39 ls 40 sudo /etc/init.d/nginx restart 41 mysql -u root データベース名 < /vagrant/data/etc/dump.sql 42 mysql -u root 43 history 44 vi /etc/php.ini 45 vim /etc/php.ini 46 yum install mysql 47 chkconfig mysql on 48 service mysqld start 49 sudo yum install mysql-server 50 service mysqld start 51 mysql -u root wordpress < /vagrant/data/etc/dump.sql 52 mysql -u root 53 mysql -u root wordpress < /vagrant/data/etc/dump.sql 54 mysql -u root 55 sudo /etc/init.d/nginx restart 56 php-fpm 57 sudo service php-fpm restart 58 sudo service php*-fpm restart 59 history 60 yum search php 61 yum search php | grep fpm 62 yum install php-fpm 63 php -v 64 yum install php70w-fpm.x86_64 65 sudo service php-fpm restart 66 service nginx restart 67 sudo service php-fpm restart 68 service nginx restart 69 yum -y install php-mysql 70 history 71 yum search php | grep php-mysql 72 yum install php70-php-mysqlnd.x86_64 73 sudo service php-fpm restart 74 service nginx restart 75 php -m | grep mysql 76 php -m 77 yum update 78 history
その他に直にファイルをイジったりしてます・・・。
追記: 後一歩な気がしていたので、もう少し粘ってみたら表示出来ました。
centOSなのでaptが標準で使えないので苦労しましたが、こちらのサイト(リンク切れになっていました。元のサイトはあるのになんで・・・)にバッチリ入れ方が書いてありました。
とりあえず寝ますwww