percona MYSQL 5.7.13 5.7.14 MYSQLDUMP导入报错分隔符(修改,MYSQLDUMP代码)

  percona 5.7.13 5.7.14 MYSQLDUMP备份完成后不能呢导回去,
  文件一大了非常麻烦,最近遇到这样的问题。
  (root@testmy端)#,/mysqldata mysql3308/bin/mysql -uroot术;日志。sql
  输入密码:
  错误63:行分隔符必须遵循由分隔符的字符或字符串
  在第64行错误1064(42000):你有一个错误在您的SQL语法;检查手册对应于你的MySQL服务器版本的语法使用“在4号线附近
  
  
  其实这里就是分隔符后面的;;解析了,只要把;;转变为$ $就好了。
  root@testmy客户机# sed -我”s/;;/$ $/g”日志。sql
  (root@testmy端)#,/mysqldata mysql3308/bin/mysql -uroot术;日志。日志
  输入密码:
  (root@testmy端)#,
  
  
  当然我这里是测试库,如果真的是线上库量非常大作sed谈何容易。所以决定从,mysqldump下手改一下标识即可。
  下面是修改部分,因为,MYSQLDUMP是独立的工具,这些函数全是静态函数,可以放心修改,如果是外部函数真
  还不敢改,修改源码的客户/mysqldump.c 如下部分修改了:
  
  
  静态使用uint dump_events_for_db (char * db)
  2547年,,,,,,流(sql_file
  2548年,,,,,,“分隔符;;\ n”,
  2549年,,,,,,“% s;; \ n”
  2550年,,,,,,“分隔符;\ n”,
  
  
  修改为
  
  
  静态使用uint dump_events_for_db (char * db)
  2547年,,,,,,流(sql_file
  2548年,,,,,,“分隔符$ $ \ n”,
  2549年,,,,,,“% s $ $ \ n”
  2550年,,,,,,“分隔符;\ n”,
  
  静态孔隙dump_trigger_old(文件* sql_file、MYSQL_RES * show_triggers_rs
  ,,,,,,,,,,,,,,,MYSQL_ROW * show_trigger_row,
  ,,,,,,,,,,,,,,,const char * table_name)
  3247年,,,,流(sql_file
  3248年,,,,,“分隔符;;\ n”
  3249年,,,,,“/* !50003年设置会话SQL_MODE=\ " % s \ " */;; \ n”
  3250年,,,,,“/* !50003年创建*/?
  3251年,,,,,(* show_trigger_row) [6]);
  修改为:
  3247年,,,,流(sql_file
  3248年,,,,,“分隔符$ $ \ n”
  3249年,,,,,“/* !50003年设置会话SQL_MODE=\ " % s \ " */$ \ n "
  3250年,,,,,“/* !50003年创建*/?
  3251年,,,,,(* show_trigger_row) [6]);
  
  静态int dump_trigger(文件* sql_file、MYSQL_RES * show_create_trigger_rs
  ,,,,,,,,,,,,const char * db_name,
  ,,,,,,,,,,,,const char * db_cl_name)
  3334年,,,,,,流(sql_file
  3335年,,,,,,“分隔符;;\ n”
  3336年,,,,,,“/* !50003% s */;; \ n”
  3337年,,,,,,“分隔符;\ n”,
  3338年,,,,,,(const char *) (query_str !=零?query_str:行[2]));
  
  
  修改为:
  
  
  3334年,,,,,,流(sql_file
  3335年,,,,,,“分隔符$ $ \ n”
  3336年,,,,,,“/* !50003% s */$ $ \ n”
  3337年,,,,,,“分隔符;\ n”,
  3338年,,,,,,(const char *) (query_str !=零?query_str:行[2]));
  
  
  
  
  最后需要重新cmake一下使编译一下不需要使安装把,mysqldump拷贝到相应的目录即可
  修改后
  (root@testmy端)#更多的日志。日志| grep“$ $”
  分隔符$ $
  结束*/$ $
  分隔符$ $
  $ $
结束   
  
  (root@testmy端)#,/mysqldata mysql3308/bin/mysql -uroot术;日志。日志
  输入密码:
  (root@testmy端)#,
  
  
  不会报错了。
     
     & lt;/日志。日志
  & lt;/日志。日志
  & lt;/日志。sql

percona MYSQL 5.7.13 5.7.14 MYSQLDUMP导入报错分隔符(修改,MYSQLDUMP代码)