20200226のMySQLに関する記事は10件です。

インフラ知識低のレイヤから勉強(01)

初めまして、潔(日本語の名)と申します。インフラ部は知識がありますが、バラバラです。具体的から勉強したことがありません。仕事の職場では大変ことがあります。考えているのはITエンジニアなら、インフラのことが知った方はいいともいますので、インフラの知識を調べて、メモを記入します。大先輩のオススメは低のレイヤの勉強から始まることです。下記の順番に記入する予定です。

一段階

1. Apacheをソースコードからコンパイルおよびインストール
2. PHPをSource Codeからコンパイルおよびインストール
3. PHPのMySQL Extenstionをソースコードからコンパイルおよびインストール
4. MySQLをソースコードからコンパイルおよびインストール
5. PHP FrameworkをInstall

二段階

1. Apache、MySQL、PHPのインストール
2. PHP FrameworkをInstall

三段階

1. Dockerのインストール
2. Apache + PHP Containerの構築
3. MySQL Containerの構築
4. PHP FrameworkをInstall

四段階

1. KubernetesでPHP/MySQL Webをデプロイしてみます

じゃあ、上から最後まで進めていきましょう。

最初は環境を準備しなければならない。Vagrantをきめます。

■ Vagrant環境を準備

vagrant up
vagrant ssh

さて、Vagrant環境で操作していきます

■ Apache HTTP Server 2.4.34のソース展開

方法#1:サイトからプルしていきます

cd /usr/local/src
sudo wget http://www-us.apache.org/dist/httpd/httpd-2.4.34.tar.gz
sudo gzip -d httpd-2.4.34.tar.gz
sudo tar xvf httpd-2.4.34.tar

方法#2:Apacheのダウンロードのページにアクセスして、リンクをクリックします

リンク:https://httpd.apache.org/download.cgi

vagrant ssh
cd /var/www/devOps
sudo cp httpd-2.4.34.tar.gz /usr/local/src
cd /usr/local/src
tar zxvf httpd-2.4.34.tar.gz

■ APR と APR-Utilの準備
Apache Portable Runtimeのページにアクセスして、
・apr-1.5.2.tar.gz
・apr-util-1.5.4.tar.gz
をダウンロードします

cd /usr/local/src
sudo wget https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz
sudo gzip -d apr-1.5.2.tar.gz
sudo tar xvf apr-1.5.2.tar
# 展開したディレクトリをApacheのsrclibディレクトリにコピー。
sudo cp -Rp apr-1.5.2 httpd-2.4.34/srclib/apr


sudo wget https://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
sudo gzip -d apr-util-1.5.4.tar.gz
sudo tar xvf apr-util-1.5.4.tar
# 展開したディレクトリをApacheのsrclibディレクトリにコピー。
sudo cp -Rp apr-util-1.5.4 httpd-2.4.34/srclib/apr-util

■ configure実行

cd httpd-2.4.34
sudo ./configure

■ make・make installを実行します

sudo make
sudo make install

注意:インストールするときエラー

1。APRのインストールしていない

checking for APR... no
configure: error: APR not found.  Please read the documentation.

解決方法

APRのインストールしていきます
cd /usr/local/src
sudo wget https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz
sudo gzip -d apr-1.5.2.tar.gz
sudo tar xvf apr-1.5.2.tar
# 展開したディレクトリをApacheのsrclibディレクトリにコピー。
sudo cp -Rp apr-1.5.2 httpd-2.4.34/srclib/apr

2。Perl-Compatible Regular Expressions Library(PCRE)をインストールしていない

checking for pcre-config... false
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

解決方法#1
・pcre.orgサイトからpcreをダウンロードします
・プレフィックスをつけてコンパイルして、インストルします

vagrant ssh
cd /usr/local/src/
cd pcre.8.39
sudo ./configure --prefix=/usr/local/pcre
sudo make
sudo make install

・Apacheがインストールされているところで、pcreをつ使用してApacheをコンパイルします

cd http httpd-2.4.34
sudo ./configure --with-pcre=/usr/local/pcre
sudo make make install

解決方法#2
pcre-develをインストルするだけでした

# Fedora Linux
yum install -y pcre-devel

解決方法#3
RHEL3では、pcre-configを指します。

./configure --prefix=/usr/local/apache2 --with-pcre=/usr/local/pcre

これでApacheのインストールが完了しました。

次にいきましょう!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

「インフラ知識」低のレイヤの勉強(01)

