1

mysql でマスターからスレーブへのレプリケーションが必要です。

したがって、この手順を作成して、手順によってマスターを動的に変更します

delimiter //

CREATE PROCEDURE change_master( in host_ip varchar(50))

begin

stop slave;

CHANGE MASTER TO MASTER_HOST = host_ip, MASTER_PORT=3306, MASTER_USER='replication', MASTER_PASSWORD='slave';

start slave;

end;
//

しかし、私はエラーが発生しています。

エラー 1064 (42000): SQL 構文にエラーがあります。near 'host_ip, MASTER_PORT=3306, MASTER_USER='replication', MASTER_PASSWORD='slave'; を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。4 行目の s'

空欄にしておけば大丈夫

例えば。

CHANGE MASTER TO MASTER_HOST = '', MASTER_PORT=3306, MASTER_USER='replication', MASTER_PASSWORD='slave';

何度も試しましたが、このクエリでは変数を使用できません。なぜですか?

あなたが知っているなら、私を助けてください。

ありがとう 。

4

1 に答える 1

3

ホスト値は引用符で囲む必要があります。これは、準備済みステートメントを使用しない限り不可能だと思います。

delimiter //

CREATE PROCEDURE change_master( in host_ip varchar(50))

begin

set @ssql:=concat("CHANGE MASTER TO MASTER_HOST = '",host_ip,"', MASTER_PORT=3306, MASTER_USER='replication', MASTER_PASSWORD='slave'");

stop slave;

prepare sql_stm from @ssql;
execute sql_stm;
deallocate prepare sql_stm;

start slave;

end//
delimiter ;

よろしく!ティネル・バーブ

于 2012-11-29T13:28:04.437 に答える