3

1 つのテーブル製品を含むマスター データベースがあります (後でさらに追加します。これは単なる dev です)。

OS:CentOS6.4

これを使用して、レプリケーションのマスターとして設定しました。

/etc/my.cnf:

server-id = 1
binlog-do-db=product_database
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin

マスターで、次のコマンドでユーザーを作成しました。

GRANT REPLICATION SLAVE ON *.* TO 'hcp_slave'@'%' IDENTIFIED BY 'password_here';

次に、スレーブで:

server-id = 2
master-host=HOST_IP_ADDRESS
master-connect-retry=60
master-user=hcp_slave
master-password=PASSWORD
replicate-do-db=product_database
#The below line is what causes issues
replicate-rewrite-db=product_database->product_database2
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin

「replicate-rewrite-db」行を追加する前 (およびそれを削除した場合)、レプリケーションは同じデータベース名を持つサーバー間で完全に機能していました。ただし、テスト目的で「product_database2」という別の名前のデータベースに移動する必要があります。

私がmysqlマニュアルといくつかのランダムなフォーラム(およびstackoverflow)で読んだすべてのものから、私は複製コマンドを適切に使用していると思いますが、明らかにそうではありません。嘘、または私がこれを完全に間違った方法で行おうとしている場合!

好奇心旺盛な人のために、ここでXYの問題が発生した場合に備えて、私が実際にやろうとしていること:

製品をすべて手動で更新するのではなく、一握りの Web サイトに製品をフィードするためのマスター データベースを作成しようとしています。これを行う最善の方法は、1 つのマスター データベースを作成し、すべてのサイトをスレーブとして構成して、そこから製品を自動的にプルすることだと考えました。

編集:

スレーブ構成ファイルの「replicate-do-db」行をコメントアウトしようとしましたが、少なくとも今は product_database2 が存在することを示す兆候を示していますが、エラーの形式になっています。

Last_Error: Error 'Error on rename of './product_database/asdf.frm' to     './product_database2/asdf.frm' (Errcode: 2)' on query. Default database: 'product_database2'. Query: 'RENAME TABLE `product_database`.`asdf`
4

3 に答える 3

2

スレーブ側で設定する必要があります

replicate-do-db=product_database2

のようにデータベース名を書き換えたためですproduct_database->product_database2

于 2015-01-20T07:00:20.553 に答える