初めまして、潔(日本語の名)と申します。インフラ部は知識がありますが、バラバラです。具体的から勉強したことがありません。仕事の職場では大変ことがあります。考えているのはITエンジニアなら、インフラのことが知った方はいいともいますので、インフラの知識を調べて、メモを記入します。大先輩のオススメは低のレイヤの勉強から始まることです。下記の順番に記入する予定です。

一段階

1. Apacheをソースコードからコンパイルおよびインストール
2. PHPをSource Codeからコンパイルおよびインストール
3. PHPのMySQL Extenstionをソースコードからコンパイルおよびインストール
4. MySQLをソースコードからコンパイルおよびインストール
5. PHP FrameworkをInstall

二段階

1. Apache、MySQL、PHPのインストール
2. PHP FrameworkをInstall

三段階

1. Dockerのインストール
2. Apache + PHP Containerの構築
3. MySQL Containerの構築
4. PHP FrameworkをInstall

四段階

1. KubernetesでPHP/MySQL Webをデプロイしてみます

じゃあ、上から最後まで進めていきましょう。

最初は環境を準備しなければならない。Vagrantをきめます。

■ Vagrant環境を準備

vagrant up
vagrant ssh

さて、Vagrant環境で操作していきます

■ Apache HTTP Server 2.4.34のソース展開

方法#1:サイトからプルしていきます

cd /usr/local/src
sudo wget http://www-us.apache.org/dist/httpd/httpd-2.4.34.tar.gz
sudo gzip -d httpd-2.4.34.tar.gz
sudo tar xvf httpd-2.4.34.tar

方法#2:Apacheのダウンロードのページにアクセスして、リンクをクリックします

リンク:https://httpd.apache.org/download.cgi

vagrant ssh
cd /var/www/devOps
sudo cp httpd-2.4.34.tar.gz /usr/local/src
cd /usr/local/src
tar zxvf httpd-2.4.34.tar.gz

■ APR と APR-Utilの準備
Apache Portable Runtimeのページにアクセスして、
・apr-1.5.2.tar.gz
・apr-util-1.5.4.tar.gz
をダウンロードします

cd /usr/local/src
sudo wget https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz
sudo gzip -d apr-1.5.2.tar.gz
sudo tar xvf apr-1.5.2.tar
# 展開したディレクトリをApacheのsrclibディレクトリにコピー。
sudo cp -Rp apr-1.5.2 httpd-2.4.34/srclib/apr


sudo wget https://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
sudo gzip -d apr-util-1.5.4.tar.gz
sudo tar xvf apr-util-1.5.4.tar
# 展開したディレクトリをApacheのsrclibディレクトリにコピー。
sudo cp -Rp apr-util-1.5.4 httpd-2.4.34/srclib/apr-util

■ configure実行

cd httpd-2.4.34
sudo ./configure

■ make・make installを実行します

sudo make
sudo make install

注意:インストールするときエラー

1。APRのインストールしていない

checking for APR... no
configure: error: APR not found.  Please read the documentation.

解決方法

APRのインストールしていきます
cd /usr/local/src
sudo wget https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz
sudo gzip -d apr-1.5.2.tar.gz
sudo tar xvf apr-1.5.2.tar
# 展開したディレクトリをApacheのsrclibディレクトリにコピー。
sudo cp -Rp apr-1.5.2 httpd-2.4.34/srclib/apr

2。Perl-Compatible Regular Expressions Library(PCRE)をインストールしていない

checking for pcre-config... false
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

解決方法#1
・pcre.orgサイトからpcreをダウンロードします
・プレフィックスをつけてコンパイルして、インストルします

vagrant ssh
cd /usr/local/src/
cd pcre.8.39
sudo ./configure --prefix=/usr/local/pcre
sudo make
sudo make install

・Apacheがインストールされているところで、pcreをつ使用してApacheをコンパイルします

cd http httpd-2.4.34
sudo ./configure --with-pcre=/usr/local/pcre
sudo make make install

解決方法#2
pcre-develをインストルするだけでした

# Fedora Linux
yum install -y pcre-devel

解決方法#3
RHEL3では、pcre-configを指します。

./configure --prefix=/usr/local/apache2 --with-pcre=/usr/local/pcre

これでApacheのインストールが完了しました。

次にいきましょう!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

bundle install時にMySQLのエラーが発生

bundle install時にMySQLのエラーが発生

RUNTEQのRuby on Railsの技術試験を受験し、環境構築をしていた際に以下のエラーが発生しました。

入力したコマンド

ターミナル
bundle install --path=vendor/bundle

発生したエラー

