結論
/etc/mysql/mysql.conf.d/mysqld.cnf
のbind-address
の設定を変更して、MySQL を再起動しましょう。一番てっとり早いのはbind-address
をコメントアウトすることです*1。
補足
ユーザ単位での許可も忘れないようにしましょう。
*1:とりあえずは、ということです
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
の部分はプラグインがパースしている部分なので、カンマの後にスペースがあると正しくパースできないというのは当然だとは思います。一般的な言語でのコードを書く感覚でカンマの後にスペースを入れているとハマってしまいますね。
MySQL 8 では以下の作業は必要がなく、インストール直後に期待する結果(「反映されているか確認する」で表示されている結果)になっていました。
バージョン違いやディストリビューションの違いがあるので、改めて Ubuntu 16.04 LTS の場合をここに。
2つのファイルを以下のようにして(書き加えて)、再起動する。sed -i -e
を使ってもいいでしょう。
[mysql] default-character-set=utf8mb4
[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_system
はutf8
で問題ありません。
COPY コマンドより便利な pg_bulkloadですが*1、Ubuntu ですとコンパイルしなければなりません。
コンパイルのためには以下をapt-get
しましょう*2。postgresql-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 からソースを落としてきてmake
、make install
でオッケーです。生成されたバイナリは/usr/local/bin
あたりに置いとけばよいでしょう。