この記事では主に、Docker に基づいた Mysql のマスター/スレーブ レプリケーションについて説明します。お役に立てれば幸いです。
環境紹介
マスターサーバー: JD Cloud CentOS
スレーブサーバー: Vultr Cloud CentOS
テストの便宜上、Docker を使用して Mysql を実行します。Docker の起動コマンドは次のとおりです。上記のすべては mysql を配置します。構成ディレクトリとデータ ディレクトリはホスト マシンにマッピングされます。
マスターを設定する 便宜上、マスターデータベースを操作するために特別なディレクトリが作成されます。構造は次のとおりですdocker run --name mysql-server-01 -p 3306:3306 -v "$PWD"/conf.d:/etc/mysql/conf.d -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
マスターを設定するためにmy.cnfを作成します
えーこれでコンテナを起動できるようになります。
起動後、mysqlを操作するコンテナに入りますmysql └── server01 ├── conf.d ├── data └── start.sh
スレーブサーバーを設定します
slave my.cnf設定ファイルは以下の通りです(簡単にするために、ここでは多くのパラメータが省略されています。本番環境):[mysqld]log-bin=mysql-binserver-id=1innodb_flush_log_at_trx_commit=1sync_binlog=1
次に、コンテナを起動して、mysql クライアントに入ります。 "
# 进入容器 docker exec -it 容器ID bash # 进入msyql客户端 mysql -u root -p # 新建salve用户并配置权限,格式如下 mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com'; # 查看master状态,这里file和position后面配置salve会用到mysql> show master status; +------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+| mysql-bin.000001 | 1092 | | | | +------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)実行ステータスを確認します:
[mysqld]server-id=2上記の Slave_IO_Running と Slave_SQL_Running は両方とも YES であり、マスターとスレーブが構成されていることを示します。 概要mysqlには3つの一般的なアーキテクチャがあります シングルインスタンスアーキテクチャマスタースレーブレプリケーションMHA高可用性アーキテクチャそのうち、マスタースレーブレプリケーションは以下に基づいていますの上記のバイナリ ログ レプリケーション方法と、グローバル トランザクション識別子 (GTID) に基づく別の方法です。 関連する推奨事項: MySQLのマスター/スレーブレプリケーションプロセスの詳細な説明_Mysqlインスタンスの詳細な説明
MySQL5.7.18のマスター/スレーブレプリケーションのマスター/スレーブインスタンスのセットアップの詳細な説明
-
MySQL マスターでの Mycat の読み取りと書き込みの分離 コピーに基づいて実装された例