Ubuntu 16.04 LTS の MySQL にて外部のアドレスから接続する方法

結論

/etc/mysql/mysql.conf.d/mysqld.cnfbind-addressの設定を変更して、MySQL を再起動しましょう。一番てっとり早いのはbind-addressをコメントアウトすることです*1

補足

ユーザ単位での許可も忘れないようにしましょう。

*1:とりあえずは、ということです

fluent-plugin-postgres の key_names の設定でハマった話

fluent-plugin-postgres

Fluentd の plugin にfluent-plugin-postgresという PostgreSQL 用の plugin があります。こいつの設定(conf ファイルでの記述)でハマった話です。

正常に動作しない記述

以下のような conf を書くと正しく動作しません。

<match mysql_replicator>
  @type postgres
  host hostname
  port 5432
  database hogehoge
  username foo
  password bar
  key_names id, name, age, gender
  sql INSERT INTO fugafuga.members (id, name, age, gender) VALUES ($1, $2, $3, $4)
</match>

なぜか。それはkey_namesのキーの区切りにおいて、カンマの後に空白があるからです。したがって次のように書けば正しく動作します。

正常に動作する記述

<match mysql_replicator>
  @type postgres
  host hostname
  port 5432
  database hogehoge
  username foo
  password bar
  key_names id,name,age,gender
  sql INSERT INTO fugafuga.members (id, name, age, gender) VALUES ($1, $2, $3, $4)
</match>

所感

このkey_namesの部分はプラグインがパースしている部分なので、カンマの後にスペースがあると正しくパースできないというのは当然だとは思います。一般的な言語でのコードを書く感覚でカンマの後にスペースを入れているとハマってしまいますね。

Ubuntu 16.04 LTS にて MySQL の文字コードを utf8mb4 にする方法

補足

MySQL 8 では以下の作業は必要がなく、インストール直後に期待する結果(「反映されているか確認する」で表示されている結果)になっていました。

設定ファイルを書き換える

バージョン違いやディストリビューションの違いがあるので、改めて Ubuntu 16.04 LTS の場合をここに。

結論

2つのファイルを以下のようにして(書き加えて)、再起動する。sed -i -eを使ってもいいでしょう。

/etc/mysql/conf.d/mysql.cnf

[mysql]
default-character-set=utf8mb4

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
character-set-server=utf8mb4

再起動

$ sudo service mysql restart

反映されているか確認する

mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> 

character_set_systemutf8で問題ありません。

「アライアンス・アライブ」の公式 Twitter にて、村山さんとの交渉の経緯がツイートされる

「アライアンス・アライブ」

2017/03/30 に発売が予定されている「アライアンス・アライブ」ですが、公式 Twitter にて注目すべき内容がツイートがされました。

f:id:gregminster:20170122214605j:plain

続きを読む

Ubuntu 16.04 LTS に pg_bulkload をインストールする方法

pg_bulkload

COPY コマンドより便利な pg_bulkloadですが*1、Ubuntu ですとコンパイルしなければなりません。

必要なものを入れていく

コンパイルのためには以下をapt-getしましょう*2postgresql-server-devは各自のバージョンに合わせて番号を変更してください。

# apt-get install libpq-dev
# apt-get install libreadline-dev
# apt-get install libpam0g-dev
# apt-get install postgresql-server-dev-9.5
# apt-get install ledit
# apt-get install libedit-dev

コンパイル

あとは GitHub からソースを落としてきてmakemake installでオッケーです。生成されたバイナリは/usr/local/binあたりに置いとけばよいでしょう。

*1:例えば主キーが重複している場合、COPY だと問答無用で全てインポート失敗になるが、pg_bulkload だと DUPLICATE_ERRORS = -1 でスキップできる

*2:もしかしたら一部不要かも

Powered by はてなブログ