Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1095733
  • 博文数量: 186
  • 博客积分: 4939
  • 博客等级: 上校
  • 技术积分: 2075
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-08 17:15
文章分类

全部博文(186)

文章存档

2018年(1)

2017年(3)

2016年(11)

2015年(42)

2014年(21)

2013年(9)

2012年(18)

2011年(46)

2010年(35)

分类: Mysql/postgreSQL

2012-02-03 15:42:11

遇到一个mysql slave不同步procedure的问题。
在slave上查看
mysql> show procedure status where Name = 'test' \G;
没有任何信息,奇怪mysql 5.0以上才有的存储过程,按理应该是能自动同步的。正常情况如下
mysql> show procedure status where Name = 'test' \G;
*************************** 1. row ***************************
          Db: test
         Name: test
         Type: PROCEDURE
      Definer: root@localhost
     Modified: 。。。
      Created: 。。。
Security_type: DEFINER
      Comment:
binlog记录
# mysqlbinlog mysql-bin.000056|grep -i procedure
drop procedure if exists mappingProc;
CREATE DEFINER=`root`@`localhost` PROCEDURE `mappingProc`(out cnt int)
==========================================
现在需要手动处理了,mysqldump --no-data --no-create-info xxx >xxx.sql
然后在slave执行sql即可
==================
补充dump的时候mysqldump -R --trigger --single-transaction  xxx >xxx.sql

  其中,-d 表示--no-create-db, -n表示--no-data, -t表示--no-create-info, -R表示导出function和procedure。所以上述代码表示仅仅导出函数和存储过程,不导出表结构和数据。但是,这样导出的内容里,包含了trigger。再往mysql中导入时就会出问题,错误如下:

  error 1235 (42000) at line **: this version of mysql doesn't yet support 'multiple triggers with the same action time and event for one table'

 所以在导出时需要把trigger关闭。代码为

  mysqldump -u 数据库用户名 -p -n -t -d -r --triggers=false 数据库名 > 文件名

    复制表结构,create table like table_exist





阅读(1861) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~