Centos7 + Mysql8デュアルシステムホットバックアップ(マスター-マスターレプリケーションHA)の手順
Pang Guoming、2018-09-13
1.1 手術前の準備
Centos7ネットワーキングの構成
新しくインストールされたCentos7のデフォルトのネットワーキングはオフになっています。次の手順で、スタートアップネットワーキングをセットアップできます。
最初のステップ:[root @ localhost〜] #cd / etc / sysconfig / network-scripts /
ステップ2:[root @ localhost〜] #ls

現時点では、チュートリアルに記載されているifcfg-eth0ファイルがないことがわかります。最初のファイルを開くだけです。
新しいチュートリアルが見つからない場合、それを作成するのは間違いなく間違っています。
3番目のステップ:[root @ localhost〜] #vi ifcfg-eno167777736

ステップ4:ONBOOTをyesに変更し、保存して終了します(viの使用方法を参照)
ステップ5:[root @ localhost〜] #service network restart
**Centos7 **の下にwgetをインストールします
この操作では、Centosのyumソースインストールを使用します。最初にrpmパッケージをダウンロードする必要があるため、最初にwgetダウンロードツールをインストールする必要があります。
[ root@localhost ~]# yum install wget
インストール中に確認プロンプトが表示されます。yを入力してインストールを確認します。
1.2 Centos7の下にMySQL8をインストールします
注:同じバージョンのmysqlを両方のサーバーにインストールする必要があります
最初のステップ:古いバージョンがあるかどうかを確認し、ある場合は削除します
古いバージョンを確認し、コマンド
rpm -qa|grep mariadb
rpm -qa|grep mysql
インストールされているすべてのrpmパッケージを一覧表示し、コマンド
rpm -qa | grep mariadb
アンインストール、コマンド
rpm -e mariadb-libs-5.5.52-1.el7.x86_64
エラーが発生した場合:依存関係のチェックに失敗しました:
libmysqlclient.so.18()(64bit)は、(インストールされた)postfix-2:2.10.1-6.el7.x86_64で必要です。
libmysqlclient.so.18(libmysqlclient_18)(64bit)は、(インストールされた)postfix-2:2.10.1-6.el7.x86_64で必要です。
--nodepsがないため、解決策は強制的にアンインストールすることです。
rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
ステップ2:MySQLをダウンロードしてインストールする
外部ネットワーク接続がある場合にMySQL8をインストールします:
MySQLの公式Yumリポジトリをダウンロードしてインストールします
[ root@localhost ~]# wget -i -c https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
上記のコマンドを使用して、Yumリポジトリを直接ダウンロードしてインストールすると、Yumを使用して直接インストールできます。
[ root@localhost ~]# yum -y install mysql80-community-release-el7-1.noarch.rpm
その後、MySQLサーバーをインストールします。
[ root@localhost ~]# yum -y install mysql-community-server
プロンプトのインストールが完了するまでmysqlのインストールが完了する
外部ネットワーク接続なしでインストールパッケージを介してMySQL8をインストールします
開始する前にディレクトリを作成してください。そうしないと、エラーが報告され、起動が失敗します。
mkdir -p /usr/local/mysql/var
インストールパッケージを解凍します
tar -xvf mysql-8.0.12-1.el7.x86_64.rpm-bundle.tar
rpm -ivh net-tools-2.0-0.22.20131004git.el7.x86_64.rpm
msyqlをインストールします
rpm -ivh mysql-community-common-8.0.12-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.12-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.12-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.12-1.el7.x86_64.rpm
アンインストールシーケンス
rpm -e mysql-community-server-8.0.12-1.el7.x86_64
rpm -e mysql-community-client-8.0.12-1.el7.x86_64
rpm -e mysql-community-libs-8.0.12-1.el7.x86_64
rpm -e mysql-community-common-8.0.12-1.el7.x86_64
my.cnfファイルを/ etc /にコピーします
rm -rf /etc/my.cnf
cp my.cnf /etc/
システムを初期化する
mysqld --initialize-insecure --user=mysql
ステップ3:MySQLを起動する
[ root@localhost ~]# systemctl start mysqld.service
図に示すように、MySQLの実行ステータスを確認します。
[ root@localhost ~]# systemctl status mysqld.service
4番目のステップ:Mysqlの初期構成
mysqlにログインするための初期パスワードを取得します
mysqlは、インストール後にroot @ locahostアカウントを作成し、初期パスワードを/var/log/mysqld.logファイルに配置します。
[ root@localhost ~]# cat /var/log/mysqld.log | grep password