ターミナル
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2
/Users/atsukikomuro/.rbenv/versions/2.6.4/bin/ruby -I /Users/atsukikomuro/.rbenv/versions/2.6.4/lib/ruby/2.6.0 -r ./siteconf20200226-71382-91nqge.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for rb_wait_for_single_fd()... yes
-----
Using mysql_config at /usr/local/opt/mysql@5.6/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for SSL_MODE_DISABLED in mysql.h... no
checking for MYSQL_OPT_SSL_ENFORCE in mysql.h... no
checking for MYSQL.net.vio in mysql.h... yes
checking for MYSQL.net.pvio in mysql.h... no
checking for MYSQL_ENABLE_CLEARTEXT_PLUGIN in mysql.h... yes
checking for SERVER_QUERY_NO_GOOD_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_NO_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_WAS_SLOW in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_ON in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_OFF in mysql.h... yes
checking for my_bool in mysql.h... yes
-----
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/opt/mysql@5.6/lib
-----
creating Makefile

current directory: /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2
make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
compiling statement.c
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2 for inspection.
Results logged to /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/extensions/x86_64-darwin-18/2.6.0/mysql2-0.5.2/gem_make.out

An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2

解決策

以下のコマンドを入力後にbundle installを行うことで正常に終了しました。

ターミナル
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"

原因

後日記入します。

参考文献

RailsプロジェクトでMySQLがbundle installできなかった
bundle installでmysql2がエラーになる件

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Apache環境でのMysql周りのあれこれ(備忘録)

Mysqlにログイン

Command
> mysql -u ユーザー名(たとえばroot) -p

Mysqlにアクセスして、データベースの一覧をみる

Command
mysql> Show databases;   #このコマンドでデータベースを確認

Mysqlの特定のデータベースからデータを抽出し、ローカルに移す

1. Mysqlのデータファイル(Dumpファイル)を作成する

command
$ mysqldump -u root -p データベース名 > 抽出を反映したファイル名(任意) 
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHPでMySQLからデータを取得したときにinteger型が文字列になる問題

問題の始まり

とあるSPAな案件をやっていて、慣れているPHPでAPIサーバ作ってやろう!
と初めてのAPIを構築していたところ、データベースからのレスポンスが全部文字列で帰ってくる。

調べてみると、PDOでの解決方法はあれどmysqliはなかなか見つからずどうしたらいいんだ・・・
となったので備忘録がてらメモしておきます。

PDOの場合

PDO::ATTR_EMULATE_PREPARESFALSEにしましょう。
これはプリペアドステートメントをエミュレートモードで使用するというオプションで、デフォルトではTRUEになっています。

この場合、MySQLではなくドライバ側でエスケープ処理などが行われるのですが、
副作用でレスポンスがすべてStringで戻ってくるようになります。(型情報が失われる)

ただし、エミュレーションのほうが早い1ので、オフにする場合は計画的に。

mysqliの場合

MYSQLI_OPT_INT_AND_FLOAT_NATIVETRUEにしましょう。

というよりマニュアルにめっちゃ書いてあります。
コードを書くときはちゃんと公式マニュアルを読むようにしましょう・・・(します)

注意点

こちらもPDOもそうですが、サーバ側がmysqlndに対応していないといけません。
おそらくその辺りの兼ね合いでデフォルトでは無効になっているんでしょうね。


  1. ここここを参照 

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS RDS MySQLについて知らなければならない最も大切なこと

AWS RDS MySQLについて知らなければならない最も大切なことを簡単に、簡潔にご紹介しようと思います、

メジャーバージョンをあげるな。

特にフロントエンドまわりの方は、バージョンを最新にあげるのが最低限のマナーだと思っている方が多いかと思います。私もそうです。しかしながら、AWS RDS MySQLはバージョンを最新にすると使えなくなるサービスが多々あります。ざっとあげると

  • Amazon Aurora MySQL(MySQL5.6/5.7のみレプリケーション可能)
  • RDSパフォーマンスインサイト (MySQL5.6/5.7のみ可能)

まだこのふたつは問題ありません。Auroraは別途のチューニングが必要ですし、パフォーマンスインサイトは分析しなければ利用しなければいいだけです。致命的なのは

  • Amazon RDS Proxy (MySQL5.6/5.7のみ可能)

現在、MySQLバージョン5.6または5.7で実行されるAmazon RDS MySQL、または、Aurora MySQLをサポートしています。
https://aws.amazon.com/jp/blogs/news/using-amazon-rds-proxy-with-aws-lambda/

