mysql中的master到slave复制

时间:2012-08-30 09:36:37

标签: mysql

我需要mysql中的master to slave复制。

所以我创建此过程以通过过程

动态更改主数据
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语法有错误;检查   手册,对应右边的MySQL服务器版本   要在'host_ip,MASTER_PORT = 3306附近使用的语法,   MASTER_USER ='复制',MASTER_PASSWORD ='奴隶'; s'在第4行

如果我把它留空,那么很好

例如

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

我尝试了很多次但是在这个查询中我无法使用任何变量 为什么呢?

如果你知道帮助我。

谢谢。

1 个答案:

答案 0 :(得分:2)

主机值必须用引号括起来。 我认为除非你使用准备好的声明,否则这是不可能的。

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 ;

问候! Tinel Barb