环境linux mysql复制 一主一从
在 linux 的 mysql 的 从机器上每次遇到 莫名故障 从机器断开
每次总是要 用root帐号进入 控制台之后 slave stop; change master....; slave start
手忙脚乱 有时候容易错。
我在 复制库 下写了一个存储过程
之后在linux脚本里调用这个 存储过程
但是发生错误
CREATE PROCEDURE `slave`(p1 varchar(20), p2 int)
COMMENT 'This procedure generates'
BEGIN
set @file=p1;
set @pos=p2;
if (length(@file)>0) and (length(@pos)>0) then
slave stop;
set @tempSql=concat("CHANGE MASTER to master_host='10.1.1.0',master_user='rep',master_password='rep',master_log_file='mysql-bin.",@file,"',master_log_pos=",@pos);
PREPARE mainStmt FROM @tempsql;
EXECUTE mainStmt;shell 脚本呢调用这个存储过程,执行脚本发生错误。
有没有什么方法可以 执行这个存储过程 ??(或者我完全用脚本来做 不用存储过程
slave 应该是库级别的 估计存储过程不能做这个事情。---还没有确定这个
思考下 我直接这样用mysql -uroot -e"slave stop; change masterCHANGE MASTER to master_host='10.1.1.0',master_user='rep',master_password='rep',master_log_file='mysql-bin.",@file,"',master_log_pos=",@pos " ; slave start; "
如果脚本里这样用 ,会发现mysql-bin.",@file 这个外界传递的参数无法到里面去
猜测是可以做到 ,但shell 感觉哦还难做
)
在 linux 的 mysql 的 从机器上每次遇到 莫名故障 从机器断开
每次总是要 用root帐号进入 控制台之后 slave stop; change master....; slave start
手忙脚乱 有时候容易错。
我在 复制库 下写了一个存储过程
之后在linux脚本里调用这个 存储过程
但是发生错误
CREATE PROCEDURE `slave`(p1 varchar(20), p2 int)
COMMENT 'This procedure generates'
BEGIN
set @file=p1;
set @pos=p2;
if (length(@file)>0) and (length(@pos)>0) then
slave stop;
set @tempSql=concat("CHANGE MASTER to master_host='10.1.1.0',master_user='rep',master_password='rep',master_log_file='mysql-bin.",@file,"',master_log_pos=",@pos);
PREPARE mainStmt FROM @tempsql;
EXECUTE mainStmt;shell 脚本呢调用这个存储过程,执行脚本发生错误。
有没有什么方法可以 执行这个存储过程 ??(或者我完全用脚本来做 不用存储过程
slave 应该是库级别的 估计存储过程不能做这个事情。---还没有确定这个
思考下 我直接这样用mysql -uroot -e"slave stop; change masterCHANGE MASTER to master_host='10.1.1.0',master_user='rep',master_password='rep',master_log_file='mysql-bin.",@file,"',master_log_pos=",@pos " ; slave start; "
如果脚本里这样用 ,会发现mysql-bin.",@file 这个外界传递的参数无法到里面去
猜测是可以做到 ,但shell 感觉哦还难做
)
解决方案 »
- 我的数据库性别类型是枚举enum,然后string‘女’插入时可以,更新时就是Data truncated for column 'sex' at row 1
- MYSQL主键自增是否可以从0开始
- 一个MYSQL的问题,搞了很长时间没解决,请高手看下 谢谢了
- 我不小心把管理员账户删除了 ,怎么再建一个呀(新手)
- mysql 的一个问题
- 关联数据库插入数据的问题
- mysql_query()函数超时返回问题,期待高手进来!
- 删除MySQL数据库时出现错误
- PostGres 的一些問題. 來者有分.不夠再加!
- 请教:MYSQL的连接
- MYSQL数据库update问题
- mysql如何应付千万级别的数据量查询,愿闻其详
现在我思考如何从外面传入参数到这个里面 。 如果 master_log_file='前面没有 这个' 那么就很简单。现在如何才能把这个外面的动态参数放到 '后面去??
CREATE PROCEDURE `slave`(p1 varchar(20), p2 int)
COMMENT 'This procedure generates'
BEGIN
set @file=p1;
set @pos=p2;
if (length(@file)>0) and (length(@pos)>0) then
slave stop;
END IF;
set @tempSql=concat("CHANGE MASTER to master_host='10.1.1.0',master_user='rep',master_password='rep',master_log_file='mysql-bin.",@file,"',master_log_pos=",@pos);
PREPARE mainStmt FROM @tempsql;
EXECUTE mainStmt;END;$$
DELIMITER ;我觉得这样的方法不好;楼主最好解决为什么会出现问题的原因,解决掉;
2分析断的原因,并解决。
不外乎数据库原因,这是第一类,硬件原因,系统原因,内存原因,网络原因,这是第二类。分清是哪类就好象 断点续传,除了数据库的原因外,mysql设计的是从机可以自动恢复工作。解决过程可以用替换法,即1主2从。因为不太可能b和c的硬件都有问题,或系统都有问题。
即a-->b-->c
也就是说看看b和c是不是都会断,断时从机报什么错。你这脚本解决方案,不应该再考虑了。