Docker+阿里雲centos 7+MySQL主従リングコピーピット記

3994 ワード

古いしきたりで,まず穴をあける
  • 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のインストール
    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の違い
  • reset masterは、bin-logを000001から開始するためにバイナリログ内のすべてのファイルを空にするために使用され、reset slaveは主従を空にするためのpos位置関係
  • である.
  • reset masterは、一般にインストールマスターを初期化するために
  • を使用する.
    私たちの啓示録