Docker -- Mysql マスター/スレーブ データベースをデプロイする

以下は、1 つのマスターと 2 つのスレーブで Mysql サービスを構成する具体的なプロセスです。

マウント用のディレクトリを作成する

データの永続性を確保し、コンテナの再起動後のデータ損失を防止します

  • マスターノード
    /tools/docker-mysql/master/data
    /tools/docker-mysql/master/conf
    /tools/docker-mysql/master/logs
    
  • 1つから
    /tools/docker-mysql/slave1/data
    /tools/docker-mysql/slave1/conf
    /tools/docker-mysql/slave1/logs
    
  • 2人から
    /tools/docker-mysql/slave2/data
    /tools/docker-mysql/slave2/conf
    /tools/docker-mysql/slave2/logs
    

CNF構成を変更する

  • マスターノード
    vi  /tools/docker-mysql/master/conf/master.cnf
    [mysqld]
    log-bin=mysql-bin
    server-id=100
    
  • 1つから
    vi  /tools/docker-mysql/slave1/conf/slave1.cnf
    [mysqld]
    log-bin=mysql-bin
    server-id=101
    
  • 2人から
    vi  /tools/docker-mysql/slave2/conf/slave2.cnf
    [mysqld]
    log-bin=mysql-bin
    server-id=102
    

mysqlサービスイメージをプルします

最新の画像はこちらから引っ張ってきました

docker pull mysql/mysql-server:latest

カスタム Docker ネットワーク

コンテナーの IP を指定するために使用する場合は、使用可能な IP セグメントを指定します。

docker network create --subnet=172.18.0.0/24 dockernet

コンテナを起動する

  • マスターノード
    docker run \
    -itd \
    -v /tools/docker-mysql/master/conf:/etc/mysql/conf.d \
    -v /tools/docker-mysql/master/data:/var/lib/mysql \
    -v /tools/docker-mysql/master/logs:/var/log/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -p 3311:3306 \
    --name mysql-master \
    --restart=always \
    --network dockernet \
    --ip=172.18.0.2 \
    -d mysql:latest
    
  • 1つから
    docker run \
    -itd \
    -v /tools/docker-mysql/slave1/conf:/etc/mysql/conf.d \
    -v /tools/docker-mysql/slave1/data:/var/lib/mysql \
    -v /tools/docker-mysql/slave1/logs:/var/log/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -p 3312:3306 \
    --name mysql-slave1\
    --restart=always \
    --network dockernet \
    --ip=172.18.0.3 \
    -d mysql:latest
    
  • 2人から
    docker run \
    -itd \
    -v /tools/docker-mysql/slave2/conf:/etc/mysql/conf.d \
    -v /tools/docker-mysql/slave2/data:/var/lib/mysql \
    -v /tools/docker-mysql/slave2/logs:/var/log/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -p 3313:3306 \
    --name mysql-slave2\
    --restart=always \
    --network dockernet \
    --ip=172.18.0.4 \
    -d mysql:latest
    

主なライブラリ構成

メインライブラリのステータスを表示する

docker exec -it 主库容器ID /bin/bash

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      157 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

ライブラリからバックアップ ユーザーを作成する

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

create user 'backup'@'%' identified WITH mysql_native_password by '123456';

GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' ;

ライブラリから設定する

マスター情報の変更

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

// mysql-bin.000003 是我们在主库查看状态时查找到的 File 信息
// 157 是我们在主库查看状态时查找到的 Position 信息
change master to master_host='172.18.0.2',master_user='backup',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=157;

GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' ;

スレーブサービスを開始する

start slave;

スレーブサービスのステータスが正常かどうかを確認します

show slave status;

次のステータスはYesで、通常の動作を示します。
ここに画像の説明を挿入
例外の実行中は、Last_Errorで例外情報を表示できます。

おすすめ

転載: blog.csdn.net/qq_40096897/article/details/128786938