初期パスワードを使用してmysqlにログインします
mysql -u root -p
初期パスワードを変更します。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
mysql8のデフォルトのパスワードポリシーが許可されていないため、単純なパスワード(abc、123など)を設定する場合は、デフォルトのパスワードポリシーを変更して、この目的を達成できます。
set global validate_password.policy=0;
set global validate_password.length=4;
1.3 ファイアウォール、iptable設定
mysqlデュアルシステムホットスタンバイはmysqlサーバーにリモートでアクセスする必要があるため、両方のサーバーがポート3306を開くか、ファイアウォールを直接閉じる必要があります。
ファイアウォールをオフにします:systemctl stop firwalld
ファイアウォールの起動を禁止します:systemctl disable firealld
ファイアウォールはポート3306を開きます:firewall-cmd --zone = public --add-port = 3306 / tcp --permanent
ファイアウォールのリロード設定:firewall-cmd --reload
1.4 デュアルシステムホットバックアップ(マスター-マスターレプリケーションHAクラスター)構成
まず、2つのサーバーのmysqlバージョンが同じであり、ファイアウォールが3306に対して開いていることを確認します。
現在の環境:
サーバーIP:172.20.201.23マスターサーバーマスターになる準備ができました
BサーバーIP:172.20.201.24バックアップ用サーバースレーブ
1.4.1 A-> Bのマスタースレーブレプリケーションを構築します
1.4.1.1 手順
サーバーAで操作
最初のステップ:バックアップ専用のユーザーを作成します(mysqlにログインした後に実行します)
CREATE USER 'cp_user'@'172.20.201.24' IDENTIFIED WITH mysql_native_password BY 'master2018!';
GRANT REPLICATION SLAVE ON . TO 'cp_user'@'172.20.201.24';
(注:cp_userとmaster2018!は、しばらくの間バックアップサーバーの構成に使用する必要があり、書き留める必要があるマスターサーバーのユーザー名とパスワードです)
**手順2:MySQL構成ファイルを変更します:/etc/my.cnf、次のコンテンツを追加します。
log-bin=mysql-bin
binlog_format=mixed
server-id = 1 //サーバーの一意の識別子、各サーバー構成は別々に保存する必要があります
read-only=0
binlog-do-db = test_db //バックアップが必要なデータベースの名前は「test_db」(オプション)です。
auto-increment-increment = 2 //個人的な状況に応じて、バックアップにサーバーを使用するようにここに設定します
auto-increment-offset = 1 //このサーバーのシリアル番号を1から開始し、auto-increment-incrementを超えないことを示します
//データベースを構成した後、データベースクラスターでのIDの競合を回避するために、最初のデータid = 1、2番目のデータid = 3を2ではなく挿入します
3番目のステップ:変更が完了して保存されたら、mysqlを再起動します
[ root@localhost ~]# service mysqld restart
4番目のステップ:mysql> show master status \ Gを実行します(次の情報を参照)
mysql-bin.000002と154の2つの値は、後で役立つように覚えておく必要があります(インストールしたばかりのデータベースはmysql-bin.000001である可能性があります)
マスターが構成されたので、バックアップサービスは以下で構成されます。
Bサーバーの操作:
最初のステップ:MySQL /etc/my.cnfファイルを変更し、次のコンテンツを追加します。
log-bin=mysql-bin
binlog_format=mixed
server-id = 2 //サーバーの一意の識別子、各サーバー構成は別々に保存する必要があります
Replica-do-db = test_db //同期するデータベースの名前
relay-log=mysql.relay.bin
log-slave-updates=ON
**手順2 **:構成後、変更を保存してmysqlサービスを再起動します。
3番目のステップ:サーバーBのmysqlサーバーにログインします:次のコマンドを実行します(同期されたプライマリサーバーを構成します)
CHANGE MASTER TO
MASTER_HOST='172.20.201.23',
MASTER_USER='cp_user',
MASTER_PASSWORD='master2018!',
MASTER_LOG_FILE='mysql-bin.000020',
MASTER_LOG_POS=155;
**ステップ4 **:サーバーBのMySQLサービスを再起動します:service mysql restart
**手順5 **:コマンドを使用して、Bサーバー上のmysqlスレーブの実行ステータスを表示します。mysqlにログインした後、次を実行します。
Show slave status\G

