一回折れた人

日々の出来事をつらつらと

MySQLとpostgreSQLの違いは何か?

MySQLpostgreSQLの違い(アーキテクチャ)は何か?こんなことを聞かれました。 僕が知っている違いと言えば、postgreSQLは論理削除を行っているくらいでした。(その場では答えられませんでしたが・・・)

僕の中での2つのRDBの使い分けは基本的にMySQLを使って、postgreSQLはジオメトリ型を扱う時くらいしか使用していませんでした。

MySQLのお話し

少しだけMySQLを整理すると、現在MySQLはWスタンダート?2つの方式からテーブル作成を行えます。 MySQLには「MyISAM」、「InnoDB」を選択できることは知っていました。 おそらく何も設定せずにMySQLでテーブルを作成すると、「InnoDB」になるハズです。

これはDBを読み書きする時の利便性で「InnoDB」の方が管理しやすいためだと思われます。 ・InnoDB:レコード単位でロック ・MyISAM :テーブル単位でロック + トランザクション機能が無い? こう見ると、MyISAM を選ぶ理由が見つかりませんが、バックアップの容易さはMyISAMの方が上のみたいです。(もしかするともうInnoDBの方が上かもしれませんが・・・)

MySQLpostgreSQLの違いは?

MySQL単体だけでも結構な違いがありますが、MySQLpostgreSQLの違いは? 調べたところ、大きそうなところは、 ・MySQL:マルチスレッド ・postgreSQL:マルチプロセス 最近のLinuxの仕組みだとマルチスレッドの方が有利みたいです。 それと「postgreSQL」は追記型なので、何度も同じレコードを更新すると容量を食うようです、この辺は考えて使う必要がありそうですね。 ちなみに「postgreSQL」のロック方式ですが、レコード単位の他色々オプションがあるようです。

もっと深堀する必要はありますが、なかなか調べる機会が無いので勉強になりました。

参考:PostgreSQLとMySQLはどちらかに明確な優位性がありますか? 参考:データベースの比較 参考:運用視点なMyISAMとInnoDBと。 参考:MySQLの「InnoDB」と「MyISAM」についての易しめな違い 参考:PostgreSQLのロック

いつのまにかPHPのverが5系になっていた件

自分用メモ しばらくはphp7で動いていたハズなんですが、久しぶりに確認するとphp5.3.3になっていました・・・。

f:id:hpptms:20170921234601p:plain

php7の時もwordpressは得に問題なく動いていたので一回キレイな状態にしてphp7に入れ替えようかな・・・。(更新があった時も楽だし)

今はphpenvというツールでphpのverを切り替えられるようにしているハズなのですが、wordpressの描写には5.3.3が使われているようです。 なんかちょっと前にもこんな事で悩んだような?

f:id:hpptms:20170921234638p:plain

参考になる記事があったので、後で自分で読みます。 nginx と PHP-FPM の仕組みをちゃんと理解しながら PHP の実行環境を構築する VagrantでCentOS7にNGINX+PHP-FPM+PHP7の環境構築

追記:2016/9/7 直らない゚(゚´ω`゚)゚。 linuxPHPのバージョンを見ても7系が表示されるので、「service php-fpm start」をした時にphpenvの設定とは関係ない部分で「php-fpm.sock」が作成されていますね・・・。 トップページの変なすきまが「7.x」になったら何とかなったんだなって思ってください。

よくよく考えてみたら元々入っていたPHPが優先されている可能性が高いので、調べてみました。

f:id:hpptms:20170921234754p:plain

どう考えてもこっちの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に複製

こうするとどうなるか?

f:id:hpptms:20170921233930p:plain

見辛くて申し訳ないのですが、ローカルの記事のリンクも全てサーバー上のブログの方に飛ぶ状態になります。

推測ですが、管理画面→設定→一般の[WordPress アドレス (URL)]か[サイトアドレス (URL)]を参照してリンクを生成していると思われます。

f:id:hpptms:20170921234009p:plain

管理画面に入れれば上記の部分を設定し直したら良さそうです。 ですが、管理画面の飛び先自体もサーバーの方に飛んでしまうので、それはできません・・・。 そんな訳で下記のコマンドを実行しました。

//※ローカル環境でなおかつテーマを編集が目的なので、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 grephoge"」このコマンド自体はディレクトリー階下のファイルの中身を確認するコマンドで間違いないと思います。 業務でも何回か利用しています。※参照元【Linux】複数あるファイルの中から特定の文字列を検索するコマンド 今回の場合は,wordpressのコンフィグファイルなどにURLの情報を記述する場所が無かったのかなと思っています。

参照元参照元を推測して書き換える

かなりリスキーな行為ですが、ローカル環境なので参照元と思われるDBの情報を直接書き換えることにしました。 コマンド、又はphpMyAdminでもいいのですが、久しぶりにheidiSQLを使います。

f:id:hpptms:20170921234057p:plain

phpMyAdminでもいいですが、heidiSQLなら別サーバーも設定さえ残しておけばクリック1つで接続先を変えられるので便利です。 PostgreSQLにも対応しているようですが、個人的な感想としてはpostgreSQL目的で使用するにはイマイチでした。

heidiSQLの設定

参照元VirtualBox Vagrant上のMySQLにHeidiSQLで接続する方法 参照元の記事のままの設定で繋がりました。

f:id:hpptms:20170921234133p:plain

f:id:hpptms:20170921234204p:plain

中のワードプレスのDBを見てURLの参照元っぽいところを探します。

tableの[xxx_options]にかなりそれっぽいのがありました。

f:id:hpptms:20170921234234p:plain

この「siteurl」がリンク生成の時に使われていそう・・・。 最悪ダメだったら戻せせばいいし、変更します。 一応ホスト側のhosts情報も書き換えてあるので、「http://wp/」でも繋がりそうですが、 ここは一応の安全策ということでvagrantのプライベートIPアドレスにします。(ここまで無茶やっといて何ですが)

結果どうなったかというと・・?

f:id:hpptms:20170921234340p:plain

リンク先がローカルのwordpressに書き換わりました。

ひとまずローカルのリンク問題は解決しましたが、管理画面がCSS適応されてなかったり色々とまだ設定を直さないといけない場所があります。 サーバーからローカルへのwordpressのコピーも一苦労ですね。

追記: 管理画面でCSSが表示されない問題については、DBのテーブル「wp_options」のカラム「siteurl」に元々ローカルIPをそのまま入れていました。 ここが問題だったようで公開されている方のブログのDBと見比べてたところ、「http://hoge」と入っていたので、ローカル側もhttpををつけたところ、CSSも反映されるようになりました。

wordpressをローカル環境に作ろう

最近vagrantというベンリーツールを覚えたので、ローカルであっさり作れるかと思ったら失敗しました。

f:id:hpptms:20170921233641p:plain

サーバーの方は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

その他に直にファイルをイジったりしてます・・・。

追記: 後一歩な気がしていたので、もう少し粘ってみたら表示出来ました。

f:id:hpptms:20170921233731p:plain

centOSなのでaptが標準で使えないので苦労しましたが、こちらのサイト(リンク切れになっていました。元のサイトはあるのになんで・・・)にバッチリ入れ方が書いてありました。 とりあえず寝ますwww