- 投稿日:2020-10-28T23:49:42+09:00
[SQL] データベースを削除する手順
データベースを間違えて作ってしまうこともあるので、忘備録として記録します。
今回はMySQLを使用していきます。MySQLに接続
-u root
オプションを使っていますが、この「ルート」はMySQLで元々用意されているユーザーです。ターミナル% mysql -u rootこんな感じで表示されればログイン完了です。
ターミナルcd: too many arguments kusakashiori@mba ~ % mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 300 Server version: 5.6.47 Homebrew Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.データベースを表示
- データベースの一覧を表示して削除するデータベース名を確認しましょう。
ターミナルmysql> SHOW DATABASES;テーブルが表示されました。
今回はこちらの「test」を削除していきます。ターミナル+------------------------+ | Database | +------------------------+ | 省略 | | test | | 省略 | +------------------------+データベースを削除
ターミナルmysql> DROP DATABASE test;
SHOW DATABASES;
コマンドで確認すると削除されていることがわかります。
- 投稿日:2020-10-28T21:44:36+09:00
【忘備録】Rubyをやってみて何度も調べたコマンド一覧
はじめに
Rubyを半年程さわってみて、調べる頻度が多かったコマンドをここでまとめてます。
初学者兼初投稿なのでコメントやLGTMなどでフィードバック頂けると励みになります。よろしくお願いします。Ruby関連
rubyのバージョンを確認する $ ruby -v railsのバージョンを確認する $ rails -v credentials.yml.encのファイルを開く $ EDITOR='code --wait' rails credentials:edit (※vscodeでファイルを開くにはshellをインストールしてcodeコマンドを使えるようにする必要あり)unicorn関連
起動状態を確認する $ ps auxwww | grep unicorn プロセスを終了する $ kill -9 ○○○○○○ すべてのログを確認する ($ cd /var/www/app/log にて) $ less unicorn.staderr.log 直近10件のログを確認する ($ cd /var/www/app/log にて) $ tail unicorn.staderr.lognginx関連
再起動する $ sudo service nginx restart すべてのログを確認する (本番環境のホームディレクトリにて) $ sudo less /var/log/nginx/error.logMySQL関連
起動状況を確認する $ sudo service mysqld status 起動する $ sudo service mysqld startCapistrano関連
デプロイ実行 $ bundle exec cap production deploy 1つ前の状態にロールバック $ bundle exec cap production deploy:rollback本番環境まわりのコマンドばかりになってしまいましたが、過不足があれば随時更新していきます。
- 投稿日:2020-10-28T21:27:25+09:00
Computeインスタンス上にNode.jsのWebアプリケーション環境を構成して、MySQL Database ServiceのDBシステムにアクセスしてみた
はじめに
Computeインスタンス上に構成したNode.jsのWebアプリケーションから、MySQL Database ServiceのDBシステムにアクセスしてみた時の手順です。
(2020年10月現在)構築イメージ
作業の流れ
1.VCNの構成
2.ネットワーク・セキュリティ・グループの作成
3.MySQL DBシステムの作成
4.Computeインスタンス(APサーバ)の作成
5.パブリックIPの作成
6.ComputeインスタンスへのパブリックIPの割り当て
7.MySQLクライアントのインストールと設定
8.Node.jsのインストールと設定
9.firewalldの設定
10.SELinuxの設定
11.MySQL DBシステムの接続情報の確認
12.アプリケーションで使用するDBの準備
13.Node.jsアプリケーションの作成
14.Node.jsアプリケーションの動作確認1.VCNの構成
こちらの記事を参考に、仮想クラウド・ネットワークを構成します。
OCIのネットワークを構成する際に手戻りの少ない手順を考えてみる(初心者向け)
ここでは、以下の理由からMySQL DBシステムを独立したプライベート・サブネットに配置します。
・MySQL DBシステムはプライベート・エンドポイントのみを持つ。
・MySQL DBシステムにはネットワーク・セキュリティ・グループを適用できない。そのため、参考記事のネットワーク構成に対して、以下の部分を変更します。
・Subnet2のセキュリティ・リスト(Security List for Subnet2)
APサーバを配置するサブネット(Subnet1:10.0.1.0/24)からのみ、MySQLへの接続で使用するTCP 3306、33060へのアクセスを許可します。「コンソールメニュー」 → 「ネットワーキング」 → 「仮想クラウド・ネットワーク」
→ 「仮想クラウドネットワークの詳細」 → 「セキュリティ・リスト」・「セキュリティ・リストの作成」をクリック
・ 名前:Security List for Subnet2
・コンパートメントに作成:「Compartment1」を選択
・「+追加のイングレス・ルール」をクリック
・ステートレス:チェックをオフ(デフォルト)
・ソース・タイプ:「CIDR」を選択
・ソースCIDR:10.0.1.0/24
・IPプロトコル:「TCP」を選択
・ソース・ポート範囲:入力しない
・宛先ポート範囲:3306
・「+追加のイングレス・ルール」をクリック
・ステートレス:チェックをオフ(デフォルト)
・ソース・タイプ:「CIDR」を選択
・ソースCIDR:10.0.1.0/24
・IPプロトコル:「TCP」を選択
・ソース・ポート範囲:入力しない
・宛先ポート範囲:33060
・「+追加のエグレス・ルール」をクリック
・ステートレス:チェックをオフ(デフォルト)
・宛先タイプ:「CIDR」を選択
・宛先CIDR:0.0.0.0/0
・IPプロトコル:「全てのプロトコル」を選択」
・「セキュリティ・リストの作成」をクリック2.ネットワーク・セキュリティ・グループの作成
今回作成するNode.jsアプリケーションでTCP 8080でリクエストを受けるので、すべての場所からTCP 8080へのアクセスを許可するネットワーク・セキュリティ・グループを作成します。
「コンソールメニュー」 → 「ネットワーキング」 → 「仮想クラウド・ネットワーク」 → 「仮想クラウドネットワークの詳細」 → 「ネットワーク・セキュリティ・グループ」
・「ネットワーク・セキュリティ・グループの作成」をクリック
・名前:Network Security Group for AP
・コンパートメントに作成:「Compartment1」を選択
・「次」をクリック
・セキュリティ・ルールの追加
ルール
ステートレス:チェックをオフ(デフォルト)
方向:「イングレス」を選択
ソースタイプ:「CIDR」を選択
ソース:0.0.0.0/0
IPプロトコル:「TCP」を選択
ソース・ポート範囲:デフォルトのまま(入力しない)
宛先ポート範囲:8080
説明:Security Rule for TCP 8080 **
・「作成」をクリック**3.MySQL DBシステムの作成
「コンソールメニュー」 → 「MySQL」 → 「DBシステム」
・「MySQL DBシステムの作成」をクリック
DBシステムの基本情報情報
・コンパートメントの選択:「Compartment1」を選択
・DBシステムの名前の指定:MySQL1
・可用性ドメインの選択:任意の可用性ドメインを選択
・フォルト・ドメインの選択:任意のフォルト・ドメインを選択
・シェイプの選択:任意のシェイプを選択
・データ・ストレージ・サイズ(GB):任意のサイズを入力
・メンテナンス・ウィンドウの開始時間:入力しない
・「次」をクリックデータベースの基本情報の指定
・管理者資格証明の作成
・ユーザー名:admin
・パスワード:Demo#1Demo#1
・パスワードの確認:Demo#1Demo#1
・ネットワーク情報の指定
・仮想クラウドネットワーク:「VCN1」を選択
・サブネット:「Subnet2」を選択
・ホスト名:mysql1
・MySQLポート:3306(デフォルト)
・MYSQL Xプロトコル・ポート:33060(デフォルト)
・「次」をクリックDBシステム・バックアップの基本情報の指定
・バックアップの構成
・自動バックアップの有効化:チェックをオン(デフォルト)
・バックアップ保持期間:7(デフォルト)
・バックアップ・ウィンドウの開始時間:デフォルト・バックアップ・ウィンドウ(デフォルト)
・「作成」をクリック4.Computeインスタンス(APサーバ)の作成
「コンソールメニュー」 → 「コンピュート」 → 「インスタンス」
・「インスタンスの作成」をクリック
・名前:AP1
・コンパートメントに作成:「Compartment1」を選択・配置とハードウェアの構成
・可用性ドメイン:任意のADを選択
・イメージ:「Oracle Linux 7.8」を選択
・シェイプ:任意のシェイプを選択・ネットワーキングの構成
・ネットワーク:「既存の仮想クラウド・ネットワークを選択」を選択し、「VCN1」を選択
・サブネット:「既存のサブネット」を選択し、「Subnet 1」を選択
・ネットワーク・セキュリティ・グループを使用してトラフィックを制御:チェックをオン
・ネットワーク・セキュリティ・グループ:「Network Security Group for AP」を選択
・パブリックIPアドレス:「パブリックIPアドレスを割り当てないでください」を選択
・SSHキーの追加
・「公開キー・ファイルの選択」を選択し、「または場所を参照します」をクリックして公開キー・ファイルをアップロードします
・ブートボリュームの構成
・全てデフォルトのまま・「拡張オプションの表示」をクリック
・「管理」タブ
・全てデフォルトのまま
・「ネットワーキング」タブ
・プライベートIPアドレス:10.0.1.100
・ホスト名:ap1
・起動オプション:デフォルトのまま
・「イメージ」タブ
・デフォルトのまま
・「配置」タブ
・デフォルトのまま
・「作成」をクリック5.パブリックIPの作成
「コンソールメニュー」 → 「ネットワーキング」 → 「IP Management」
・「パブリックIPアドレスの予約」をクリック
・予約済パブリックIPアドレス名:PublicIP1
・コンパートメントに作成:「Compartment1」を選択
・IPアドレスのソース:「Oracle」を選択・「パブリックIPアドレスの予約」をクリック
6.ComputeインスタンスへのパブリックIPの割り当て
「コンソールメニュー」 → 「コンピュート」 → 「インスタンス」 → 「インスタンスの詳細」
・リソース欄の「アタッチされたVNIC」をクリック
・VNIC名(AP1)をクリック
・リソース欄の「IPアドレス」をクリック
・IPアドレスの欄の「:」をクリックし、「編集」をクリック
・パブリックIPタイプ:「予約済パブリックIP」を選択
・「既存の予約済パブリックIPの選択」を選択
・RESERVED IP ADDRESS:「PublicIP1」を選択
・「更新」をクリック7.MySQLクライアントのインストールと設定
秘密鍵を使って、SSHクライアントからComputeインスタンス(AP1)にopcユーザでログインします。
タイムゾーンとロケールを設定します。
sudo timedatectl set-timezone Asia/Tokyo sudo localectl set-locale LANG=ja_JP.utf8yumコマンドでMySQLクライアントをインストールします。
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum install -y mysql-community-client8.Node.jsのインストールと設定
yumコマンドでNode.jsインストールをインストールします。
sudo yum install -y oracle-release-el7 oracle-nodejs-release-el7 sudo yum install -y --disablerepo=ol7_developer_EPEL nodejsnpmコマンドで使用するNode.jsモジュール(expressフレームワーク、ejs)をインストールします。
sudo npm install -g --save express-generator sudo npm install -g --save ejs9.firewalldの設定
firewall-cmdコマンドでfirewalldにTCP8080の通信を許可する設定を追加します。
sudo firewall-cmd --add-port 8080/tcp --zone=public --permanent sudo firewall-cmd --reload sudo firewall-cmd --list-all --zone=public10.SELinuxの設定
SELinuxの設定を変更します。
sudo setenforce 0再起動後にSELinuxが有効にならないように設定ファイルを変更します。
sudo vi /etc/selinux/config/etc/selinux/configSELINUX=enforcingの部分を以下のように変更して保存します。
/etc/selinux/configSELINUX=permissive11.MySQL DBシステムの接続情報の確認
「コンソール」 → 「MySQL DBシステム」 → 「MySQL DBシステム」
リソース欄の「エンドポイント」をクリックし、MySQL DBシステムのエンドポイント(ホスト、ポート)を確認します。
12.アプリケーションで使用するDBの準備
DB接続情報を含む、MySQLクライアントの設定ファイルを作成します。
vi /home/opc/.my.cnf/home/opc/.my.cnf[client] user=admin password="Demo#1Demo#1" host="mysql1.subnet2.vcn1.oraclevcn.com"mysqlコマンドででMySQLに接続に接続します。
mysqlアプリケーションで使用するDBを作成します。
mysql> CREATE DATABASE testdb;アプリケーションで使用するDBユーザを作成します。
mysql> CREATE USER 'test' IDENTIFIED BY 'Demo#1Demo#1';アプリケーションで使用するDBユーザに権限を付与します。
mysql> GRANT ALL ON testdb.* TO 'test';アプリケーションで使用するDBに接続します。
mysql> USE testdbアプリケーションで使用するテーブルを作成します。
mysql> CREATE TABLE dept ( -> deptno INT , -> dname VARCHAR(14), -> loc VARCHAR(13) , -> PRIMARY KEY (deptno) -> );アプリケーションで使用するテーブルにデータを挿入します。
mysql> INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK'); mysql> INSERT INTO dept VALUES (20,'RESEARCH','DALLAS'); mysql> INSERT INTO dept VALUES (30,'SALES','CHICAGO'); mysql> INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON'); mysql> COMMIT;アプリケーションで使用するテーブルのデータを確認します。
mysql> SELECT * FROM dept; +--------+------------+----------+ | deptno | dname | loc | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | +--------+------------+----------+mysqlコマンドを終了します。
mysql> exit13.Node.jsアプリケーションの作成
今回はexpressフレームワークを使用してNode.jsアプリケーションを作成します。
opcユーザのホームディレクトリ直下に、expressコマンドでNode.jsアプリケーション環境を作成します。
cd /home/opc express --view=ejs appアプリケーション環境のディレクトリに移動し、npmコマンドで依存関係のあるモジュールをインストールします。
cd app npm installnpmコマンドでMySQLにアクセスするために使用する@mysql/xdevapiモジュールをインストールします。
npm install --save @mysql/xdevapiapp.jsを編集します。
vi /home/opc/app/app.js末尾に以下の内容を追加します。
/home/opc/app/app.jsapp.listen(8080);routes/index.jsを編集します。
vi /home/opc/app/routes/index.js以下の内容に書き換えます。
/home/opc/app/routes/index.jsvar express = require('express'); var mysqlx = require('@mysql/xdevapi'); var router = express.Router(); var os = require('os'); mysqlx .getSession({ user: 'test', password: 'Demo#1Demo#1', host: 'mysql1.subnet2.vcn1.oraclevcn.com', port: '33060' }) .then(function (session) { var db = session.getSchema('testdb'); var myTable = db.getTable('dept'); var rows = myTable .select() .execute() .then(res => { dept = res.fetchAll(); hostname = os.hostname(); console.log(dept); console.log(hostname); }); router.get('/', function(req, res, next) { res.render('index',{dept: dept, hostname: hostname}); }); }) .catch(function (err) { console.log('error: ' + err.stack); return; }); module.exports = router;views/index.ejsを編集します。
vi /home/opc/app/views/index.ejs以下の内容に書き換えます。
/home/opc/app/views/index.ejs<html> <head> <meta charset="UTF-8"> <title>Node.js to MySQL DS Connection Test</title> </head> <body> <table border='1'> <caption>DEPT Table</caption> <tr><th>Dept No.</th><th>Dept Name</th><th>Location</th></tr> <% dept.forEach(function(deptItem) { %> <tr> <td><%- deptItem[0] %></td> <td><%- deptItem[1] %></td> <td><%- deptItem[2] %></td> </tr> <% }); %> </table><br> Response from <%- hostname %> </body> </html>14.Node.jsアプリケーションの動作確認
nodeコマンドでアプリケーションを実行します。
cd /home/opc/app node app.jsPCのブラウザからアクセスして、アプリケーションの動作を確認します。
http://<AP1のグローバルIP>:8080
- 投稿日:2020-10-28T21:27:25+09:00
Computeインスタンス上にNode.jaのWebアプリケーション環境を構成して、MySQL Database ServiceのDBシステムにアクセスしてみた
はじめに
Computeインスタンス上に構成したNode.jsのWebアプリケーションから、MySQL Database ServiceのDBシステムにアクセスしてみた時の手順です。
(2020年10月現在)構築イメージ
作業の流れ
1.VCNの構成
2.ネットワーク・セキュリティ・グループの作成
3.MySQL DBシステムの作成
4.Computeインスタンス(APサーバ)の作成
5.パブリックIPの作成
6.ComputeインスタンスへのパブリックIPの割り当て
7.MySQLクライアントのインストールと設定
8.Node.jsのインストールと設定
9.firewalldの設定
10.SELinuxの設定
11.MySQL DBシステムの接続情報の確認
12.アプリケーションで使用するDBの準備
13.Node.jsアプリケーションの作成
14.Node.jsアプリケーションの動作確認1.VCNの構成
こちらの記事を参考に、仮想クラウド・ネットワークを構成します。
OCIのネットワークを構成する際に手戻りの少ない手順を考えてみる(初心者向け)
ここでは、以下の理由からMySQL DBシステムを独立したプライベート・サブネットに配置します。
・MySQL DBシステムはプライベート・エンドポイントのみを持つ。
・MySQL DBシステムにはネットワーク・セキュリティ・グループを適用できない。そのため、参考記事のネットワーク構成に対して、以下の部分を変更します。
・Subnet2のセキュリティ・リスト(Security List for Subnet2)
APサーバを配置するサブネット(Subnet1:10.0.1.0/24)からのみ、MySQLへの接続で使用するTCP 3306、33060へのアクセスを許可します。「コンソールメニュー」 → 「ネットワーキング」 → 「仮想クラウド・ネットワーク」
→ 「仮想クラウドネットワークの詳細」 → 「セキュリティ・リスト」・「セキュリティ・リストの作成」をクリック
・ 名前:Security List for Subnet2
・コンパートメントに作成:「Compartment1」を選択
・「+追加のイングレス・ルール」をクリック
・ステートレス:チェックをオフ(デフォルト)
・ソース・タイプ:「CIDR」を選択
・ソースCIDR:10.0.1.0/24
・IPプロトコル:「TCP」を選択
・ソース・ポート範囲:入力しない
・宛先ポート範囲:3306
・「+追加のイングレス・ルール」をクリック
・ステートレス:チェックをオフ(デフォルト)
・ソース・タイプ:「CIDR」を選択
・ソースCIDR:10.0.1.0/24
・IPプロトコル:「TCP」を選択
・ソース・ポート範囲:入力しない
・宛先ポート範囲:33060
・「+追加のエグレス・ルール」をクリック
・ステートレス:チェックをオフ(デフォルト)
・宛先タイプ:「CIDR」を選択
・宛先CIDR:0.0.0.0/0
・IPプロトコル:「全てのプロトコル」を選択」
・「セキュリティ・リストの作成」をクリック2.ネットワーク・セキュリティ・グループの作成
今回作成するNode.jsアプリケーションでTCP 8080でリクエストを受けるので、すべての場所からTCP 8080へのアクセスを許可するネットワーク・セキュリティ・グループを作成します。
「コンソールメニュー」 → 「ネットワーキング」 → 「仮想クラウド・ネットワーク」 → 「仮想クラウドネットワークの詳細」 → 「ネットワーク・セキュリティ・グループ」
・「ネットワーク・セキュリティ・グループの作成」をクリック
・名前:Network Security Group for AP
・コンパートメントに作成:「Compartment1」を選択
・「次」をクリック
・セキュリティ・ルールの追加
ルール
ステートレス:チェックをオフ(デフォルト)
方向:「イングレス」を選択
ソースタイプ:「CIDR」を選択
ソース:0.0.0.0/0
IPプロトコル:「TCP」を選択
ソース・ポート範囲:デフォルトのまま(入力しない)
宛先ポート範囲:8080
説明:Security Rule for TCP 8080 **
・「作成」をクリック**3.MySQL DBシステムの作成
「コンソールメニュー」 → 「MySQL」 → 「DBシステム」
・「MySQL DBシステムの作成」をクリック
DBシステムの基本情報情報
・コンパートメントの選択:「Compartment1」を選択
・DBシステムの名前の指定:MySQL1
・可用性ドメインの選択:任意の可用性ドメインを選択
・フォルト・ドメインの選択:任意のフォルト・ドメインを選択
・シェイプの選択:任意のシェイプを選択
・データ・ストレージ・サイズ(GB):任意のサイズを入力
・メンテナンス・ウィンドウの開始時間:入力しない
・「次」をクリックデータベースの基本情報の指定
・管理者資格証明の作成
・ユーザー名:admin
・パスワード:Demo#1Demo#1
・パスワードの確認:Demo#1Demo#1
・ネットワーク情報の指定
・仮想クラウドネットワーク:「VCN1」を選択
・サブネット:「Subnet2」を選択
・ホスト名:mysql1
・MySQLポート:3306(デフォルト)
・MYSQL Xプロトコル・ポート:33060(デフォルト)
・「次」をクリックDBシステム・バックアップの基本情報の指定
・バックアップの構成
・自動バックアップの有効化:チェックをオン(デフォルト)
・バックアップ保持期間:7(デフォルト)
・バックアップ・ウィンドウの開始時間:デフォルト・バックアップ・ウィンドウ(デフォルト)
・「作成」をクリック4.Computeインスタンス(APサーバ)の作成
「コンソールメニュー」 → 「コンピュート」 → 「インスタンス」
・「インスタンスの作成」をクリック
・名前:AP1
・コンパートメントに作成:「Compartment1」を選択・配置とハードウェアの構成
・可用性ドメイン:任意のADを選択
・イメージ:「Oracle Linux 7.8」を選択
・シェイプ:任意のシェイプを選択・ネットワーキングの構成
・ネットワーク:「既存の仮想クラウド・ネットワークを選択」を選択し、「VCN1」を選択
・サブネット:「既存のサブネット」を選択し、「Subnet 1」を選択
・ネットワーク・セキュリティ・グループを使用してトラフィックを制御:チェックをオン
・ネットワーク・セキュリティ・グループ:「Network Security Group for AP」を選択
・パブリックIPアドレス:「パブリックIPアドレスを割り当てないでください」を選択
・SSHキーの追加
・「公開キー・ファイルの選択」を選択し、「または場所を参照します」をクリックして公開キー・ファイルをアップロードします
・ブートボリュームの構成
・全てデフォルトのまま・「拡張オプションの表示」をクリック
・「管理」タブ
・全てデフォルトのまま
・「ネットワーキング」タブ
・プライベートIPアドレス:10.0.1.100
・ホスト名:ap1
・起動オプション:デフォルトのまま
・「イメージ」タブ
・デフォルトのまま
・「配置」タブ
・デフォルトのまま
・「作成」をクリック5.パブリックIPの作成
「コンソールメニュー」 → 「ネットワーキング」 → 「IP Management」
・「パブリックIPアドレスの予約」をクリック
・予約済パブリックIPアドレス名:PublicIP1
・コンパートメントに作成:「Compartment1」を選択
・IPアドレスのソース:「Oracle」を選択・「パブリックIPアドレスの予約」をクリック
6.ComputeインスタンスへのパブリックIPの割り当て
「コンソールメニュー」 → 「コンピュート」 → 「インスタンス」 → 「インスタンスの詳細」
・リソース欄の「アタッチされたVNIC」をクリック
・VNIC名(AP1)をクリック
・リソース欄の「IPアドレス」をクリック
・IPアドレスの欄の「:」をクリックし、「編集」をクリック
・パブリックIPタイプ:「予約済パブリックIP」を選択
・「既存の予約済パブリックIPの選択」を選択
・RESERVED IP ADDRESS:「PublicIP1」を選択
・「更新」をクリック7.MySQLクライアントのインストールと設定
秘密鍵を使って、SSHクライアントからComputeインスタンス(AP1)にopcユーザでログインします。
タイムゾーンとロケールを設定します。
sudo timedatectl set-timezone Asia/Tokyo sudo localectl set-locale LANG=ja_JP.utf8yumコマンドでMySQLクライアントをインストールします。
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum install -y mysql-community-client8.Node.jsのインストールと設定
yumコマンドでNode.jsインストールをインストールします。
sudo yum install -y oracle-release-el7 oracle-nodejs-release-el7 sudo yum install -y --disablerepo=ol7_developer_EPEL nodejsnpmコマンドで使用するNode.jsモジュール(expressフレームワーク、ejs)をインストールします。
sudo npm install -g --save express-generator sudo npm install -g --save ejs9.firewalldの設定
firewall-cmdコマンドでfirewalldにTCP8080の通信を許可する設定を追加します。
sudo firewall-cmd --add-port 8080/tcp --zone=public --permanent sudo firewall-cmd --reload sudo firewall-cmd --list-all --zone=public10.SELinuxの設定
SELinuxの設定を変更します。
sudo setenforce 0再起動後にSELinuxが有効にならないように設定ファイルを変更します。
sudo vi /etc/selinux/config/etc/selinux/configSELINUX=enforcingの部分を以下のように変更して保存します。
/etc/selinux/configSELINUX=permissive11.MySQL DBシステムの接続情報の確認
「コンソール」 → 「MySQL DBシステム」 → 「MySQL DBシステム」
リソース欄の「エンドポイント」をクリックし、MySQL DBシステムのエンドポイント(ホスト、ポート)を確認します。
12.アプリケーションで使用するDBの準備
DB接続情報を含む、MySQLクライアントの設定ファイルを作成します。
vi /home/opc/.my.cnf/home/opc/.my.cnf[client] user=admin password="Demo#1Demo#1" host="mysql1.subnet2.vcn1.oraclevcn.com"mysqlコマンドででMySQLに接続に接続します。
mysqlアプリケーションで使用するDBを作成します。
mysql> CREATE DATABASE testdb;アプリケーションで使用するDBユーザを作成します。
mysql> CREATE USER 'test' IDENTIFIED BY 'Demo#1Demo#1';アプリケーションで使用するDBユーザに権限を付与します。
mysql> GRANT ALL ON testdb.* TO 'test';アプリケーションで使用するDBに接続します。
mysql> USE testdbアプリケーションで使用するテーブルを作成します。
mysql> CREATE TABLE dept ( -> deptno INT , -> dname VARCHAR(14), -> loc VARCHAR(13) , -> PRIMARY KEY (deptno) -> );アプリケーションで使用するテーブルにデータを挿入します。
mysql> INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK'); mysql> INSERT INTO dept VALUES (20,'RESEARCH','DALLAS'); mysql> INSERT INTO dept VALUES (30,'SALES','CHICAGO'); mysql> INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON'); mysql> COMMIT;アプリケーションで使用するテーブルのデータを確認します。
mysql> SELECT * FROM dept; +--------+------------+----------+ | deptno | dname | loc | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | +--------+------------+----------+mysqlコマンドを終了します。
mysql> exit13.Node.jsアプリケーションの作成
今回はexpressフレームワークを使用してNode.jsアプリケーションを作成します。
opcユーザのホームディレクトリ直下に、expressコマンドでNode.jsアプリケーション環境を作成します。
cd /home/opc express --view=ejs appアプリケーション環境のディレクトリに移動し、npmコマンドで依存関係のあるモジュールをインストールします。
cd app npm installnpmコマンドでMySQLにアクセスするために使用する@mysql/xdevapiモジュールをインストールします。
npm install --save @mysql/xdevapiapp.jsを編集します。
vi /home/opc/app/app.js末尾に以下の内容を追加します。
/home/opc/app/app.jsapp.listen(8080);routes/index.jsを編集します。
vi /home/opc/app/routes/index.js以下の内容に書き換えます。
/home/opc/app/routes/index.jsvar express = require('express'); var mysqlx = require('@mysql/xdevapi'); var router = express.Router(); var os = require('os'); mysqlx .getSession({ user: 'test', password: 'Demo#1Demo#1', host: 'mysql1.subnet2.vcn1.oraclevcn.com', port: '33060' }) .then(function (session) { var db = session.getSchema('testdb'); var myTable = db.getTable('dept'); var rows = myTable .select() .execute() .then(res => { dept = res.fetchAll(); hostname = os.hostname(); console.log(dept); console.log(hostname); }); router.get('/', function(req, res, next) { res.render('index',{dept: dept, hostname: hostname}); }); }) .catch(function (err) { console.log('error: ' + err.stack); return; }); module.exports = router;views/index.ejsを編集します。
vi /home/opc/app/views/index.ejs以下の内容に書き換えます。
/home/opc/app/views/index.ejs<html> <head> <meta charset="UTF-8"> <title>Node.js to MySQL DS Connection Test</title> </head> <body> <table border='1'> <caption>DEPT Table</caption> <tr><th>Dept No.</th><th>Dept Name</th><th>Location</th></tr> <% dept.forEach(function(deptItem) { %> <tr> <td><%- deptItem[0] %></td> <td><%- deptItem[1] %></td> <td><%- deptItem[2] %></td> </tr> <% }); %> </table><br> Response from <%- hostname %> </body> </html>14.Node.jsアプリケーションの動作確認
nodeコマンドでアプリケーションを実行します。
cd /home/opc/app node app.jsPCのブラウザからアクセスして、アプリケーションの動作を確認します。
http://<AP1のグローバルIP>:8080
- 投稿日:2020-10-28T21:27:25+09:00
[OCI] Computeインスタンス上にNode.jsのWebアプリケーション環境を構成して、MySQL Database ServiceのDBシステムにアクセスしてみた
はじめに
Computeインスタンス上に構成したNode.jsのWebアプリケーションから、MySQL Database ServiceのDBシステムにアクセスしてみた時の手順です。
(2020年10月現在)構築イメージ
作業の流れ
1.VCNの構成
2.ネットワーク・セキュリティ・グループの作成
3.MySQL DBシステムの作成
4.Computeインスタンス(APサーバ)の作成
5.パブリックIPの作成
6.ComputeインスタンスへのパブリックIPの割り当て
7.MySQLクライアントのインストールと設定
8.Node.jsのインストールと設定
9.firewalldの設定
10.SELinuxの設定
11.MySQL DBシステムの接続情報の確認
12.アプリケーションで使用するDBの準備
13.Node.jsアプリケーションの作成
14.Node.jsアプリケーションの動作確認1.VCNの構成
こちらの記事を参考に、仮想クラウド・ネットワークを構成します。
OCIのネットワークを構成する際に手戻りの少ない手順を考えてみる(初心者向け)
ここでは、以下の理由からMySQL DBシステムを独立したプライベート・サブネットに配置します。
・MySQL DBシステムはプライベート・エンドポイントのみを持つ。
・MySQL DBシステムにはネットワーク・セキュリティ・グループを適用できない。そのため、参考記事のネットワーク構成に対して、以下の部分を変更します。
・Subnet2のセキュリティ・リスト(Security List for Subnet2)
APサーバを配置するサブネット(Subnet1:10.0.1.0/24)からのみ、MySQLへの接続で使用するTCP 3306、33060へのアクセスを許可します。「コンソールメニュー」 → 「ネットワーキング」 → 「仮想クラウド・ネットワーク」
→ 「仮想クラウドネットワークの詳細」 → 「セキュリティ・リスト」・「セキュリティ・リストの作成」をクリック
・ 名前:Security List for Subnet2
・コンパートメントに作成:「Compartment1」を選択
・「+追加のイングレス・ルール」をクリック
・ステートレス:チェックをオフ(デフォルト)
・ソース・タイプ:「CIDR」を選択
・ソースCIDR:10.0.1.0/24
・IPプロトコル:「TCP」を選択
・ソース・ポート範囲:入力しない
・宛先ポート範囲:3306
・「+追加のイングレス・ルール」をクリック
・ステートレス:チェックをオフ(デフォルト)
・ソース・タイプ:「CIDR」を選択
・ソースCIDR:10.0.1.0/24
・IPプロトコル:「TCP」を選択
・ソース・ポート範囲:入力しない
・宛先ポート範囲:33060
・「+追加のエグレス・ルール」をクリック
・ステートレス:チェックをオフ(デフォルト)
・宛先タイプ:「CIDR」を選択
・宛先CIDR:0.0.0.0/0
・IPプロトコル:「全てのプロトコル」を選択」
・「セキュリティ・リストの作成」をクリック2.ネットワーク・セキュリティ・グループの作成
今回作成するNode.jsアプリケーションでTCP 8080でリクエストを受けるので、すべての場所からTCP 8080へのアクセスを許可するネットワーク・セキュリティ・グループを作成します。
「コンソールメニュー」 → 「ネットワーキング」 → 「仮想クラウド・ネットワーク」 → 「仮想クラウドネットワークの詳細」 → 「ネットワーク・セキュリティ・グループ」
・「ネットワーク・セキュリティ・グループの作成」をクリック
・名前:Network Security Group for AP
・コンパートメントに作成:「Compartment1」を選択
・「次」をクリック
・セキュリティ・ルールの追加
ルール
ステートレス:チェックをオフ(デフォルト)
方向:「イングレス」を選択
ソースタイプ:「CIDR」を選択
ソース:0.0.0.0/0
IPプロトコル:「TCP」を選択
ソース・ポート範囲:デフォルトのまま(入力しない)
宛先ポート範囲:8080
説明:Security Rule for TCP 8080 **
・「作成」をクリック**3.MySQL DBシステムの作成
「コンソールメニュー」 → 「MySQL」 → 「DBシステム」
・「MySQL DBシステムの作成」をクリック
DBシステムの基本情報情報
・コンパートメントの選択:「Compartment1」を選択
・DBシステムの名前の指定:MySQL1
・可用性ドメインの選択:任意の可用性ドメインを選択
・フォルト・ドメインの選択:任意のフォルト・ドメインを選択
・シェイプの選択:任意のシェイプを選択
・データ・ストレージ・サイズ(GB):任意のサイズを入力
・メンテナンス・ウィンドウの開始時間:入力しない
・「次」をクリックデータベースの基本情報の指定
・管理者資格証明の作成
・ユーザー名:admin
・パスワード:Demo#1Demo#1
・パスワードの確認:Demo#1Demo#1
・ネットワーク情報の指定
・仮想クラウドネットワーク:「VCN1」を選択
・サブネット:「Subnet2」を選択
・ホスト名:mysql1
・MySQLポート:3306(デフォルト)
・MYSQL Xプロトコル・ポート:33060(デフォルト)
・「次」をクリックDBシステム・バックアップの基本情報の指定
・バックアップの構成
・自動バックアップの有効化:チェックをオン(デフォルト)
・バックアップ保持期間:7(デフォルト)
・バックアップ・ウィンドウの開始時間:デフォルト・バックアップ・ウィンドウ(デフォルト)
・「作成」をクリック4.Computeインスタンス(APサーバ)の作成
「コンソールメニュー」 → 「コンピュート」 → 「インスタンス」
・「インスタンスの作成」をクリック
・名前:AP1
・コンパートメントに作成:「Compartment1」を選択・配置とハードウェアの構成
・可用性ドメイン:任意のADを選択
・イメージ:「Oracle Linux 7.8」を選択
・シェイプ:任意のシェイプを選択・ネットワーキングの構成
・ネットワーク:「既存の仮想クラウド・ネットワークを選択」を選択し、「VCN1」を選択
・サブネット:「既存のサブネット」を選択し、「Subnet 1」を選択
・ネットワーク・セキュリティ・グループを使用してトラフィックを制御:チェックをオン
・ネットワーク・セキュリティ・グループ:「Network Security Group for AP」を選択
・パブリックIPアドレス:「パブリックIPアドレスを割り当てないでください」を選択
・SSHキーの追加
・「公開キー・ファイルの選択」を選択し、「または場所を参照します」をクリックして公開キー・ファイルをアップロードします
・ブートボリュームの構成
・全てデフォルトのまま・「拡張オプションの表示」をクリック
・「管理」タブ
・全てデフォルトのまま
・「ネットワーキング」タブ
・プライベートIPアドレス:10.0.1.100
・ホスト名:ap1
・起動オプション:デフォルトのまま
・「イメージ」タブ
・デフォルトのまま
・「配置」タブ
・デフォルトのまま
・「作成」をクリック5.パブリックIPの作成
「コンソールメニュー」 → 「ネットワーキング」 → 「IP Management」
・「パブリックIPアドレスの予約」をクリック
・予約済パブリックIPアドレス名:PublicIP1
・コンパートメントに作成:「Compartment1」を選択
・IPアドレスのソース:「Oracle」を選択・「パブリックIPアドレスの予約」をクリック
6.ComputeインスタンスへのパブリックIPの割り当て
「コンソールメニュー」 → 「コンピュート」 → 「インスタンス」 → 「インスタンスの詳細」
・リソース欄の「アタッチされたVNIC」をクリック
・VNIC名(AP1)をクリック
・リソース欄の「IPアドレス」をクリック
・IPアドレスの欄の「:」をクリックし、「編集」をクリック
・パブリックIPタイプ:「予約済パブリックIP」を選択
・「既存の予約済パブリックIPの選択」を選択
・RESERVED IP ADDRESS:「PublicIP1」を選択
・「更新」をクリック7.MySQLクライアントのインストールと設定
秘密鍵を使って、SSHクライアントからComputeインスタンス(AP1)にopcユーザでログインします。
タイムゾーンとロケールを設定します。
sudo timedatectl set-timezone Asia/Tokyo sudo localectl set-locale LANG=ja_JP.utf8yumコマンドでMySQLクライアントをインストールします。
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum install -y mysql-community-client8.Node.jsのインストールと設定
yumコマンドでNode.jsインストールをインストールします。
sudo yum install -y oracle-release-el7 oracle-nodejs-release-el7 sudo yum install -y --disablerepo=ol7_developer_EPEL nodejsnpmコマンドで使用するNode.jsモジュール(expressフレームワーク、ejs)をインストールします。
sudo npm install -g --save express-generator sudo npm install -g --save ejs9.firewalldの設定
firewall-cmdコマンドでfirewalldにTCP8080の通信を許可する設定を追加します。
sudo firewall-cmd --add-port 8080/tcp --zone=public --permanent sudo firewall-cmd --reload sudo firewall-cmd --list-all --zone=public10.SELinuxの設定
SELinuxの設定を変更します。
sudo setenforce 0再起動後にSELinuxが有効にならないように設定ファイルを変更します。
sudo vi /etc/selinux/config/etc/selinux/configSELINUX=enforcingの部分を以下のように変更して保存します。
/etc/selinux/configSELINUX=permissive11.MySQL DBシステムの接続情報の確認
「コンソール」 → 「MySQL DBシステム」 → 「MySQL DBシステム」
リソース欄の「エンドポイント」をクリックし、MySQL DBシステムのエンドポイント(ホスト、ポート)を確認します。
12.アプリケーションで使用するDBの準備
DB接続情報を含む、MySQLクライアントの設定ファイルを作成します。
vi /home/opc/.my.cnf/home/opc/.my.cnf[client] user=admin password="Demo#1Demo#1" host="mysql1.subnet2.vcn1.oraclevcn.com"mysqlコマンドででMySQLに接続に接続します。
mysqlアプリケーションで使用するDBを作成します。
mysql> CREATE DATABASE testdb;アプリケーションで使用するDBユーザを作成します。
mysql> CREATE USER 'test' IDENTIFIED BY 'Demo#1Demo#1';アプリケーションで使用するDBユーザに権限を付与します。
mysql> GRANT ALL ON testdb.* TO 'test';アプリケーションで使用するDBに接続します。
mysql> USE testdbアプリケーションで使用するテーブルを作成します。
mysql> CREATE TABLE dept ( -> deptno INT , -> dname VARCHAR(14), -> loc VARCHAR(13) , -> PRIMARY KEY (deptno) -> );アプリケーションで使用するテーブルにデータを挿入します。
mysql> INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK'); mysql> INSERT INTO dept VALUES (20,'RESEARCH','DALLAS'); mysql> INSERT INTO dept VALUES (30,'SALES','CHICAGO'); mysql> INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON'); mysql> COMMIT;アプリケーションで使用するテーブルのデータを確認します。
mysql> SELECT * FROM dept; +--------+------------+----------+ | deptno | dname | loc | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | +--------+------------+----------+mysqlコマンドを終了します。
mysql> exit13.Node.jsアプリケーションの作成
今回はexpressフレームワークを使用してNode.jsアプリケーションを作成します。
opcユーザのホームディレクトリ直下に、expressコマンドでNode.jsアプリケーション環境を作成します。
cd /home/opc express --view=ejs appアプリケーション環境のディレクトリに移動し、npmコマンドで依存関係のあるモジュールをインストールします。
cd app npm installnpmコマンドでMySQLにアクセスするために使用する@mysql/xdevapiモジュールをインストールします。
npm install --save @mysql/xdevapiapp.jsを編集します。
vi /home/opc/app/app.js末尾に以下の内容を追加します。
/home/opc/app/app.jsapp.listen(8080);routes/index.jsを編集します。
vi /home/opc/app/routes/index.js以下の内容に書き換えます。
/home/opc/app/routes/index.jsvar express = require('express'); var mysqlx = require('@mysql/xdevapi'); var router = express.Router(); var os = require('os'); mysqlx .getSession({ user: 'test', password: 'Demo#1Demo#1', host: 'mysql1.subnet2.vcn1.oraclevcn.com', port: '33060' }) .then(function (session) { var db = session.getSchema('testdb'); var myTable = db.getTable('dept'); var rows = myTable .select() .execute() .then(res => { dept = res.fetchAll(); hostname = os.hostname(); console.log(dept); console.log(hostname); }); router.get('/', function(req, res, next) { res.render('index',{dept: dept, hostname: hostname}); }); }) .catch(function (err) { console.log('error: ' + err.stack); return; }); module.exports = router;views/index.ejsを編集します。
vi /home/opc/app/views/index.ejs以下の内容に書き換えます。
/home/opc/app/views/index.ejs<html> <head> <meta charset="UTF-8"> <title>Node.js to MySQL DS Connection Test</title> </head> <body> <table border='1'> <caption>DEPT Table</caption> <tr><th>Dept No.</th><th>Dept Name</th><th>Location</th></tr> <% dept.forEach(function(deptItem) { %> <tr> <td><%- deptItem[0] %></td> <td><%- deptItem[1] %></td> <td><%- deptItem[2] %></td> </tr> <% }); %> </table><br> Response from <%- hostname %> </body> </html>14.Node.jsアプリケーションの動作確認
nodeコマンドでアプリケーションを実行します。
cd /home/opc/app node app.jsPCのブラウザからアクセスして、アプリケーションの動作を確認します。
http://<AP1のグローバルIP>:8080
- 投稿日:2020-10-28T18:59:28+09:00
本番のEXPLAINを可視化する
前段
開発環境や、ステージングなどで本番に近いデータがある場合は、下記ツールで可視化できます。
MySQL Workbench
のVisual ExplainIntelliJ IDEA
の Generate a flame graph for EXPLAINしかし、本番にしかないデータ量でのEXPLAINを可視化するにはどうすればよいでしょうか?
pt-visual-explain
を使うpt-query-digest で有名な Percona Toolkit には
というものがあります。
前段のツールのように、色分けされた可視化はできませんが、tree構造で可視化できます。table形式
$ cat explain_table.txt +----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------------+ | 1 | SIMPLE | customers | NULL | ALL | NULL | NULL | NULL | NULL | 5 | 100.00 | Using where | +----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------------+ 1 row in set, 1 warning (0.00 sec) $ pt-visual-explain explain_table.txt Filter with WHERE +- Table scan rows 5 +- Table table customersexplainは Create Index の例からお借りしました
vertical形式
$ cat explain_vertical.txt *************************** 1. row *************************** id: 1 select_type: SIMPLE table: d type: ALL possible_keys: PRIMARY key: NULL key_len: NULL ref: NULL rows: 9 Extra: Parent of 4 pushed join@1 *************************** 2. row *************************** id: 1 select_type: SIMPLE table: de type: ref possible_keys: PRIMARY,emp_no,dept_no key: dept_no key_len: 4 ref: employees.d.dept_no rows: 5305 Extra: Child of 'd' in pushed join@1 *************************** 3. row *************************** id: 1 select_type: SIMPLE table: e type: eq_ref possible_keys: PRIMARY key: PRIMARY key_len: 4 ref: employees.de.emp_no rows: 1 Extra: Child of 'de' in pushed join@1 *************************** 4. row *************************** id: 1 select_type: SIMPLE table: t type: ref possible_keys: PRIMARY,emp_no key: emp_no key_len: 4 ref: employees.de.emp_no rows: 19 Extra: Child of 'e' in pushed join@1 4 rows in set (0.00 sec) $ pt-visual-explain explain_vertical.txt JOIN +- Bookmark lookup | +- Table | | table t | | possible_keys PRIMARY,emp_no | +- Index lookup | key t->emp_no | possible_keys PRIMARY,emp_no | key_len 4 | ref employees.de.emp_no | rows 19 +- JOIN +- Bookmark lookup | +- Table | | table e | | possible_keys PRIMARY | +- Unique index lookup | key e->PRIMARY | possible_keys PRIMARY | key_len 4 | ref employees.de.emp_no | rows 1 +- JOIN +- Bookmark lookup | +- Table | | table de | | possible_keys PRIMARY,emp_no,dept_no | +- Index lookup | key de->dept_no | possible_keys PRIMARY,emp_no,dept_no | key_len 4 | ref employees.d.dept_no | rows 5305 +- Table scan rows 9 +- Table table d possible_keys PRIMARYexplainは sysvar_ndb_join_pushdown の例からお借りしました
EXPLAIN FORMAT=JSON
pt-visual-explain 3.2.1
では対応していませんでした。
- 投稿日:2020-10-28T16:33:42+09:00
pmm(Percona Monitoring and Management )インストール手順
はじめに
QNAPの Container Station を利用して pmm(Percona Monitoring and Management ) をセットアップしてみたので,その作業記録です(簡潔すぎてすみません).
serverの設定
- 監視する側
- インターフェースはGrafanaなので,馴染みのある方も多いと思います
- 今回はQNAPの Container Station にて構築したため省略(数クリックでDockerコンテナを起動でき大変便利)
clientの設定
- 監視される側
- mysqlサーバはすでに導入済みであることを前提とする
pmm2-clientをyumインストール
sudo yum install pmm2-clientserverとの接続確認
<user>:<password>
の箇所はデフォルトではadmin:admin
.sudo pmm-admin config --server-insecure-tls --server-url=https://<user>:<password>@<server ip address>:443もし以下のようなエラーが出る場合は,上記コマンドに
--force
を付加して再度実行してみてください.Checking local pmm-agent status... pmm-agent is running. Registering pmm-agent on PMM Server... Failed to register pmm-agent on PMM Server: Node with name "xxxxxx" already exists..モニタリング設定投入
以下,いずれかの方法でモニタリング設定を投入する.
方法その1:MySQLユーザ名,パスワードを指定しての設定
# syntax sudo pmm-admin add mysql --username=<mysql user> --password=<mysql user password> --query-source=<query source> <service name> # example sudo pmm-admin add mysql --username=john --password=johnpass --query-source=perfschema mysqlserver001方法その2:ソケットを指定しての設定
Adding MySQL Service Monitoring
Note
It is also possible to add MySQL instance using UNIX socket with use of a special --socket flag followed with the path to a socket without username, password and network type:sudo pmm-admin add mysql --socket=/var/path/to/mysql/socketポート許可
clientのインバウンドに以下ポートを許可する必要がある.
環境に応じて,firewallなりセキュリティグループなりにポート許可設定を追加.The following ports must be open to enable communication between the PMM Server and PMM clients.
42000
For PMM to collect genenal system metrics.
42002
For PMM to collect MySQL server metrics.
42003
For PMM to collect MongoDB server metrics.
42004
For PMM to collect ProxySQL server metrics.
42005
For PMM to collect PostgreSQL server metrics.
Also PMM Server should keep ports 80 or 443 ports open for computers where PMM Client is installed to access the PMM web interface and the QAN agent.コンソール接続
ブラウザより
https://<server ip address>:443
にアクセス
初回ログイン時,パスワードの変更を求められる.
- 投稿日:2020-10-28T16:30:40+09:00
mysql 完全アンインストール+再インストール
- 投稿日:2020-10-28T16:14:02+09:00
MyCLI: MySQL、MariaDB、Perconaの自動補完機能を備えたコマンドラインインターフェース
MyCLIは、MySQL、MariaDB、Percona用の使いやすいコマンドラインインターフェイス(CLI)で、自動補完機能や構文ハイライト機能で開発のスピードアップを支援します。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
前提条件
MyCLIツールはPythonをベースにしているので、PIP経由でインストールする必要があります。pipとpython開発ライブラリがインストールされていることを確認してください。ECSインスタンスを正しくセットアップしていれば、以下の3行のコードを実行してMyCLIをインストールするだけです。
yum install python-pip yum -y install python-devel pip install mycliMyCLIの詳細
MyCLI の使い方がわからない場合は、以下に示すように、いつでも
—help
コマンドを実行して、その様々なオプションについて知ることができます。$ mycli --help Usage: mycli [OPTIONS] [DATABASE] Options: -h, --host TEXT Host address of the database. -P, --port INTEGER Port number to use for connection. Honors $MYSQL_TCP_PORT -u, --user TEXT User name to connect to the database. -S, --socket TEXT The socket file to use for connection. -p, --password TEXT Password to connect to the database --pass TEXT Password to connect to the database --ssl-ca PATH CA file in PEM format --ssl-capath TEXT CA directory --ssl-cert PATH X509 cert in PEM format --ssl-key PATH X509 key in PEM format --ssl-cipher TEXT SSL cipher to use --ssl-verify-server-cert Verify server's "Common Name" in its cert against hostname used when connecting. This option is disabled by default -v, --version Version of mycli. -D, --database TEXT Database to use. -R, --prompt TEXT Prompt format (Default: "\t \u@\h:\d> ") -l, --logfile FILENAME Log every query and its results to a file. --defaults-group-suffix TEXT Read config group with the specified suffix. --defaults-file PATH Only read default options from the given file --myclirc PATH Location of myclirc file. --auto-vertical-output Automatically switch to vertical output mode if the result is wider than the terminal width. -t, --table Display batch output in table format. --csv Display batch output in CSV format. --warn / --no-warn Warn before running a destructive query. --local-infile BOOLEAN Enable/disable LOAD DATA LOCAL INFILE. --login-path TEXT Read this path from the login file. -e, --execute TEXT Execute query to the database. --help Show this message and exit.使用例
以下のコマンドを実行して、ApsaraDB for RDSインスタンス上でMyCLIを実行するだけです。
$ mycli ®Ch{RDS DNS Alias} ®Cu{RDS User Name} -p{RDS Password}接続されると、デフォルトのCLIを使用するのと同じようにMyCLIを使用することができます。
続きを読むには
また、Alibaba Cloudでは、Alibaba Cloud CLI上で独自のコマンド自動補完機能を提供しています。詳細については、https://www.alibabacloud.com/help/doc-detail/29998.html をご覧ください。
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ
- 投稿日:2020-10-28T16:12:45+09:00
HerokuにデプロイしたMysqlのロールバック方法をメモ
はじめに
RubyOnRailsでアプリを作成しデプロイ。
Heroku上でマイグレーションファイルを実行後のベータデースのリセットをメモしておく。
● エラーメッセージから環境変数を確認
コマンドを実行
$ heroku run rake db:migrate:reset!
● 確認した環境変数 DISABLE_DATABASE_ENVIRONMENT_CHECK=1 を付与して、データベースをdropする
コマンドを実行
$ RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop
● 再生成
コマンドを実行
データベースの生成 $ heroku run rails db:create マイグレーションを実行 $ heroku run rake db:migrate参考
[Rails5] heroku db:resetからmigrateまで
Rails5のproductionでrake db:dropはできない、普通には
- 投稿日:2020-10-28T16:12:45+09:00
herokuにデプロイしたMysqlのロールバック方法をメモ
はじめに
RubyOnRailsでアプリを作成しデプロイ。
heroku上でマイグレーションファイルを実行後のベータデースのリセットをメモしておく。
● エラーメッセージから環境変数を確認
コマンドを実行
$ heroku run rake db:migrate:reset!
● 確認した環境変数 DISABLE_DATABASE_ENVIRONMENT_CHECK=1 を付与して、データベースをdropする
コマンドを実行
$ RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop
● 再生成
コマンドを実行
データベースの生成 $ heroku run rails db:create マイグレーションを実行 $ heroku run rake db:migrate参考
[Rails5] heroku db:resetからmigrateまで
Rails5のproductionでrake db:dropはできない、普通には
- 投稿日:2020-10-28T15:15:17+09:00
[OCI] 定期的にMySQL DBシステムのmysqldumpを取得して、他のリージョンのObject Storageに保管してみた
はじめに
OCIのMySQL DSには便利な自動バックアップの機能がありますが、バックアップを別のリージョンに転送することができません。(2020年10月現在)
そこで、ComputeインスタンスにMySQL ClientとOCI CLIをインストールし、自動的に毎日mysqldumpで取得したダンプファイルを別のリージョンのObject Storageに転送する簡易DR構成を構築してみました。
作業の流れ
- オブジェクト・ライフサイクル・ポリシーを利用するためのポリシー設定
- オブジェクト・ストレージ・バケットの作成
- ライフサイクル・ポリシーの作成
- Computeインスタンスの作成
- タイムゾーン/ロケールの設定
- MySQLクライアントのインストールと設定
- OCI CLIのインストールと設定
- シェルスクリプトの作成
- crontabへの登録
1. オブジェクト・ライフサイクル・ポリシーを利用するためのポリシー設定
オブジェクト・ライフサイクル・ポリシーを利用するためには、以下のようなポリシーをrootコンパートメントに割り当てる必要があります。
Allow service objectstorage-<region_identifier> to manage object-family in compartment <compartment_name> Allow service objectstorage-<region_identifier> to manage object-family in tenancy例えば、Osakaリージョンでテナント全体でオブジェクト・ライフサイクル・ポリシーを利用する場合は、以下のようなポリシー・ステートメントになります。
Allow service objectstorage-ap-osaka-1 to manage object-family in tenancy以下の手順で、ポリシーをrootコンパートメントに割り当てます。
「コンソールメニュー」 → 「アイデンディディ」 → 「ポリシー」
「ポリシーの作成」をクリック
名前:ObjectStoragePolicy
説明:Policy for Object Life Cycle Policy in Osaka
コンパートメント:root(ルート)
ポリシービルダー:
「カスタマイズ」をクリック
以下を入力
Allow service objectstorage-ap-osaka-1 to manage object-family in tenancy
「作成」をクリック2. オブジェクト・ストレージ・バケットの作成
以下の手順で、dumpファイル保存用のバケットを作成します。
「コンソールメニュー」 → 「オブジェクト・ストレージ」 → 「オブジェクト・ストレージ」「バケットの作成」をクリック
バケット名:MySQLdump
ストレージ層:「標準」を選択
オブジェクト・イベントの出力:チェックをオン
暗号化:「ORACLE管理キーを使用した暗号化」を選択
「バケットの作成」をクリック3. ライフサイクル・ポリシーの作成
以下の手順で、オブジェクト・ストレージ・バケットのライフサイクル・ポリシーを作成します。
こちらの例では、バケット内に作成されたオブジェクトは8日後にアーカイブされ、30日後に削除されるポリシーを設定しています。「コンソールメニュー」 → 「オブジェクト・ストレージ」 → 「オブジェクト・ストレージ」
バケット名「MySQLdump」をクリック
左下のリソース欄の「ライフサイクル・ポリシー・ルール」をクリック
「ルールの作成」をクリック
名前:Archive Rule for Backup
ターゲット:「オブジェクト」を選択
ライフサイクル・アクション:「アーカイブ」を選択
日数:8
「作成」をクリック
「ルールの作成」をクリック
名前:Delete Rule for Backup
ターゲット:「オブジェクト」を選択
ライフサイクル・アクション:「削除」を選択
日数:30
「作成」をクリック4. Computeインスタンスの作成
こちらの記事のネットワーク構成を前提とします。
OCIのネットワークを構成する際に手戻りの少ない手順を考えてみる(初心者向け)
「コンソールメニュー」 → 「コンピュート」 → 「インスタンス」
「インスタンスの作成」をクリック
・名前:AP1
・コンパートメントに作成:任意のコンパートメントを選択・配置とハードウェアの構成
・可用性ドメイン:任意のADを選択
・イメージ:「Oracle Linux 7.8」を選択
・シェイプ:任意のシェイプを選択・ネットワーキングの構成
・ネットワーク:「既存の仮想クラウド・ネットワークを選択」を選択し、「VCN1」を選択
・サブネット:「既存のサブネット」を選択し、「Subnet 1」を選択
・ネットワーク・セキュリティ・グループを使用してトラフィックを制御:チェックをオン
・ネットワーク・セキュリティ・グループ:「Network Security Group for AP」を選択
・パブリックIPアドレス:「パブリックIPアドレスの割当て」を選択
SSHキーの追加
・「公開キー・ファイルの選択」を選択し、「または場所を参照します」をクリックして公開キー・ファイルをアップロードします
ブートボリュームの構成
・全てデフォルトのまま・「作成」をクリック
5. タイムゾーン/ロケールの設定
sudo timedatectl set-timezone Asia/Tokyo sudo localectl set-locale LANG=ja_JP.utf86. MySQLクライアントのインストールと設定
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum install -y mysql-community-clientMySQLクライアントの設定(接続情報)ファイルを作成します。
ここでは、MySQL DBシステムの接続情報が以下であると仮定します。
ホスト名 mysql1.subnet2.vcn1.oraclevcn.com ユーザ名 admin パスワード Demo#1Demo#1 vi .my.cnf/home/opc/.my.cnf[client] user=admin password="Demo#1Demo#1" host="mysql1.subnet2.vcn1.oraclevcn.com"7. OCI CLIのインストールと設定
こちらのドキュメントを参考に、 OCI CLIをインストールします。
Oracle Cloud Infrastructure ドキュメント:コマンドライン・インタフェース クイックスタート8. cron実行用のシェルスクリプトの作成
mysqldumpの出力先となるdumpディレクトリを作成し、そこにcron実行用のシェルスクリプトを作成します。
mkdir dump vi /home/opc/dump/daily_dump.sh/home/opc/dump/daily_dump.shecho echo "START:"`date` FILE="/home/opc/dump/dump"`date "+%Y%m%d_%H%M%S"`".dmp" echo "Filename:"$FILE mysqldump --set-gtid-purged=OFF testdb > $FILE echo "mysqldump to" $FILE "finished successfully." /home/opc/bin/oci os object put -ns nrhnlrqdttaw -bn MySQLdump --file $FILE echo $FILE "was uploaded to Object Storage successfully." rm $FILE echo $FILE "was deleted successfully." echo "END:"`date`作成したシェルスクリプトのパーミッションを変更します。
chmod +x /home/opc/dump/daily_dump.sh作成したシェルスクリプトをcrontabに登録します。
以下の例では、5分毎にスクリプトを実行します。crontab -ecrontab*/5 * * * * /home/opc/dump/daily_dump.sh >> /tmp/daily_dump.log 2>&1正常実行時のログファイルの内容は以下のようになります。
/tmp/daily_dump.logSTART:Tue Oct 27 23:10:01 JST 2020 Filename:/home/opc/dump/dump20201027_231001.dmp mysqldump to /home/opc/dump/dump20201027_231001.dmp finished successfully. Uploading object { "etag": "a2a48c0f-e93f-4a8d-9f5b-aa5f472b8b7a", "last-modified": "Tue, 27 Oct 2020 14:10:08 GMT", "opc-content-md5": "rYFQSKQvKu1a9S55Zt4+Sg==" } /home/opc/dump/dump20201027_231001.dmp was uploaded to Object Storage successfully. /home/opc/dump/dump20201027_231001.dmp was deleted successfully. END:Tue Oct 27 23:10:09 JST 2020 START:Tue Oct 27 23:15:01 JST 2020 Filename:/home/opc/dump/dump20201027_231501.dmp mysqldump to /home/opc/dump/dump20201027_231501.dmp finished successfully. Uploading object { "etag": "44389267-d657-4bf2-97c2-c137f723115b", "last-modified": "Tue, 27 Oct 2020 14:15:08 GMT", "opc-content-md5": "G5aa3pt9yybDKfDnveyy2w==" } /home/opc/dump/dump20201027_231501.dmp was uploaded to Object Storage successfully. /home/opc/dump/dump20201027_231501.dmp was deleted successfully. END:Tue Oct 27 23:15:09 JST 2020 . . .
- 投稿日:2020-10-28T15:15:17+09:00
定期的にMySQL DBシステムのmysqldumpを取得して、他のリージョンのObject Storageに保管してみた
はじめに
OCIのMySQL DSには便利な自動バックアップの機能がありますが、バックアップを別のリージョンに転送することができません。(2020年10月現在)
そこで、ComputeインスタンスにMySQL ClientとOCI CLIをインストールし、自動的に毎日mysqldumpで取得したダンプファイルを別のリージョンのObject Storageに転送する簡易DR構成を構築してみました。
作業の流れ
- オブジェクト・ライフサイクル・ポリシーを利用するためのポリシー設定
- オブジェクト・ストレージ・バケットの作成
- ライフサイクル・ポリシーの作成
- Computeインスタンスの作成
- タイムゾーン/ロケールの設定
- MySQLクライアントのインストールと設定
- OCI CLIのインストールと設定
- シェルスクリプトの作成
- crontabへの登録
1. オブジェクト・ライフサイクル・ポリシーを利用するためのポリシー設定
オブジェクト・ライフサイクル・ポリシーを利用するためには、以下のようなポリシーをrootコンパートメントに割り当てる必要があります。
Allow service objectstorage-<region_identifier> to manage object-family in compartment <compartment_name> Allow service objectstorage-<region_identifier> to manage object-family in tenancy例えば、Osakaリージョンでテナント全体でオブジェクト・ライフサイクル・ポリシーを利用する場合は、以下のようなポリシー・ステートメントになります。
Allow service objectstorage-ap-osaka-1 to manage object-family in tenancy以下の手順で、ポリシーをrootコンパートメントに割り当てます。
「コンソールメニュー」 → 「アイデンディディ」 → 「ポリシー」
「ポリシーの作成」をクリック
名前:ObjectStoragePolicy
説明:Policy for Object Life Cycle Policy in Osaka
コンパートメント:root(ルート)
ポリシービルダー:
「カスタマイズ」をクリック
以下を入力
Allow service objectstorage-ap-osaka-1 to manage object-family in tenancy
「作成」をクリック2. オブジェクト・ストレージ・バケットの作成
以下の手順で、dumpファイル保存用のバケットを作成します。
「コンソールメニュー」 → 「オブジェクト・ストレージ」 → 「オブジェクト・ストレージ」「バケットの作成」をクリック
バケット名:MySQLdump
ストレージ層:「標準」を選択
オブジェクト・イベントの出力:チェックをオン
暗号化:「ORACLE管理キーを使用した暗号化」を選択
「バケットの作成」をクリック3. ライフサイクル・ポリシーの作成
以下の手順で、オブジェクト・ストレージ・バケットのライフサイクル・ポリシーを作成します。
こちらの例では、バケット内に作成されたオブジェクトは8日後にアーカイブされ、30日後に削除されるポリシーを設定しています。「コンソールメニュー」 → 「オブジェクト・ストレージ」 → 「オブジェクト・ストレージ」
バケット名「MySQLdump」をクリック
左下のリソース欄の「ライフサイクル・ポリシー・ルール」をクリック
「ルールの作成」をクリック
名前:Archive Rule for Backup
ターゲット:「オブジェクト」を選択
ライフサイクル・アクション:「アーカイブ」を選択
日数:8
「作成」をクリック
「ルールの作成」をクリック
名前:Delete Rule for Backup
ターゲット:「オブジェクト」を選択
ライフサイクル・アクション:「削除」を選択
日数:30
「作成」をクリック4. Computeインスタンスの作成
こちらの記事のネットワーク構成を前提とします。
OCIのネットワークを構成する際に手戻りの少ない手順を考えてみる(初心者向け)
「コンソールメニュー」 → 「コンピュート」 → 「インスタンス」
「インスタンスの作成」をクリック
・名前:AP1
・コンパートメントに作成:任意のコンパートメントを選択・配置とハードウェアの構成
・可用性ドメイン:任意のADを選択
・イメージ:「Oracle Linux 7.8」を選択
・シェイプ:任意のシェイプを選択・ネットワーキングの構成
・ネットワーク:「既存の仮想クラウド・ネットワークを選択」を選択し、「VCN1」を選択
・サブネット:「既存のサブネット」を選択し、「Subnet 1」を選択
・ネットワーク・セキュリティ・グループを使用してトラフィックを制御:チェックをオン
・ネットワーク・セキュリティ・グループ:「Network Security Group for AP」を選択
・パブリックIPアドレス:「パブリックIPアドレスの割当て」を選択
SSHキーの追加
・「公開キー・ファイルの選択」を選択し、「または場所を参照します」をクリックして公開キー・ファイルをアップロードします
ブートボリュームの構成
・全てデフォルトのまま・「作成」をクリック
5. タイムゾーン/ロケールの設定
sudo timedatectl set-timezone Asia/Tokyo sudo localectl set-locale LANG=ja_JP.utf86. MySQLクライアントのインストールと設定
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum install -y mysql-community-clientMySQLクライアントの設定(接続情報)ファイルを作成します。
ここでは、MySQL DBシステムの接続情報が以下であると仮定します。
ホスト名 mysql1.subnet2.vcn1.oraclevcn.com ユーザ名 admin パスワード Demo#1Demo#1 vi .my.cnf/home/opc/.my.cnf[client] user=admin password="Demo#1Demo#1" host="mysql1.subnet2.vcn1.oraclevcn.com"7. OCI CLIのインストールと設定
こちらのドキュメントを参考に、 OCI CLIをインストールします。
Oracle Cloud Infrastructure ドキュメント:コマンドライン・インタフェース クイックスタート8. cron実行用のシェルスクリプトの作成
mysqldumpの出力先となるdumpディレクトリを作成し、そこにcron実行用のシェルスクリプトを作成します。
mkdir dump vi /home/opc/dump/daily_dump.sh/home/opc/dump/daily_dump.shecho echo "START:"`date` FILE="/home/opc/dump/dump"`date "+%Y%m%d_%H%M%S"`".dmp" echo "Filename:"$FILE mysqldump --set-gtid-purged=OFF testdb > $FILE echo "mysqldump to" $FILE "finished successfully." /home/opc/bin/oci os object put -ns nrhnlrqdttaw -bn MySQLdump --file $FILE echo $FILE "was uploaded to Object Storage successfully." rm $FILE echo $FILE "was deleted successfully." echo "END:"`date`作成したシェルスクリプトのパーミッションを変更します。
chmod +x /home/opc/dump/daily_dump.sh作成したシェルスクリプトをcrontabに登録します。
以下の例では、5分毎にスクリプトを実行します。crontab -ecrontab*/5 * * * * /home/opc/dump/daily_dump.sh >> /tmp/daily_dump.log 2>&1正常実行時のログファイルの内容は以下のようになります。
/tmp/daily_dump.logSTART:Tue Oct 27 23:10:01 JST 2020 Filename:/home/opc/dump/dump20201027_231001.dmp mysqldump to /home/opc/dump/dump20201027_231001.dmp finished successfully. Uploading object { "etag": "a2a48c0f-e93f-4a8d-9f5b-aa5f472b8b7a", "last-modified": "Tue, 27 Oct 2020 14:10:08 GMT", "opc-content-md5": "rYFQSKQvKu1a9S55Zt4+Sg==" } /home/opc/dump/dump20201027_231001.dmp was uploaded to Object Storage successfully. /home/opc/dump/dump20201027_231001.dmp was deleted successfully. END:Tue Oct 27 23:10:09 JST 2020 START:Tue Oct 27 23:15:01 JST 2020 Filename:/home/opc/dump/dump20201027_231501.dmp mysqldump to /home/opc/dump/dump20201027_231501.dmp finished successfully. Uploading object { "etag": "44389267-d657-4bf2-97c2-c137f723115b", "last-modified": "Tue, 27 Oct 2020 14:15:08 GMT", "opc-content-md5": "G5aa3pt9yybDKfDnveyy2w==" } /home/opc/dump/dump20201027_231501.dmp was uploaded to Object Storage successfully. /home/opc/dump/dump20201027_231501.dmp was deleted successfully. END:Tue Oct 27 23:15:09 JST 2020 . . .
- 投稿日:2020-10-28T14:52:44+09:00
MySQLのtime_zoneを設定する方法
Windows以外はいつかやった時に書く・・・つもり
Windows
- 環境
- Windows10 Pro バージョン1909
- Server version: 8.0.19 MySQL Community Server - GPL
- 参考 : MariaDB (MySQL) のタイムゾーン、タイムゾーンテーブルを設定する
本当は
system_time_zone
をJSTに設定したかったがわからず・・・設定前
mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set, 1 warning (0.03 sec)方法
- MySQL :: Time zone description tablesを表示する
- [POSIX standard]のzipファイルをダウンロードする
- 今回ダウンロードしたのはtimezone_2020b_posix_sql.zip
- zipファイルを任意の場所に解凍する
- zipから出てきた
timezone_posix.sql
をデータベースmysql
に対して実行する
- うっかり自分が使っているDBを指定すると
ERROR 1146 (42S02) at line 1: Table 'mydb.time_zone' doesn't exist
と怒られる- my.iniの
[mysqld]
にdefault-time-zone = 'Asia/Tokyo'
を追記する- MySQLを再起動する
# zipファイルを任意の場所に解凍する $ unzip /c/Users/ponsuke/Downloads/timezone_2020b_posix_sql.zip -d /c/apps/mysql-8.0.19-winx64/ Archive: /c/Users/ponsuke/Downloads/timezone_2020b_posix_sql.zip creating: /c/apps/mysql-8.0.19-winx64/timezone_2020b_posix_sql/ inflating: /c/apps/mysql-8.0.19-winx64/timezone_2020b_posix_sql/timezone_posix.sql # zipから出てきたtimezone_posix.sqlを実行する(GitBashは対話できないのでパスワードを直指定) $ mysql -u root -D mysql -ppassword < /c/apps/mysql-8.0.19-winx64/timezone_2020b_posix_sql/timezone_posix.sql mysql: [Warning] Using a password on the command line interface can be insecure. # my.iniに追記する $ cat /c/apps/mysql-8.0.19-winx64/my.ini [mysqld] default-time-zone = 'Asia/Tokyo' # ...省略... # MySQLを再起動する $ sc stop MySQL80 SERVICE_NAME: MySQL80 TYPE : 10 WIN32_OWN_PROCESS STATE : 3 STOP_PENDING (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x1 WAIT_HINT : 0x5265c00 $ sc start MySQL80 SERVICE_NAME: MySQL80 TYPE : 10 WIN32_OWN_PROCESS STATE : 2 START_PENDING (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x3 WAIT_HINT : 0x3a98 PID : 7756 FLAGS : # GitBashを使っているのでwinptyをつけて接続 $ winpty mysql -u ponsuke -D mydb -p Enter password: ******* Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.19 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show variables like '%time_zone%'; +------------------+------------+ | Variable_name | Value | +------------------+------------+ | system_time_zone | | | time_zone | Asia/Tokyo | +------------------+------------+ 2 rows in set, 1 warning (0.01 sec)
- 投稿日:2020-10-28T14:35:00+09:00
AWSを使ったWordPress環境構築(冗長構成)
事前準備
構成はWebサーバ1台、DBサーバ1台です。
環境
環境 IP Webサーバ 10.0.1.1 DBサーバ 10.0.2.1 DBサーバの操作
- DBサーバに接続する。
直接SSHで接続するか、Webサーバを経由して接続してください。
MySQL Yum RepositoryからMySQL5.7をインストールする。
- Yumリポジトリの情報のインストール
$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
- MySQL8.0リポジトリを無効にし、MySQL5.7リポジトリを有効にする
$ sudo yum-config-manager --disable mysql80-community $ sudo yum-config-manager --enable mysql57-community #適用されているか確認 $ cat /etc/yum.repos.d/mysql-community.repo
- MySQLのインストール・起動
$ sudo yum install -y mysql-community-server $ sudo systemctl start mysqld
- MySQLの初期パスワードの確認
$ sudo cat /var/log/mysqld.log | grep root@localhost [Note] A temporary password is generated for root@localhost: 12桁の文字列
- MySQLのパスワード変更
$ mysqladmin -uroot -p password Enter password:古いパスワード New password:新しいパスワード Confirm new password:新しいパスワード #Warnigがでても変更はできています Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
- WordPress用のDB・ユーザーを作成する
$ mysql -uroot -p Enter password:設定したパスワード #WordPress用のユーザー作成 mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpressユーザーのパスワード'; #WordPress用のDB作成 mysql> CREATE DATABASE `wordpress`; #DB権限を作成したユーザーに付与 mysql> GRANT ALL PRIVILEGES ON `wordpress`.* TO "wordpress"@"10.0.1.1"; #設定反映 mysql> FLUSH PRIVILEGES; mysql> EXIT;※サブネットマスクはワイルドカード方式を用いることで指定できる。
'10.0.1.%'
Webサーバの操作
- WordPressのDBダンプを取得
$ sudo systemctl start mysqld $ mysqldump -uroot -p wordpress | gzip > wordpress.dump.gz Enter password: #WebサーバのMySQLの停止 $ sudo systemctl stop mysqld #ダンプをリストア $ zcat wordpress.dump.gz | mysql -h 10.0.2.1 -uwordpress -p wordpress
- WordPressの設定変更
# WordPessの設定を変更 $ sudo vim wordpress/wp-config.php /** WordPress のためのデータベース名 */ define( 'DB_NAME', 'wordpress' ); /** MySQL データベースのユーザー名 */ define( 'DB_USER', 'wordpress' ); /** MySQL データベースのパスワード */ define( 'DB_PASSWORD', 'パスワード' ); /** MySQL のホスト名 */ define( 'DB_HOST', '10.0.2.1' ); # サービスリロード $ sudo systemctl reload httpd
- 投稿日:2020-10-28T14:35:00+09:00
初心者がWordPress環境構築してみた(冗長構成)
事前準備
構成はWebサーバ1台、DBサーバ1台です。
環境
環境 IP Webサーバ 10.0.1.1 DBサーバ 10.0.2.1 DBサーバの操作
- DBサーバに接続する。
直接SSHで接続するか、Webサーバを経由して接続してください。
MySQL Yum RepositoryからMySQL5.7をインストールする。
- Yumリポジトリの情報のインストール
$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
- MySQL8.0リポジトリを無効にし、MySQL5.7リポジトリを有効にする
$ sudo yum-config-manager --disable mysql80-community $ sudo yum-config-manager --enable mysql57-community #適用されているか確認 $ cat /etc/yum.repos.d/mysql-community.repo
- MySQLのインストール・起動
$ sudo yum install -y mysql-community-server $ sudo systemctl start mysqld
- MySQLの初期パスワードの確認
$ sudo cat /var/log/mysqld.log | grep root@localhost [Note] A temporary password is generated for root@localhost: 12桁の文字列
- MySQLのパスワード変更
$ mysqladmin -uroot -p password Enter password:古いパスワード New password:新しいパスワード Confirm new password:新しいパスワード #Warnigがでても変更はできています Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
- WordPress用のDB・ユーザーを作成する
$ mysql -uroot -p Enter password:設定したパスワード #WordPress用のユーザー作成 mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpressユーザーのパスワード'; #WordPress用のDB作成 mysql> CREATE DATABASE `wordpress`; #DB権限を作成したユーザーに付与 mysql> GRANT ALL PRIVILEGES ON `wordpress`.* TO "wordpress"@"10.0.1.1"; #設定反映 mysql> FLUSH PRIVILEGES; mysql> EXIT;※サブネットマスクはワイルドカード方式を用いることで指定できる。
'10.0.1.%'
Webサーバの操作
- WordPressのDBダンプを取得
$ sudo systemctl start mysqld $ mysqldump -uroot -p wordpress | gzip > wordpress.dump.gz Enter password: #WebサーバのMySQLの停止 $ sudo systemctl stop mysqld #ダンプをリストア $ zcat wordpress.dump.gz | mysql -h 10.0.2.1 -uwordpress -p wordpress
- WordPressの設定変更
# WordPessの設定を変更 $ sudo vim wordpress/wp-config.php /** WordPress のためのデータベース名 */ define( 'DB_NAME', 'wordpress' ); /** MySQL データベースのユーザー名 */ define( 'DB_USER', 'wordpress' ); /** MySQL データベースのパスワード */ define( 'DB_PASSWORD', 'パスワード' ); /** MySQL のホスト名 */ define( 'DB_HOST', '10.0.2.1' ); # サービスリロード $ sudo systemctl reload httpd