最後のエラーが0の場合、構成は正しいと見なされます。
接続エラーが発生した場合は、サーバーAのファイアウォールを閉じるか、iptablesを空にすることを検討してください(iptables -F)
1.4.1.2 テスト:
AサーバーとBサーバーでMySQLにログインし、次のスクリプトを実行してデータベースtest_dbを作成します。
CREATE DATABASE IF NOT EXISTS test_db default charset utf8 COLLATE utf8_general_ci;
サーバーAに個別にテーブルを作成し、データを挿入します
USE test_db;
CREATE TABLE user(
id int not null auto_increment,
user_name VARCHAR(50),
password VARCHAR(10) ,
name VARCHAR(50),
status VARCHAR(10) ,
constraint pk__person primary key(id)
);
INSERT INTO user (user_name,password,name,status) VALUES('admin','admin','admin','1');
サーバーBのtest_dbに移動して、同じテーブルとデータが同期されているかどうかを確認します
同期され、構成A-> Bマスタースレーブレプリケーションが完了します
1.4.1.3 概要
この時点で、A-> Bのマスタースレーブ複製が完了します。
1.4.2 B-> Aのマスタースレーブレプリケーションを構築します
1.4.2.1 手順
これは実際にはステップ1の逆の操作です。 B(192.168.62.129)をマスターサーバーとして設定し、A(192.168.62.130)をスレーブサーバーとして設定します。手順は基本的に上記と同じです。その中で、AサーバーとBサーバーの\ etc \ my.cnf構成ファイルは、引き続きマスタースレーブ構成コンテンツを追加できます。
1、 Bでバックアップユーザーを作成する
CREATE USER 'cp_user'@'172.20.201.23' IDENTIFIED WITH mysql_native_password BY 'master2018!';
GRANT REPLICATION SLAVE ON . TO 'cp_user'@'172.20.201.23';
2、 /etc/my.cnfを開き、Bのバイナリログを開きます。
新しい構成は次のとおりです。

3、 AとBの初期状態は同じであるため(手順1で実装)、Aに同期するためにBの初期状態をエクスポートする必要はありません。マスターログのステータスを確認してください。
show master status\G

4、 サーバーAにログインして、リレーrelay_logを有効にします

5、 サーバーAで同期を開始します。
CHANGE MASTER TO
MASTER_HOST='172.20.201.24',
MASTER_USER='cp_user',
MASTER_PASSWORD='master2018!',
MASTER_LOG_FILE='mysql-bin.000017',
MASTER_LOG_POS=155;
hostはBのIPアドレス、userとpasswordはBで作成されたバックアップユーザー、log_fileとlog_posはBで表示されるマスターステータス情報です。
6、 Aのスレーブステータスを確認してください。

IOプロセスとSQLプロセスの両方がYESの場合、BからAへの同期は成功しています。
1.4.2.2 テスト
サーバーAまたはBのいずれかのMySQLtest_dbにデータを追加すると、もう一方は自動的に同期されます。
1.4.2.3 概要
この時点で、MySQLデュアルシステムのホット相互バックアップ構成は完了です。
Recommended Posts