MySQL +キープアライブ戦闘

私のMySQLDBAコース:

    DBA MySQLデータベースエンジニア(2021最新版)コース:https//edu.51cto.com/course/27002.html  作成者:Zhang Yanfeng、ソースを示してください

    この章では、主にMySQL + Keepalived高可用性アーキテクチャの実際の戦闘を紹介し、詳細な操作プロセスをリストします。MySQLデータベースは間違いなく日常の運用と保守で公開されるため、⑥MySQLアーキテクチャと日常の運用と保守を実行することが給与増加の鍵となります。

    DBA MySQLデータベースエンジニア(2021年の最新バージョン)コースでは、データベース関連の知識、原則、実際の戦闘を、単純なものから深いものまで紹介します。リレーショナルデータベース+非リレーショナルデータベース(MySQL、MongoDB、ES、Redis)の詳細な説明。これは、MySQLデータベースのすべてのコア知識ポイント、原則と実際の戦闘、および実際の実稼働環境のケースの説明をカバーしています。24時間のアフターセールスQ&Aが提供されます。張先生は皆を離陸させます。皆が来て相談することを歓迎します。


MySQL +キープアライブ構成:

環境の説明

4台のサーバーを準備する

周囲

IP

ソフトウェア

説明

db01メインライブラリ

192.168.43.101

mysql、keepalived

101と102はマスターとスレーブです

103と104はマスターとスレーブです

db02スレーブライブラリ

192.168.43.102

mysql

db03メインライブラリ

192.168.43.103

mysql、keepalived

db04スレーブライブラリ

192.168.43.104

mysql

VIP:192.168.43.200


インストールされている4つのmysqlサーバーを準備します。操作は次のとおりです。

1.ソフトウェアをダウンロードして/ server / toolsにアップロードします

mkdir -p / server / tools

cd / server / tools /

パッケージをアップロード


2.解凍ソフトウェア

tar zxvf mysql-5.7.31-el7-x86_64.tar.gz

mkdir / application

mv mysql-5.7.31-el7-x86_64 / application / mysql

yum remove mariadb-libs -y

useradd -s / sbin / nologin mysql

echo "export PATH = / application / mysql / bin:$ PATH" >> / etc / profile

ソース/ etc / profile

mysql -V


3.データパスを作成して承認します

mkfs.xfs / dev / sdb

[root @ localhost〜] #blkid

/ dev / sdb:UUID = "4f4bed6c-4d81-434d-918d-8148a6591d84" TYPE = "xfs"

[root @ localhost〜] #vi / etc / fstab

UUID = "4f4bed6c-4d81-434d-918d-8148a6591d84" / dataxfsデフォルト00

mkdir / data

マウント-a


4.承認

chown -R mysql.mysql / application / *

chown -R mysql.mysql / data


5.データの初期化(システムデータの作成)

mkdir / data / mysql / data -p

chown -R mysql.mysql / data

mysqld --initialize-insecure --user = mysql --basedir = / application / mysql --datadir = / data / mysql / data


6.構成ファイルの準備

cat> /etc/my.cnf << EOF

[mysqld]

user = mysql

basedir = / application / mysql

datadir = / data / mysql / data

ソケット= / tmp / mysql.sock

server_id = 6

ポート= 3306

[mysql]

ソケット= / tmp / mysql.sock

EOF


7、データベースを起動します

cat> /etc/systemd/system/mysqld.service << EOF

[単位]

Description = MySQL Server

Documentation = man:mysqld(8)

Documentation = http://dev.mysql.com/doc/refman/en/using-systemd.html

After = network.target

After = syslog.target

[インストール]

WantedBy = multi-user.target

[サービス]

User = mysql

Group = mysql

ExecStart = / application / mysql / bin / mysqld --defaults-file = / etc / my.cnf

LimitNOFILE = 5000

EOF

systemctl restart mysqld.service

ヒント:終了後、vmを使用している場合は、スナップショット操作を実行できます


1.環境(すべてのノード)をクリーンアップします

mkdir / data / binlog

chown mysql.mysql / data / *

pkill mysqld

\ rm -rf / data / mysql / data / *

\ rm -rf / data / binlog / *


2.構成ファイルを準備します

#db01:

cat> /etc/my.cnf << EOF

[mysqld]

basedir = / application / mysql /

datadir = / data / mysql / data

ソケット= / tmp / mysql.sock

server_id = 1

ポート= 3306

secure-file-priv = / tmp

autocommit = 0

log_bin = / data / binlog / mysql-bin

binlog_format = row

gtid-mode = on

強制-gtid-consistency = true

log-slave-updates = 1

[mysql]

プロンプト= db01 [\\ d]>

EOF


#db02:

cat> /etc/my.cnf << EOF

[mysqld]

basedir = / application / mysql

datadir = / data / mysql / data

ソケット= / tmp / mysql.sock

server_id = 2

ポート= 3306

secure-file-priv = / tmp

autocommit = 0

log_bin = / data / binlog / mysql-bin

binlog_format = row

gtid-mode = on

強制-gtid-consistency = true

