メインデータベースから(ドッカ版)
MySQLデータベースをインストールします。1.
docker pull mysql:5.7
ミラーは、MySQL 5.7を引っ張っ
2つのデータベースを作成MYSQL:マスター・スレーブを
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysqlM mysql:5.7
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysqlS mysql:5.7
2.データベースの設定
docker exec -it mysqlM /bin/bash
入力mysqlM対話モードを
vimのエディタをインストールするには、編集、/etc/mysql/my.cnf
apt-get update
apt-get install vim -y
vim /etc/mysql/my.cnf
設定を追加
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
service mysql restart
MySQLはサービスを再起動
docker start mysqlM
、停止ドッキングウィンドウコンテナにサービスを再起動する大手、マスターを起動します
docker exec -it mysqlS /bin/bash
入力mysqlS対話モードに
vim /etc/mysql/my.cnf
設定を追加します
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
service mysql restart
サービスを再起動MySQLの
docker start mysqlS
スレーブを起動します
メインリンク3.
docker exec -it mysqlM /bin/bash
入力mysqlM対話モードを
mysql -uroot -p123456
mysqlの対話モードに入るように
同期アカウントのマスター、ユーザマスタデータ同期からの作成
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
実行show master status;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 617 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
ファイルと位置フィールドはへのフォローアップを使用することは非常に重要です!現時点では重要!!!データベースは、それ以外の場合は、これらの二つのフィールドの変化につながる、任意の操作を持っていない、あなたはマスタースレーブをリンクすることはできません!
データベースの変更は、ロックテーブルの手段によって防止することができます。
FLUSH TABLES WITH READ LOCK;
データベースのロックされた、唯一のデータの一貫性を確保するために、読ん可能。FLUSH PRIVILEGES;
リフレッシュ権利UNLOCK TABLES;
ロック解除テーブル
docker exec -it mysqlS /bin/bash
入力mysqlS対話モードを
mysql -uroot -p123456
mysqlの対話モードを入力するには、コマンドを実行します
change master to master_host='192.168.183.220', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 617, master_connect_retry=30;
- MASTER_HOST:マスター住所
- MASTER_PORT:マスターのポート番号、ポート番号は、コンテナを指し、
- master_user:同期のためのユーザデータ
- master_password:ユーザーのパスワードを同期するために使用
- MASTER_LOG_FILE:指定スレーブは、上記では、すなわち、ファイルフィールドの値から、ログファイルのデータのコピーを開始
- 値の読み取りを開始するための位置、即ち、上述したフィールドの位置:MASTER_LOG_POS
- MASTER_CONNECT_RETRY:接続に失敗した場合は、再試行間隔は、秒単位で、デフォルトは60秒です
-出典:https://www.cnblogs.com/songwenjie/p/9371422.html
start slave;
スタートスレーブは、コマンドを閉じstop slave
show slave status \G;
、スタートの状態を表示します
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.183.220
Master_User: slave
Master_Port: 3306
Connect_Retry: 30
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 617
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 617
Relay_Log_Space: 527
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 100
Master_UUID: a4b3e332-0c73-11ea-9906-0242ac110002
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
ERROR:
No query specified
Slave_IO_RunningとSlave_SQL_Runningがあるはい、マスター・スレーブのビルド成功。
使用後、マスタースレーブのレプリケーションが接続された、接続されてSlaveIORunning場合、このような状況は、一般的に、以下のいくつかの理由によって引き起こされる、コピー処理の後、オープンからスレーブ・マスターを開始し、我々はLast_IO_Errorのヒントに従って除外することができます。
- いいえネットワーク:チェックIP、ポート
- パスワードが間違っ:正しいユーザーの同期かどうか、およびパスワードを作成し、チェック
- posが行われます。ポジションのマスターを確認してください
-出典:https://www.cnblogs.com/songwenjie/p/9371422.html
主なテスト4.
アイデア:メインデータベースの操作は、からデータベースの変更を確認します
create database db1 default character set utf8mb4 collate utf8mb4_unicode_ci;
データベースを作成します。
参考: