Ubuntuの16.04の下にドッキングウィンドウを使用すると、MySQLのマスタースレーブレプリケーションを展開します

(以下ドッカー関連するコマンド、又は須藤rootユーザー環境を介して、管理者特権の下で動作する必要が)。

1.ローカルプルMySQL5.7にミラーリング

docker pull mysql:5.7

# 如果你只需要跑一个mysql实例,不做主从,那么执行以下命令即可,不用再做后面的参考步骤:
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
#然后用shell或客户端软件通过配置( 用户名:root 密码:132456 IP:你的本机ip 端口:3306)来登录即可

2. MySQLの設定ファイルを準備します

mysql5.7後にデフォルトの設定ファイルをインストール/etc/mysql/my.cnfし、上の一般的にカスタマイズした設定ファイル/etc/mysql/conf.dこのパスを。
今、私たちは(のようなローカルホストのホスト上のディレクトリをカスタマイズする/data/mysql/conf/マスターノードを設定するには、2つから、それぞれ、2つのファイルmaster.confとslave.confを作成するために、)。

  • /data/mysql/conf/master.conf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
log_bin = log  #开启二进制日志,用于从节点的历史复制回放
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
server_id = 1  #需保证主库和从库的server_id不同, 假设主库设为1
replicate-do-db=icloud  #需要复制的数据库名,需复制多个数据库的话则重复设置这个选项
  • /data/mysql/conf/slave.conf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
log_bin = log  #开启二进制日志,用于从节点的历史复制回放
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
server_id = 2  #需保证主库和从库的server_id不同, 假设从库设为2
replicate-do-db=icloud  #需要复制的数据库名,需复制多个数据库的话则重复设置这个选项

3.ドッカー各実行のMySQLマスタ/スレーブの二つの容器

  • MySQLを実行しているマスターノード
mkdir -p /data/mysql/datam
docker run -d --name mysql-master -p 13306:3306 -v /data/mysql/conf/master.conf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /data/mysql/datam:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

ランパラメータ:

--nameのmysql-マスターは:コンテナの名前が設定され、マスターのMySQL
-p 13306:3306:13306は、コンテナ港に3306ポートのホストにマップ
-v /data/mysql/conf/master.conf:/etc/mysql/ mysql.conf.d / mysqld.cnf:マウントプロフィールmaster.conf
/データ/ mysqlの/ DATAMを-v:は/ var / libに/ mysqlの: mysqlの内側容器ホストのデータ/データにマウント/ mysqlの/ DATAM、と永続的に
-e MYSQL_ROOT_PASSWORD = 123456:MySQLのrootログインパスワードは123456です

  • アップノードからのMySQLの実行
mkdir -p /data/mysql/datas
docker run -d --name mysql-slave -p 13307:3306 -v /data/mysql/conf/slave.conf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /data/mysql/datas:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

ランパラメータ:

--nameのmysql-スレーブは:コンテナの名前が設定され、スレーブのMySQL
-p 13307:3306:13307は、コンテナ港に3306ポートのホストにマップ
-v /data/mysql/conf/slave.conf:/etc/mysql/ mysql.conf.d / mysqld.cnf:プロフィールslave.confマウント
/データ/ mysqlの/件のデータを-v:は/ var / libに/ mysqlの: mysqlの内側容器はと、ホストのデータ/データ/ mysqlの/件のデータに取り付けられました永続的に
-e MYSQL_ROOT_PASSWORD = 123456:MySQLのrootログインパスワードは123456です

4.ログのMySQLマスターノード設定情報の同期化

  • MySQLでログイン
# 192.168.1.xx 是你本机的内网ip
mysql -u root -h 192.168.1.xx -P13306 -p123456
  • 実行中のmysqlクライアントで
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave';
mysql> flush privileges;
mysql> create database fileserver default character set utf8mb4;

再取得状況は、次のような出力を取得します:

mysql> show master status \G
*************************** 1. row ***************************
             File: log.000025
         Position: 155
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

ノードから前記ログMySQL設定同期情報

  • MySQLをログに記録する別のタブを開きます。
# 192.168.1.xx 是你本机的内网ip
mysql -u root -h 192.168.1.xx -P13307 -p123456
  • 操作mysqlクライアントで:
mysql> stop slave;
#注意其中的日志文件和数值要和上面show master status的值对应
mysql> CHANGE MASTER TO MASTER_HOST='你的本地ip地址如192.168.1.x',master_port=13306,MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_FILE='log.000025',MASTER_LOG_POS=155;

mysql> start slave;

再取得状況は、通常の出力は次のようになります。

mysql> show slave status \G
// ...
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes 
// ...

説明は、この時間マスタスレーブ構成を完了し、マスターは、MySQLの試みることができるicloud手術台内蔵データベースを、その後、データは、ノードの同期から来るかどうかをチェックします。

おすすめ

転載: www.cnblogs.com/Draymonder/p/10993367.html