Philosophy is to the real world as ...

インフラ関連がメインです。

cssについて

本日学んだこと

  • boxの中身について再確認

boxは外から以下のように構成されている。
[box] -> [margin] -> [border] -> [padding] -> [content(textや画像)]

  • box_sizing

box_sizingのprefixに「-moz」、「-webkit」とかある場合は、ベンダープレフィックスの意味で、
FIrefoxとかChromeに適用するという意味。で、下記のように設定するとborderやpaddingもboxのsizeに
含んでくれる。

  • webkit-box-sizing: border-box;
  • overflow

boxに入りきらない要素をどう表示するか。autoを選択すると、ブラウザに依存するがだいたい
スクロールして見られるようになる。

  • text-align

テキストの整列(align)。leftで左揃えしたり、centerで中央揃えしたりする。

  • font-size指定時の「em」とは?

こちらのリンクが参考になる。
d.hatena.ne.jp

  • float

「浮く」というのが直訳。実際には、左or右に寄せて表示するためのプロパティ。意味的になんとなくわかる気もする。。。

mysql5.7 Replicationについて(2)

今回は非同期レプリケーションについて実際にやってみた。

環境構築

AWS上に下記の環境を2台用意

  • CentOS 7.2 x 2
  • MySQL 5.7 インストール (インストール方法は下記を参照)

weblabo.oscasierra.net

  • MySQLの初期設定を実施

weblabo.oscasierra.net

masterの設定

  • my.cnfを下記の通り設定し、サーバRestart
log-bin=mysql-bin   # バイナリログのファイル名prefix
server-id=1  # MySQLサーバ固有のID(1 〜 (2^32)−1)
  • mysqlにログインしユーザ作成 (ユーザ名、パスワード、ホストは適当な値にする)
  • masterのバイナリログファイルのpositionを確認
[centos@ip-192-168-120-242 ~]$ mysql -u root -p
Enter password:
...
mysql> use mysql
mysql> create user 'repl'@'192.168.120.%' IDENTIFIED BY 'xxxx';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.120.%';
Query OK, 0 rows affected (0.00 sec)

mysql> select Host,User from user;
+---------------+-----------+
| Host          | User      |
+---------------+-----------+
| 192.168.120.% | repl      | <===ユーザが作成されている
| localhost     | mysql.sys |
| localhost     | root      |
+---------------+-----------+

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      325 |              |                  |                   | <===positionを確認
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

slave側での設定

  • my.cnfを下記の通り設定し、MySQLをRestart
server-id=2
[centos@ip-192-168-120-49 ~]$ mysql -u root -p
Enter password:
...
mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.120.242',
    -> MASTER_USER='repl',
    -> MASTER_PASSWORD='xxxx',
    -> MASTER_LOG_FILE='mysql-bin.00001',
    -> MASTER_LOG_POS=325;

mysql> exit
Bye
[centos@ip-192-168-120-49 ~]$ sudo systemctl restart mysqld.service

動作確認

  • masterにてデータベース作成
mysql> create database repltest;
Query OK, 1 row affected (0.00 sec)
mysql> create database repltest;
Query OK, 1 row affected (0.00 sec)

ということで非同期レプリケーションは実際に確認できた。
また、その他の機能でマルチマスターレプリケーションとかバイナリログの記録形式とか設定できるようだけれどもそれはまたの機会とする。

mysql5.7 Replicationについて(1)

mysql5.7のReferenceを読みつつReplicationの概要をまとめる。
MySQL :: MySQL 5.7 Reference Manual :: 18 Replication

Replicationの利点

  • 参照のパフォーマンス向上 --- writeはmaster、readはslaveという役割分担をすることで書き込み時のlock処理による参照遅延がなくなり性能向上につながる。
  • 本番稼動中にbackup取得が簡単 --- slaveサーバにデータをコピーしているため、slaveを停止して(masterを稼動したまま)バックアップを取得するとこが出来る。
  • 分析用にも使える --- masterノードに負荷をかけずにslaveノードからデータを抽出し、レポートの作成や分析が可能になる。

Replicationの種類

Replication フォーマット

バイナリログに記録するフォーマットは下記3通り

  • Statement Based Replication (SBR) 全体のSQL文を記録
  • Row Based Replication (RBR) 変更された行データを記録
  • Mixed Based Replication (MBR) 上記が混在

次回以降それぞれの方式を設定して動作させてみようと思う。
Replicationだけでも色々と方式があるので長くなりそう。。。