Docker+阿里雲centos 7+MySQL主従リングコピーピット記
古いしきたりで,まず穴をあける slaveリンクmasterの時、ずっと2003エラー を提示しています. iptablesを修正するとdocker下のコンテナが 正常に使用できません.が正しく構成された後、新しいdb部分を作成するマシンは 同期していない. Got fatal error 1236 from master when reading data from binary log: 'unknown error reading log event
インストール手順
1.dockerのインストール
2.MySQL 5.7.13をインストールし、実行
2.1 dockerインストールmysql 5.7バージョン
2.2オープン3306ポート
口を開けば,ここに穴がある.
2.3 mysqlプロファイルパスをローカルで作成する
2.4 dockerの下のプロファイルをローカルにコピーする
2.5プロファイルを変更し、[mysqld]にserver-idを追加する
2.6ファイルをdockerにコピーする
2.7 Navicatなどのツールでmysql-masterをリンクし、slaveユーザーを作成する
mysqlアカウントのパスワードを修正してもnavicatを通じて直接操作することができて、dockerの下で直接rootパスワードを修正して私はまだ命令を見つけていません.知っていることがあれば、伝言を残して私に教えてください.
2.8 slave環境を作成し、master構成とほぼ同じ
2.9 slaveの構成
navicatでslave 1にリンクした後、次の操作を行います.
ここまで、私の手順に従えば、すべて正しいはずです.
3.ピット
3.1ファイアウォール
いつもファイアウォールについて話していますが、slaveの状態を見ると、
3.2 iptablesを変更した後、dockerを使用できない場合、masterサービスを再起動するとヒントが表示されます.
これはdockerを再起動する必要があります.再起動後のdockerサービスは、dockerサービス管理のcontainnerが露出したポート間で通信するためにiptablesにチェーンを登録します.
3.3部分に同期の問題がない
バイナリ・ログを再クリアする必要があります
3.4 Got fatal error 1236 from master when reading data from binary log: 'unknown error reading log event
ここでは論理と主従関係を分析し、どのライブラリに同期して切断されたかを見て、
3.5古いレプリケーション情報をクリアする
4.延長
4.1拡張reset masterとreset slaveの違い reset masterは、bin-logを000001から開始するためにバイナリログ内のすべてのファイルを空にするために使用され、reset slaveは主従を空にするためのpos位置関係 である. reset masterは、一般にインストールマスターを初期化するために を使用する.
私たちの啓示録
インストール手順
1.dockerのインストール
yum install docker -y
systemctl start docker.service
systemctl enable docker.service
2.MySQL 5.7.13をインストールし、実行
2.1 dockerインストールmysql 5.7バージョン
docker pull mysql:5.7.13
docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.13
2.2オープン3306ポート
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
口を開けば,ここに穴がある.
2.3 mysqlプロファイルパスをローカルで作成する
mkdir -p /usr/local/mysql/master
mkdir -p /usr/local/mysql/slave1
2.4 dockerの下のプロファイルをローカルにコピーする
docker cp master:/etc/mysql/my.cnf /usr/local/mysql/master
2.5プロファイルを変更し、[mysqld]にserver-idを追加する
vi /usr/local/mysql/master/my.cnf
# [mysqld]
log-bin=mysql-bin
server-id=1
2.6ファイルをdockerにコピーする
docker cp /usr/local/mysql/master/my.cnf master:/etc/mysql/my.cnf
docker restart master
2.7 Navicatなどのツールでmysql-masterをリンクし、slaveユーザーを作成する
mysqlアカウントのパスワードを修正してもnavicatを通じて直接操作することができて、dockerの下で直接rootパスワードを修正して私はまだ命令を見つけていません.知っていることがあれば、伝言を残して私に教えてください.
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by 'backup';
show grants for 'backup'@'%';
2.8 slave環境を作成し、master構成とほぼ同じ
docker run --name slave1 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -e mysql:5.7.13
docker cp slave1:/etc/mysql/my.cnf /usr/local/mysql/slave1
vi /usr/local/mysql/slave1/my.cnf
# [mysqld ]
log-bin=mysql-bin
server-id=2 # server-id master
docker cp /usr/local/mysql/slave1/my.cnf slave1:/etc/mysql/my.cnf
docker restart slave1
2.9 slaveの構成
navicatでslave 1にリンクした後、次の操作を行います.
CHANGE MASTER TO
MASTER_HOST='ip',
MASTER_PORT=3306,
MASTER_USER='backup',
MASTER_PASSWORD='backup';
START SLAVE;
ここまで、私の手順に従えば、すべて正しいはずです.
3.ピット
3.1ファイアウォール
いつもファイアウォールについて話していますが、slaveの状態を見ると、
Slave_IO_State
の状態がずっとconnectingでSlave_IO_Running
がconnectingで、後でサーバーのファイアウォールを閉じることで、大丈夫です./bin/systemctl stop iptables.service
3.2 iptablesを変更した後、dockerを使用できない場合、masterサービスを再起動するとヒントが表示されます.
Error response from daemon: driver failed programming external connectivity on endpoint master (817bc6d0cbb1904d02343e35d295281d2c5386e702bd893c770a9d32948ec310): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1))
Error: failed to start containers: master
これはdockerを再起動する必要があります.再起動後のdockerサービスは、dockerサービス管理のcontainnerが露出したポート間で通信するためにiptablesにチェーンを登録します.
systemctl restart docker.service
docker restart master
docker restart slave1
3.3部分に同期の問題がない
バイナリ・ログを再クリアする必要があります
reset master;
stop slave ;
reset slave;
start slave;
3.4 Got fatal error 1236 from master when reading data from binary log: 'unknown error reading log event
ここでは論理と主従関係を分析し、どのライブラリに同期して切断されたかを見て、
reset slave
を実行する必要があります.stop slave;
reset slave;
start slave;
3.5古いレプリケーション情報をクリアする
reset slave all;
reset slave
を使用すると、レプリケーション情報を空にしないマスターホスト、マスターport、マスターuser、orマスターpasswordなど4.延長
4.1拡張reset masterとreset slaveの違い
私たちの啓示録