update-motdを停止

知らなかったのでメモ。

■ 環境

  • Amazon Linux

■ update-motd

自動で更新されたりするのが嫌なので停止してしまいたい。

$ sudo update-motd --disable

これを実行すると、自動での更新だけでなく手動更新もできなくなる。

再度motdを変更したい場合は下記のように”enable“した後に実行。そして再度”disable“にする、という手順が必要となる。

$ sudo update-motd --enable
$ sudo update-motd

以上。

SendGridのTransactionalTemplateがわからない

表題の通り。

■ 環境

  • SendGrid
  • Node.js 8.10.0

■ TransactionalTemplate

APIを使用し、SendGrid経由でメールを送りたい。APIの使い方を見たりしていてSendGridには”Template“なる機能があることを知ったので試してみた。しかし思い通りの内容のメールで送る事ができなかった…。

sendgrid-nodejs
https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/USE_CASES.md

テンプレートを適用して送信する
https://sendgrid.kke.co.jp/docs/Tutorials/A_Transaction_Mail/using_templates.html

上記URLを参照して試していたのだが、下記のような現象が…。もちろん自身のやり方がまずいのであろうが

1. ActiveなversionのTemplateが適用されない

APIを使ってメールを送ってみると、デフォルトの内容で送られてきた。反映されるのにタイムラグがあるのかと思って少々時間をおいて実施してみたが変わらず。いくつか試している中で下記のようにコメントアウトしたらTemplateに設定した内容で送られた。

const msg = {
  to: 'recipient@example.org',
  from: 'sender@example.org',
  subject: 'Hello world',
  // text: 'Hello plain world!',
  // html: '<p>Hello HTML world!</p>',
  templateId: '13b8f94f-bcae-4ec6-b752-70d6cb59f932',
  substitutions: {
    name: 'Some One',
    city: 'Denver',
  },
};

サンプルはGitHubに上がっていたものをそのまま使わせてもらっている。本文の箇所(“text“/”html“)をコメントアウトするとなぜか送る事ができた…。”subject“もTemplateで指定しているので不要だったのだが残しておいた。

2. 編集後の反映タイミングがわからない

Templateを編集した後でAPI経由でメールを送ると、編集前の状態で送られてしまう。これもタイムラグがあるのかと思い少々時間をおいて再度実施してみたが反映されず。別versionのものを作成し、”ACTIVE“を切り替え再度戻して、とやったところ反映された…。

他にも何点かよくわからない点があったが少々急ぎでいろいろ試したかったので、ここまでやったところでTemplateは一旦諦めた。後日時間がちゃんと取れる時に再挑戦することにする。

以上。

Elasticsearchのindex一覧におけるヘッダー

表題の件について。いつも忘れてしまうのでメモ。

■ 環境

  • Elasticsearch

■ /_cat/indices

indexの一覧を`curl`で取得するには下記でできる。

$ curl -s 'http://localhost:9200/_cat/indices'

数値がいくつか出てくるのだが、それぞれの項目はなんだったか忘れてしまうことがあるので何の項目かヘッダーが出たような気がするんだけど…と。

下記でヘッダーも表示できる。

$ curl -s 'http://localhost:9200/_cat/indices?v'

この`?v`を忘れてしまう事が多々ある。

List All Indices
https://www.elastic.co/guide/en/elasticsearch/reference/current/_list_all_indices.html

  • health
  • status
  • index
  • uuid
  • pri
  • rep
  • docs.count
  • docs.deleted
  • store.size
  • pri.store.size

以上。

■ 関連

Elasticsearchの_cat

テーブルに設定されているインデックス

MySQLにおいて表題の件。昨日の続きである。

■ 環境

  • MySQL 5.64

■ データサイズ

テーブルはやはり下記で良い気がする。

data_length + index_length

となると気になるのは、”index_length“が必要以上に大きいものか。ひとつのインデックスが大きいのか、単にいくつものインデックスが設定されているからなのか、を確認したい。

■ show index

下記でテーブルに設定されているインデックスの一覧を確認可能である。

show index from [table_name];

試しに実行してみると下記のように得られた。

mysql> show index from test1;
+-------+------------+---------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name                  | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+---------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| test1 |          0 | PRIMARY                   |            1 | id          | A         |        2801 |     NULL | NULL   |      | BTREE      |         |               |
| test1 |          1 | index_XXXXX_on_XXXXXXXXXX |            1 | XXXXXXXXXX  | A         |         700 |     NULL | NULL   | YES  | BTREE      |         |               |
+-------+------------+---------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.01 sec)

mysql>

Cardinality“の数が高い方がインデックスとしては有効なんだろうな、とイメージしている。本当にそうであろうか…。ちょっとしっかり考えよう。

以上。

■ 関連

データベースサイズの概算

データベースサイズの概算

MySQLにおいて表題を知りたい。現在どれくらいのサイズになっているのかな?と疑問に思ったので。

■ 環境

  • MySQL 5.6.34

■ information_schema

MySQLに”root“で接続し、”information_schema“データベースを確認する。”TABLES“テーブルに情報がありそうである。

mysql> desc tables;
+-----------------+---------------------+------+-----+---------+-------+
| Field           | Type                | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG   | varchar(512)        | NO   |     |         |       |
| TABLE_SCHEMA    | varchar(64)         | NO   |     |         |       |
| TABLE_NAME      | varchar(64)         | NO   |     |         |       |
| TABLE_TYPE      | varchar(64)         | NO   |     |         |       |
| ENGINE          | varchar(64)         | YES  |     | NULL    |       |
| VERSION         | bigint(21) unsigned | YES  |     | NULL    |       |
| ROW_FORMAT      | varchar(10)         | YES  |     | NULL    |       |
| TABLE_ROWS      | bigint(21) unsigned | YES  |     | NULL    |       |
| AVG_ROW_LENGTH  | bigint(21) unsigned | YES  |     | NULL    |       |
| DATA_LENGTH     | bigint(21) unsigned | YES  |     | NULL    |       |
| MAX_DATA_LENGTH | bigint(21) unsigned | YES  |     | NULL    |       |
| INDEX_LENGTH    | bigint(21) unsigned | YES  |     | NULL    |       |
| DATA_FREE       | bigint(21) unsigned | YES  |     | NULL    |       |
| AUTO_INCREMENT  | bigint(21) unsigned | YES  |     | NULL    |       |
| CREATE_TIME     | datetime            | YES  |     | NULL    |       |
| UPDATE_TIME     | datetime            | YES  |     | NULL    |       |
| CHECK_TIME      | datetime            | YES  |     | NULL    |       |
| TABLE_COLLATION | varchar(32)         | YES  |     | NULL    |       |
| CHECKSUM        | bigint(21) unsigned | YES  |     | NULL    |       |
| CREATE_OPTIONS  | varchar(255)        | YES  |     | NULL    |       |
| TABLE_COMMENT   | varchar(2048)       | NO   |     |         |       |
+-----------------+---------------------+------+-----+---------+-------+
21 rows in set (0.01 sec)

mysql>

DATA_LENGTH“カラムで判明できそうである。SQLでテーブルごとに取得する。これでデータベースごとにサイズを概算する。

mysql> select table_schema, sum(data_length) from tables group by table_schema;
+-----------------------+------------------+
| table_schema          | sum(data_length) |
+-----------------------+------------------+
| example               |         66027520 |
| information_schema    |                0 |
  :
mysql>

INDEX_LENGTH“も合わせて計算した方が良いのだろうか?試してみる。

mysql> select table_schema, sum(data_length + index_length) from tables group by table_schema;
+-----------------------+---------------------------------+
| table_schema          | sum(data_length + index_length) |
+-----------------------+---------------------------------+
| example               |                        83951616 |
  :

byteでの表記なので1024で順次割っていく。

mysql&gt select table_schema, sum(data_length + index_length) / 1024 as KB from tables group by table_schema;
+-----------------------+--------------+
| table_schema          | KB           |
+-----------------------+--------------+
| example               |   81984.0000 |
  :
mysql&gt select table_schema, sum(data_length + index_length) / 1024 / 1024 as MB from tables group by table_schema;
+-----------------------+---------------+
| table_schema          | MB            |
+-----------------------+---------------+
| example               |   80.06250000 |
  :

欲しい情報としてはこんな感じで十分だ。

以上。