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`