マスター([〜#〜] a [〜#〜])とスレーブ([〜#〜] b [〜#〜]の2つのサーバー間でMySQLレプリケーションをセットアップしています。 =)。新しいスレーブをミックスに追加する必要があります([〜#〜] c [〜#〜])。このスレーブがマスターから直接更新を取得するようにしたいのですが、スレーブからのチェーンレプリケーションは必要ありません。ただし、マスターは「ホット」です。通常、Xtrabackupを使用してマスターの完全バックアップを作成しますが、データベースのサイズが約20GBであるため、マスターを10分間ロックします。
スレーブでの読み取りロック付きのフラッシュテーブル[〜#〜] b [〜#〜]、[〜#〜] b [〜#〜]でSHOW SLAVE STATUSを使用binlogと位置を書き留めます。次に、Xtrabackupでデータベースをバックアップし、バックアップを[〜#〜] c [〜#〜]に送信し、それを使用してスレーブを作成し、レプリケーションが[〜#〜 ] a [〜#〜]私が書き留めたbinlogの位置で。
ロックする必要がないより良い方法はありますか[〜#〜] b [〜#〜]長い間?または、より簡単に自動化できるものはありますか?
ねえ、マスター(ServerA)またはスレーブ(ServerB)の操作を拡張することなくスレーブを作成するクレイジーな方法を知っている
手順1)新しいサーバーをセットアップする(ServerC)
ステップ2)ServerCにMySQLをインストールします(ServerBと同じバージョン)
ステップ3)ServerCで、サービスmysql stop
ステップ4)/etc/my.cnfをServerBからServerCにコピーします
ステップ5)ServerCで、server_idをServerAおよびServerBとは異なる値に変更します。
ステップ6)ServerBからServerCへのrsync/var/lib/mysql
手順7)rsyncが完了したら、「STOP SLAVE;」を実行します。 ServerB上
ステップ8)ServerBからServerCへのrsync/var/lib/mysql
手順9)ServerBで「START SLAVE;」を実行します。
ステップ10)ServerCで、mysql startサービス
ステップ11)ServerCで「START SLAVE;」を実行します。 (skip-slave-startが/etc/my.cnfにある場合はこれを行います)
試してみる !!!
ところで、私は過去2日間にクライアントのためにこれを実行しただけなので、これが機能することを確信しています。クライアントのスレーブには2.7TBのデータがありました。スレーブがまだアクティブな間に別のサーバーにrsyncdしました。 rsyncは11時間ほどかかりました。その後、STOP SLAVEを実行しました。最初のスレーブで再度rsyncを実行しました。さらに1時間かかりました。次に、上記の手順を実行すると、すべてが完了します。
スレーブをミックスに追加する場合、次のことを行います。
@ RolandoMySQLDBA が示唆することを行いましたが、6 'と8'も追加しましたステップ(これは @ Hussain Tamboli コメントを解決します。):
手順1)新しいサーバーをセットアップする(ServerC)
ステップ2)ServerCにMySQLをインストールします(ServerBと同じバージョン)
ステップ3)ServerCで、サービスmysql stop
ステップ4)/etc/my.cnfをServerBからServerCにコピーします
ステップ5)ServerCで、server_idをServerAおよびServerBとは異なる値に変更します。
ステップ6)ServerBからServerCへのrsync/var/lib/mysql
ステップ6 ')rsync/var /log/ mysql on ServerB to ServerC
手順7)rsyncが完了したら、「STOP SLAVE;」を実行します。 ServerB上
ステップ8)ServerBからServerCへのrsync/var/lib/mysql
ステップ8 ')rsync/var /log/ mysql on ServerB to ServerC
手順9)ServerBで「START SLAVE;」を実行します。
ステップ10)ServerCで、mysql startサービス
ステップ11)ServerCで「START SLAVE;」を実行します。 (skip-slave-startが/etc/my.cnfにある場合はこれを行います)
「LOAD DATA FROM MASTER」オプションがありますが、これはお勧めしません。
システムで毎晩/毎週バックアップを取っていますか?その場合は、バックアップの位置にも注意してください。そのバックアップを使用して、新しいスレーブをセットアップできます。そのままにして、しばらくの間最新の状態にしてください。
私はRolandoの回答を試してうまくいきましたが、最初から再生を開始し、スキップするエラーコードを追加する必要がありました(推奨されていませんが、何をしているのかはわかっています)。
ステップ7が完了したら、mysqlログをチェックインし、binログの名前と位置を書き留めて、9番目のステップまで続行しました。 10番目のステップの前に、私はchange master
ログファイルとログの位置。そしてステップ11から続けます。