log-slave-updates = 1

[mysql]

プロンプト= db02 [\\ d]>

EOF


#db03:

cat> /etc/my.cnf << EOF

[mysqld]

basedir = / application / mysql

datadir = / data / mysql / data

ソケット= / tmp / mysql.sock

server_id = 3

ポート= 3306

secure-file-priv = / tmp

autocommit = 0

log_bin = / data / binlog / mysql-bin

binlog_format = row

gtid-mode = on

強制-gtid-consistency = true

log-slave-updates = 1

[mysql]

プロンプト= db03 [\\ d]>

EOF


#db04:

cat> /etc/my.cnf << EOF

[mysqld]

basedir = / application / mysql

datadir = / data / mysql / data

ソケット= / tmp / mysql.sock

server_id = 4

ポート= 3306

secure-file-priv = / tmp

autocommit = 0

log_bin = / data / binlog / mysql-bin

binlog_format = row

gtid-mode = on

強制-gtid-consistency = true

log-slave-updates = 1

[mysql]

プロンプト= db04 [\\ d]>

EOF


3.データを初期化します(4ユニットすべてが実行されます)

mysqld --initialize-insecure --user = mysql --basedir = / application / mysql --datadir = / data / mysql / data 


4.データベースを起動します(3つすべてが実行されます)

systemctl restart mysqld


5.マスタースレーブを構築します

db01 <==> db03

db01 <== db02

db03 <== db04


#db01およびdb03:

*。*のレプリケーションスレーブを '123'で識別されるrepl @ '192.168.43。%'に付与します。


#db01:

マスターを 

master_host = '192.168.43.103'、

master_user = 'repl'、

master_password = '123'、

MASTER_AUTO_POSITION = 1;

スレーブを開始します。


#db02:

マスターを 

master_host = '192.168.43.101'、

master_user = 'repl'、

master_password = '123'、

MASTER_AUTO_POSITION = 1;

スレーブを開始します。


#db03:

マスターを 

master_host = '192.168.43.101'、

master_user = 'repl'、

master_password = '123'、

MASTER_AUTO_POSITION = 1;

スレーブを開始します。


#db04:

マスターを 

master_host = '192.168.43.103'、

master_user = 'repl'、

master_password = '123'、

MASTER_AUTO_POSITION = 1;

スレーブを開始します。


6.マスター/スケジュールされたKeepalived(101および103マシン)を構成します(マスターライブラリで構成します)

101台のマシン:

[root @ master〜] #yum -y install keepalived

[root @ master〜] #vi /etc/keepalived/keepalived.conf 

キープアライブの構成ファイル


global_defs {

   router_id mysql1

}


vrrp_script check_run {

    スクリプト "/etc/keepalived/check_mysql.sh"

    間隔5

}


vrrp_instance VI_1 {

    状態マスター

    インターフェイスens33

    virtual_router_id 88

    優先度100

    advert_int 1

    認証{

        auth_type PASS

        auth_pass 1111

    }

    track_script {

        check_run

    }

    virtual_ipaddress {

        192.168.43.200

    }

}

[root @ master〜] #systemctl restart keepalived


103台のマシン:

[root @ backup〜] #yum -y install keepalived

[root @ backup〜] #vi /etc/keepalived/keepalived.conf

キープアライブの構成ファイル


global_defs {

   router_id mysql2

}


vrrp_script check_run {

    スクリプト "/etc/keepalived/check_mysql.sh"

    間隔5

}


vrrp_instance VI_1 {

    状態マスター

    インターフェイスens33

    virtual_router_id 88

    優先度50

    advert_int 1

    認証{

        auth_type PASS

        auth_pass 1111

    }

    track_script {

        check_run

    }

    virtual_ipaddress {

        192.168.43.200

    }

}

[root @ backup〜] #systemctl restart keepalived


7. mysqlステータス検出スクリプト(2つのMySQLで同じスクリプト)を構成します

[root @ master〜] #vi /etc/keepalived/check_mysql.sh

#!/ bin / bash

/ usr / bin / mysql -uroot -e "ステータスの表示"&> / dev / null

if [$?!= 0];次に

    systemctl stopkeepalived

あります

[root @ master〜] #chmod a + x /etc/keepalived/check_mysql.sh

[root @ master〜] #systemctl restart keepalived


8.テスト

C:\ Users \岩峰> mysql -urepl -p123 -h 192.168.43.200

mysql>データベースdb1を作成します。

クエリOK、影響を受ける1行(0.00秒)


mysql>データベースを表示します。

+ -------------------- +

| データベース|

+ -------------------- +

| information_schema |

| db1 |

| mysql |

| performance_schema |

| テスト|

+ -------------------- +

セットで5行(0.00秒)


[root @ master〜] #systemctl stop mariadb

mysql>データベースを表示します。

+ -------------------- +

| データベース|

+ -------------------- +

| information_schema |

| mysql |

| performance_schema |

| テスト|

+ -------------------- +

セットで4行(0.00秒)


おすすめ

転載: blog.51cto.com/12760547/2663891