いや、プレビュー版なのはわかってます。けど、Lambdaでコネクションプールを考えるとRDS Proxyはまさに救世主でプレビュー版でも本番に投下したかったのです。私のプロダクション環境はRDS MySQL8系なので上記は一切使えませんが。Lambdaで環境構築をすませましたが、ElasticBeanstalkに切り替えます・・・。

使う予定はない?私もなかったです。けど、使いたくなるときはいつくるかわかりません。

AWS RDS MySQL使うなら「最新バージョンにしよう」とか思わずに、5.7のマイナーアップデートにしておくことをおすすめします。
それでは、また。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

メモ②-SELECT文の基本-

【仮定・予備知識】
「->」←これはEnterキーで改行したことを表す記号。
MySQLでは、「;」を入力しない限り、いくらでも改行することができる。
また、「SELECT 」の「」印は、「すべての項目」を扱いたいときに使うもの。

①練習用データベース「company」のemployeeテーブルを、コード順に並び替えたいとき

昇順に並べる場合↓
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee;
もしくは
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> ORDER BY
-> code ASC;

降順に並べる場合↓
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> ORDER BY
-> code DESC;

②companyデータベースのemployeeテーブルから「伊藤英樹」を抽出する場合
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> name = "伊藤英樹";

③companyデータベースのemployeeテーブルから血液型A型の人を抽出する場合
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> blood = "A";

④companyデータベースのemployeeテーブルから基本給(basic_salary)が23万円以上の人を抽出する
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> basic_salary >= 230000
-> ORDER BY
-> basic_salary ASC;

⑤companyデータベースのemployeeテーブルからコード(code)と基本給(basic_salary)だけを表示し、
基本給が23万円以上の人だけを抽出する
MariaDB [company]> SELECT
-> code,basic_salary
-> FROM
-> tbl_employee
-> WHERE
-> basic_salary >= 230000
-> ORDER BY
-> basic_salary ASC;

・・・③へ続く

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQLやったことメモ②

【仮定・予備知識】
「->」←これはEnterキーで改行したことを表す記号。
MySQLでは、「;」を入力しない限り、いくらでも改行することができる。
また、「SELECT 」の「」印は、「すべての項目」を扱いたいときに使うもの。

①練習用データベース「company」のemployeeテーブルを、コード順に並び替えたいとき

昇順に並べる場合↓
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee;
もしくは
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> ORDER BY
-> code ASC;

降順に並べる場合↓
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> ORDER BY
-> code DESC;

②companyデータベースのemployeeテーブルから「伊藤英樹」を抽出する場合
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> name = "伊藤英樹";

③companyデータベースのemployeeテーブルから血液型A型の人を抽出する場合
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> blood = "A";

④companyデータベースのemployeeテーブルから基本給(basic_salary)が23万円以上の人を抽出する
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> basic_salary >= 230000
-> ORDER BY
-> basic_salary ASC;

⑤companyデータベースのemployeeテーブルからコード(code)と基本給(basic_salary)だけを表示し、
基本給が23万円以上の人だけを抽出する
MariaDB [company]> SELECT
-> code,basic_salary
-> FROM
-> tbl_employee
-> WHERE
-> basic_salary >= 230000
-> ORDER BY
-> basic_salary ASC;

・・・③へ続く

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

メモ①-DB起動からテーブル一覧の表示まで-

【仮定】
MariaDBの導入・環境構築は終わっているものとする

<0>
①コマンドプロンプトからMariaDBを起動するには
mysql -u ユーザー名 -pを入力し、Enter。

②現在手元にあるデータべース一覧を表示する
MariaDB [(none)]> SHOW databases;

③使用するデータベースを選択する
MariaDB [(none)]> USE データベース名;

④データベースに含まれるテーブル一覧を表示する
MariaDB [world]> SHOW tables;

⑤テーブルに含まれる項目一覧を表示する
MariaDB [world]> DESC テーブル名;

・・・②へ続く

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQLやったことメモ①

【仮定】
MariaDBの導入・環境構築は終わっているものとする

<0>
①コマンドプロンプトからMariaDBを起動するには
mysql -u root -pを入力し、Enter。

②現在手元にあるデータべース一覧を表示する
MariaDB [(none)]> SHOW databases;

③使用するデータベースを選択する
MariaDB [(none)]> USE データベース名;

④データベースに含まれるテーブル一覧を表示する
MariaDB [world]> SHOW tables;

⑤テーブルに含まれる項目一覧を表示する
MariaDB [world]> DESC テーブル名;

・・・②へ続く

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む