Centos7 + Mysql8デュアルシステムホットバックアップ(マスター-マスターレプリケーションHA)の手順

Centos7 + Mysql8デュアルシステムホットバックアップ(マスター-マスターレプリケーションHA)の手順

Pang Guoming、2018-09-13

1.1 手術前の準備

  1. 2つのサーバー、および新しくインストールされたバージョンのCentos 7.3を同時に(同じバージョンをインストールする必要があります)。
  2. 外部ネットワークリンクがある場合は、インターネットに接続してwgetツールをインストールするようにCentos7を構成します。外部ネットワークリンクがない場合は、「1.2 centos7 to install [mysql](https://cloud.tencent.com/product/cdb?from=10680)」にスキップします。

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

Centos7 + Mysql8デュアルシステムホットバックアップ(マスター-マスターレプリケーションHA)の手順