Linux/Source/MaxScale
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
ns-lab
nowsky system-lab
DigiLoog
Linux
Windows
開始行:
*MaxScale [#s1014f46]
[[MariaDB MaxScale>+https://mariadb.com/kb/en/maxscale/]]
MariaDBのトランザクションをバックグラウンドのMariaDBにロ...
MaxScaleはMariaDBに特化しているが、同様のソフトとしてMySQ...
ソフト単体でMaxScale自体の冗長化は出来ない為、完全二重化...
VirtualIP構成を取る必要がある。
~
*インストール [#bae777be]
&size(16){&font(b){1. ビルド・インストール};};
今回はCentOS 8.0.1905・MaxScale v2.4.4でビルドを行う。
ライブラリインストールにdnfを用いているが、他ディストリを...
# dnf install openssl-devel systemd-devel sqlite-devel p...
# dnf install npm tcl cmake uuid libuuid-devel xz-devel
# wget "https://github.com/mariadb-corporation/MaxScale/...
# tar zxvf maxscale-2.4.4.tar.gz
# cd MaxScale-maxscale-2.4.4
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/maxscale-2.4...
# make
# make install
# ln -s /usr/local/maxscale-2.4.4 /usr/local/maxscale
# ln -s /usr/local/maxscale/etc/maxscale.cnf /etc/maxsca...
~
&size(16){&font(b){2. サービスファイル};};
最近のLinuxではsystemdを用いている為、MaxScale用のサービ...
今回は実行ユーザとグループを決め打ちしている為、サービス...
# groupadd maxscale
# useradd -g maxscale -d /var/run/maxscale -s /sbin/nolo...
# vi /usr/lib/systemd/system/maxscale.service
-----
[Unit]
Description=MariaDB MaxScale Database Proxy
After=network.target
[Service]
Type=forking
Restart=on-abort
PermissionsStartOnly=true
User=maxscale
Group=maxscale
PIDFile=/var/run/maxscale/maxscale.pid
ExecStart=/usr/local/maxscale/bin/maxscale -f /etc/maxsc...
Environment=ASAN_OPTIONS=abort_on_error=1
ExecStartPre=/usr/bin/install -d /var/run/maxscale -o ma...
ExecStartPre=/usr/bin/install -d /var/lib/maxscale -o ma...
TimeoutStartSec=120
LimitNOFILE=65535
LimitNPROC=65535
StartLimitBurst=0
WatchdogSec=60s
NotifyAccess=all
[Install]
WantedBy=multi-user.target
~
&size(16){&font(b){3. 起動準備};};
サービスファイルの登録と各ディレクトリを作成して起動準備...
# systemctl enable maxscale
# mkdir /var/log/maxscale
# chown maxscale.maxscale /var/log/maxscale
# echo '/usr/local/maxscale/lib64/maxscale' > /etc/ld.so...
# vi /etc/logrotate.d/maxscale_logrotate
-----
/var/log/maxscale/*.log {
ifempty
missingok
sharedscripts
postrotate
kill -USR1 `/usr/bin/pgrep maxscale`
endscript
}
~
&size(16){&font(b){4. コンフィグファイル};};
今回は下記構成を想定してコンフィグを作成する。
細かいオプションについては[[公式ドキュメント>+https://mar...
下記ではサンプルのみ掲載。
|ホスト |IPアドレス|レプリカユーザ|レプリカパスワード...
|MariaDB #01|10.0.0.1 |replicate |rep-pass ...
|MariaDB #02|10.0.0.2 |replicate |rep-pass ...
|MaxScale |10.0.0.3 |maxscale |max-pass ...
#region(コンフィグサンプル)
# vi /etc/maxscale.cnf
-----
[maxscale]
threads=auto
log_warning=1
log_notice=0
log_info=0
logdir=/var/log/maxscale
cachedir=/var/lib/maxscale
[MariaDB-Monitor]
type=monitor
module=mariadbmon
servers=DB1,DB2
user=maxscale
password=max-pass
replication_user=maxscale
replication_password=max-pass
monitor_interval=2000
auto_failover=true
auto_rejoin=true
[RO-Service]
type=service
router=readconnroute
servers=DB1,DB2
user=maxscale
password=max-pass
router_options=slave
[RW-Service]
type=service
router=readwritesplit
servers=DB1,DB2
user=maxscale
password=max-pass
master_failure_mode=error_on_write
master_reconnection=true
transaction_replay=true
causal_reads=false
max_slave_connections=100%
[RO-Listener]
type=listener
service=RO-Service
protocol=mariadbclient
address=0.0.0.0
port=3305
[RW-Listener]
type=listener
service=RW-Service
protocol=mariadbclient
address=0.0.0.0
port=3306
[DB1]
type=server
address=10.0.0.1
port=3306
protocol=mariadbbackend
[DB2]
type=server
address=10.0.0.2
port=3306
protocol=mariadbbackend
#endregion
~
*レプリケーション設定 [#n874edac]
MaxScaleのバックエンドをレプリケーション構成にしている場...
Master停止時にSlaveを自動でMasterに昇格する事が出来る。
その場合、&font(b){GTIDレプリケーションを双方向に設定};し...
MaxScaleから&font(b){レプリカメンバーの昇格・降格を行える...
- [[SmartStyle TECH BLOG>+https://www.s-style.co.jp/blog/...
- [[Qiita>+https://qiita.com/junsan50/items/c9e44f8d6b259...
- [[MySQL>+https://www.ns-lab.org/wiki/?Linux/Source/MySQ...
- MariaDB #01
・MaxScale接続ユーザ
> CREATE USER 'maxscale'@'10.0.0.3/255.255.255.255' IDEN...
> GRANT SELECT ON mysql.user TO 'maxscale'@'10.0.0.3/255...
> GRANT SELECT ON mysql.db TO 'maxscale'@'10.0.0.3/255.2...
> GRANT SELECT ON mysql.tables_priv TO 'maxscale'@'10.0....
> GRANT SHOW DATABASES ON *.* TO 'maxscale'@'10.0.0.3/25...
> GRANT REPLICATION CLIENT ON *.* TO 'maxscale'@'10.0.0....
> GRANT SUPER ON *.* TO 'maxscale'@'10.0.0.3/255.255.255...
・バイナリポジション確認
> SHOW MASTER STATUS\G;
File: mysql-bin.XXXXXX
Position: YYYYYY
Binlog_Do_DB:
Binlog_Ignore_DB:
・ダンプ取得
# mysqldump --all-databases -u root -p --master-data=2 -...
# cat dump-01.sql | grep MASTER_LOG_FILE | head -n 1
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.XXXXXX'...
・GTID確認
> SELECT BINLOG_GTID_POS("mysql-bin.XXXXXX", YYYYYY);
+--------------------------------------------+
| binlog_gtid_pos("mysql-bin.XXXXXX",YYYYYY) |
+--------------------------------------------+
| 0-NNN-NNN |
+--------------------------------------------+
・インポート
# mysql -f -u root -p < dump-02.sql
# mysql -u root -p
・GTIDレプリケーション
> STOP SLAVE;
> SET GLOBAL GTID_SLAVE_POS = '0-NNN-NNN';
> CHANGE MASTER TO MASTER_HOST='10.0.0.2', MASTER_USER='...
> START SLAVE;
> SHOW SLAVE STATUS\G;
- MariaDB #02
・MaxScale接続ユーザ
> CREATE USER 'maxscale'@'10.0.0.3/255.255.255.255' IDEN...
> GRANT SELECT ON mysql.user TO 'maxscale'@'10.0.0.3/255...
> GRANT SELECT ON mysql.db TO 'maxscale'@'10.0.0.3/255.2...
> GRANT SELECT ON mysql.tables_priv TO 'maxscale'@'10.0....
> GRANT SHOW DATABASES ON *.* TO 'maxscale'@'10.0.0.3/25...
> GRANT REPLICATION CLIENT ON *.* TO 'maxscale'@'10.0.0....
> GRANT SUPER ON *.* TO 'maxscale'@'10.0.0.3/255.255.255...
・バイナリポジション確認
> SHOW MASTER STATUS\G;
File: mysql-bin.AAAAAA
Position: BBBBBB
Binlog_Do_DB:
Binlog_Ignore_DB:
・ダンプ取得
# mysqldump --all-databases -u root -p --master-data=2 -...
# cat dump-02.sql | grep MASTER_LOG_FILE | head -n 1
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.AAAAAA'...
・GTID確認
> SELECT BINLOG_GTID_POS("mysql-bin.AAAAAA", BBBBBB);
+--------------------------------------------+
| binlog_gtid_pos("mysql-bin.AAAAAA",BBBBBB) |
+--------------------------------------------+
| 0-MMM-MMM |
+--------------------------------------------+
・インポート
# mysql -f -u root -p < dump-01.sql
# mysql -u root -p
・GTIDレプリケーション
> STOP SLAVE;
> SET GLOBAL GTID_SLAVE_POS = '0-MMM-MMM';
> CHANGE MASTER TO MASTER_HOST='10.0.0.1', MASTER_USER='...
> START SLAVE;
> SHOW SLAVE STATUS\G;
~
*ステータス確認 [#b34bca66]
MaxScaleに同梱されているmaxctrlコマンドで、メンバーDBの稼...
レプリカメンバーの自動昇格を有効化している場合もmaxctrlコ...
# maxctrl list services
┌────────────────┬────────────────┬─────────────┬───────...
│ Service │ Router ...
├────────────────┼────────────────┼─────────────┼───────...
│ RO-Service │ readconnroute ...
├────────────────┼────────────────┼─────────────┼───────...
│ RW-Service │ readwritesplit ...
└────────────────┴────────────────┴─────────────┴───────...
# maxctrl list servers
┌───────┬───────────┬──────┬─────────────┬──────────────...
│ Server │ Address │ Port │ Con...
├───────┼───────────┼──────┼─────────────┼──────────────...
│ DB1 │ 10.0.0.1 │ 3306 │ 0 ...
├───────┼───────────┼──────┼─────────────┼──────────────...
│ DB2 │ 10.0.0.2 │ 3306 │ 0 ...
└───────┴───────────┴──────┴─────────────┴──────────────...
終了行:
*MaxScale [#s1014f46]
[[MariaDB MaxScale>+https://mariadb.com/kb/en/maxscale/]]
MariaDBのトランザクションをバックグラウンドのMariaDBにロ...
MaxScaleはMariaDBに特化しているが、同様のソフトとしてMySQ...
ソフト単体でMaxScale自体の冗長化は出来ない為、完全二重化...
VirtualIP構成を取る必要がある。
~
*インストール [#bae777be]
&size(16){&font(b){1. ビルド・インストール};};
今回はCentOS 8.0.1905・MaxScale v2.4.4でビルドを行う。
ライブラリインストールにdnfを用いているが、他ディストリを...
# dnf install openssl-devel systemd-devel sqlite-devel p...
# dnf install npm tcl cmake uuid libuuid-devel xz-devel
# wget "https://github.com/mariadb-corporation/MaxScale/...
# tar zxvf maxscale-2.4.4.tar.gz
# cd MaxScale-maxscale-2.4.4
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/maxscale-2.4...
# make
# make install
# ln -s /usr/local/maxscale-2.4.4 /usr/local/maxscale
# ln -s /usr/local/maxscale/etc/maxscale.cnf /etc/maxsca...
~
&size(16){&font(b){2. サービスファイル};};
最近のLinuxではsystemdを用いている為、MaxScale用のサービ...
今回は実行ユーザとグループを決め打ちしている為、サービス...
# groupadd maxscale
# useradd -g maxscale -d /var/run/maxscale -s /sbin/nolo...
# vi /usr/lib/systemd/system/maxscale.service
-----
[Unit]
Description=MariaDB MaxScale Database Proxy
After=network.target
[Service]
Type=forking
Restart=on-abort
PermissionsStartOnly=true
User=maxscale
Group=maxscale
PIDFile=/var/run/maxscale/maxscale.pid
ExecStart=/usr/local/maxscale/bin/maxscale -f /etc/maxsc...
Environment=ASAN_OPTIONS=abort_on_error=1
ExecStartPre=/usr/bin/install -d /var/run/maxscale -o ma...
ExecStartPre=/usr/bin/install -d /var/lib/maxscale -o ma...
TimeoutStartSec=120
LimitNOFILE=65535
LimitNPROC=65535
StartLimitBurst=0
WatchdogSec=60s
NotifyAccess=all
[Install]
WantedBy=multi-user.target
~
&size(16){&font(b){3. 起動準備};};
サービスファイルの登録と各ディレクトリを作成して起動準備...
# systemctl enable maxscale
# mkdir /var/log/maxscale
# chown maxscale.maxscale /var/log/maxscale
# echo '/usr/local/maxscale/lib64/maxscale' > /etc/ld.so...
# vi /etc/logrotate.d/maxscale_logrotate
-----
/var/log/maxscale/*.log {
ifempty
missingok
sharedscripts
postrotate
kill -USR1 `/usr/bin/pgrep maxscale`
endscript
}
~
&size(16){&font(b){4. コンフィグファイル};};
今回は下記構成を想定してコンフィグを作成する。
細かいオプションについては[[公式ドキュメント>+https://mar...
下記ではサンプルのみ掲載。
|ホスト |IPアドレス|レプリカユーザ|レプリカパスワード...
|MariaDB #01|10.0.0.1 |replicate |rep-pass ...
|MariaDB #02|10.0.0.2 |replicate |rep-pass ...
|MaxScale |10.0.0.3 |maxscale |max-pass ...
#region(コンフィグサンプル)
# vi /etc/maxscale.cnf
-----
[maxscale]
threads=auto
log_warning=1
log_notice=0
log_info=0
logdir=/var/log/maxscale
cachedir=/var/lib/maxscale
[MariaDB-Monitor]
type=monitor
module=mariadbmon
servers=DB1,DB2
user=maxscale
password=max-pass
replication_user=maxscale
replication_password=max-pass
monitor_interval=2000
auto_failover=true
auto_rejoin=true
[RO-Service]
type=service
router=readconnroute
servers=DB1,DB2
user=maxscale
password=max-pass
router_options=slave
[RW-Service]
type=service
router=readwritesplit
servers=DB1,DB2
user=maxscale
password=max-pass
master_failure_mode=error_on_write
master_reconnection=true
transaction_replay=true
causal_reads=false
max_slave_connections=100%
[RO-Listener]
type=listener
service=RO-Service
protocol=mariadbclient
address=0.0.0.0
port=3305
[RW-Listener]
type=listener
service=RW-Service
protocol=mariadbclient
address=0.0.0.0
port=3306
[DB1]
type=server
address=10.0.0.1
port=3306
protocol=mariadbbackend
[DB2]
type=server
address=10.0.0.2
port=3306
protocol=mariadbbackend
#endregion
~
*レプリケーション設定 [#n874edac]
MaxScaleのバックエンドをレプリケーション構成にしている場...
Master停止時にSlaveを自動でMasterに昇格する事が出来る。
その場合、&font(b){GTIDレプリケーションを双方向に設定};し...
MaxScaleから&font(b){レプリカメンバーの昇格・降格を行える...
- [[SmartStyle TECH BLOG>+https://www.s-style.co.jp/blog/...
- [[Qiita>+https://qiita.com/junsan50/items/c9e44f8d6b259...
- [[MySQL>+https://www.ns-lab.org/wiki/?Linux/Source/MySQ...
- MariaDB #01
・MaxScale接続ユーザ
> CREATE USER 'maxscale'@'10.0.0.3/255.255.255.255' IDEN...
> GRANT SELECT ON mysql.user TO 'maxscale'@'10.0.0.3/255...
> GRANT SELECT ON mysql.db TO 'maxscale'@'10.0.0.3/255.2...
> GRANT SELECT ON mysql.tables_priv TO 'maxscale'@'10.0....
> GRANT SHOW DATABASES ON *.* TO 'maxscale'@'10.0.0.3/25...
> GRANT REPLICATION CLIENT ON *.* TO 'maxscale'@'10.0.0....
> GRANT SUPER ON *.* TO 'maxscale'@'10.0.0.3/255.255.255...
・バイナリポジション確認
> SHOW MASTER STATUS\G;
File: mysql-bin.XXXXXX
Position: YYYYYY
Binlog_Do_DB:
Binlog_Ignore_DB:
・ダンプ取得
# mysqldump --all-databases -u root -p --master-data=2 -...
# cat dump-01.sql | grep MASTER_LOG_FILE | head -n 1
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.XXXXXX'...
・GTID確認
> SELECT BINLOG_GTID_POS("mysql-bin.XXXXXX", YYYYYY);
+--------------------------------------------+
| binlog_gtid_pos("mysql-bin.XXXXXX",YYYYYY) |
+--------------------------------------------+
| 0-NNN-NNN |
+--------------------------------------------+
・インポート
# mysql -f -u root -p < dump-02.sql
# mysql -u root -p
・GTIDレプリケーション
> STOP SLAVE;
> SET GLOBAL GTID_SLAVE_POS = '0-NNN-NNN';
> CHANGE MASTER TO MASTER_HOST='10.0.0.2', MASTER_USER='...
> START SLAVE;
> SHOW SLAVE STATUS\G;
- MariaDB #02
・MaxScale接続ユーザ
> CREATE USER 'maxscale'@'10.0.0.3/255.255.255.255' IDEN...
> GRANT SELECT ON mysql.user TO 'maxscale'@'10.0.0.3/255...
> GRANT SELECT ON mysql.db TO 'maxscale'@'10.0.0.3/255.2...
> GRANT SELECT ON mysql.tables_priv TO 'maxscale'@'10.0....
> GRANT SHOW DATABASES ON *.* TO 'maxscale'@'10.0.0.3/25...
> GRANT REPLICATION CLIENT ON *.* TO 'maxscale'@'10.0.0....
> GRANT SUPER ON *.* TO 'maxscale'@'10.0.0.3/255.255.255...
・バイナリポジション確認
> SHOW MASTER STATUS\G;
File: mysql-bin.AAAAAA
Position: BBBBBB
Binlog_Do_DB:
Binlog_Ignore_DB:
・ダンプ取得
# mysqldump --all-databases -u root -p --master-data=2 -...
# cat dump-02.sql | grep MASTER_LOG_FILE | head -n 1
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.AAAAAA'...
・GTID確認
> SELECT BINLOG_GTID_POS("mysql-bin.AAAAAA", BBBBBB);
+--------------------------------------------+
| binlog_gtid_pos("mysql-bin.AAAAAA",BBBBBB) |
+--------------------------------------------+
| 0-MMM-MMM |
+--------------------------------------------+
・インポート
# mysql -f -u root -p < dump-01.sql
# mysql -u root -p
・GTIDレプリケーション
> STOP SLAVE;
> SET GLOBAL GTID_SLAVE_POS = '0-MMM-MMM';
> CHANGE MASTER TO MASTER_HOST='10.0.0.1', MASTER_USER='...
> START SLAVE;
> SHOW SLAVE STATUS\G;
~
*ステータス確認 [#b34bca66]
MaxScaleに同梱されているmaxctrlコマンドで、メンバーDBの稼...
レプリカメンバーの自動昇格を有効化している場合もmaxctrlコ...
# maxctrl list services
┌────────────────┬────────────────┬─────────────┬───────...
│ Service │ Router ...
├────────────────┼────────────────┼─────────────┼───────...
│ RO-Service │ readconnroute ...
├────────────────┼────────────────┼─────────────┼───────...
│ RW-Service │ readwritesplit ...
└────────────────┴────────────────┴─────────────┴───────...
# maxctrl list servers
┌───────┬───────────┬──────┬─────────────┬──────────────...
│ Server │ Address │ Port │ Con...
├───────┼───────────┼──────┼─────────────┼──────────────...
│ DB1 │ 10.0.0.1 │ 3306 │ 0 ...
├───────┼───────────┼──────┼─────────────┼──────────────...
│ DB2 │ 10.0.0.2 │ 3306 │ 0 ...
└───────┴───────────┴──────┴─────────────┴──────────────...
ページ名: