/usr/share/mysql/charsets/| サーバー | IPアドレス | OS | MySQLバージョン | |---|---|---|---| | Mysql_master | 192.168.188.11 | CentOS7 | 5.7 | | Mysql_slave1 | 192.168.188.12 | CentOS7 | 5.7 | | Mysql_slave2 | 192.168.188.13 | CentOS7 | 5.7 |
- MySQL 5.7のインストール1) YUMリポジトリを設定します。```
MySQLリポジトリのパッケージをダウンロード
shell> wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
MySQLリポジトリをインストール
shell> yum localinstall mysql57-community-release-el7-8.noarch.rpm
リポジトリが正常に追加されているか確認します。```
shell> yum repolist enabled | grep "mysql.*-community.*"
- MySQLをインストールします。``` shell> yum install mysql-community-server
3) MySQLサービスを起動します。```
shell> systemctl start mysqld
MySQLの状態を確認します。``` shell> systemctl status mysqld
4) システム起動時に自動起動を設定します。```
shell> systemctl enable mysqld
shell> systemctl daemon-reload
- ローカルログイン用のrootパスワードを変更します。インストール後、/var/log/mysqld.logファイルに初期パスワードが生成されます。以下のコマンドでパスワードを取得し、MySQLにログインして変更してください:``` shell> grep 'temporary password' /var/log/mysqld.log
shell> mysql -u root -p mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!'; 或者 mysql> set password for 'root'@'localhost'=password('NewPass123!');
注意:MySQL 5.7はデフォルトでパスワードの強度チェックプラグイン(validate_password)が有効です。このため、パスワードには大文字・小文字、数字、特殊文字を含め、少なくとも8文字以上にする必要があります。そうでない場合、エラーが発生します。6) MySQLにログインします。```
mysql -u root -p
- 接続可能なIPを設定します。例えば、IPアドレス192.168.188.62からの接続を許可する場合:``` GRANT ALL PRIVILEGES ON . TO 'root'@'192.168.188.62' IDENTIFIED BY 'password' WITH GRANT OPTION;
8) 変更を反映します。```
flush privileges;
- ファイアウォールを設定します。``` // 3306ポートを開放 firewall-cmd --zone=public --add-port=3306/tcp --permanent // ファイアウォールを再読み込み firewall-cmd --reload // 開放中のポートを確認 firewall-cmd --list-ports
上記の手順はすべてのサーバーで実施してください。 マスターサーバーの設定1) 設定内容/etc/my.cnfファイルに以下を追加します:```
# server_idをIPに設定
server_id=18811
# バックアップが必要なデータベース
binlog-do-db=dfs
# バックアップ不要なデータベース
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
# 二進数ログを有効化
log-bin=master-bin
- MySQLを再起動します。``` service mysqld restart
3) MySQLにログインし、リモート接続用のユーザーを作成します。```
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.188.12' IDENTIFIED BY 'password' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.188.13' IDENTIFIED BY 'password' WITH GRANT OPTION;
flush privileges;
- 設定が成功したか確認します。``` mysql> select user,host from mysql.user;
5) マスターの状態を確認します。```
mysql> show master status\G;
FileとPositionの値を控えておき、スレーブの設定に使用します。6) 再設定を行う場合は、以下のコマンドで初期化できます。``` mysql> reset master;
スレーブ1の設定1) 設定内容/etc/my.cnfファイルに以下を追加します:```
# server_idをIPに設定
server_id=18812
# バックアップが必要なデータベース
binlog-do-db=dfs
# バックアップ不要なデータベース
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
# 二進数ログを有効化
log-bin=slave1-bin
- MySQLを再起動し、マスターに接続します。``` service mysqld restart
3) スレーブを停止します。```
mysql> stop slave;
- マスター情報を設定します。``` mysql> change master to master_host='192.168.188.11', master_user='root', master_password='password', master_log_file='master-bin.000002', master_log_pos=928;
5) スレーブの状態を確認します。```
mysql> show slave status\G;
- スレーブを開始します。``` mysql> start slave;
再度状態を確認すると、Statusがyesになるはずです。```
mysql> show slave status\G;
スレーブ2の設定スレーブ2の設定方法はスレーブ1と同じですが、いくつかの設定項目が異なります。1) 設定内容/etc/my.cnfファイルに以下を追加します:```
server_idをIPに設定
server_id=18813
バックアップが必要なデータベース
binlog-do-db=dfs
バックアップ不要なデータベース
binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=sys
二進数ログを有効化
log-bin=slave2-bin
2) MySQLを再起動し、マスターに接続します。```
service mysqld restart
- スレーブを停止します。``` mysql> stop slave;
4) マスター情報を設定します。```
mysql> change master to master_host='192.168.188.11', master_user='root', master_password='password', master_log_file='master-bin.000002', master_log_pos=928;
- スレーブの状態を確認します。``` mysql> show slave status\G;
6) スレーブを開始します。```
mysql> start slave;
再度状態を確認すると、Statusがyesになるはずです。``` mysql> show slave status\G;
これで完了です。マスターサーバーで操作を行えば、すべてのスレーブに同期されます。