linux备份mysql文件并恢复的脚本,以及其中出现的错误:ERROR: ASCII '\0' appeared in the statement

首先是在网上找了一下教程,代码很简单

#!/bin/bash

folder=~/test
time=`date +%Y%m%d`

mysqldump -u user -p pwd -hlocalhost databasename | gzip > $folder/databasename_$time.sql.gz
#
find $folder -name ‘databasename_*.sql.gz‘ -type f -mtime +7 -exec rm {} \;
#
gunzip < $folder/databasename_$time.sql.gz | mysql -hlocalhost -uuser -ppwd databasename

因为写python代码习惯了,碰到=就自然而然敲空格,结果很多变量都没有值,所以这里需要注意一下,然后user和pwd就是你自己数据的用户名和密码,databasename就是你要操作的数据库名称,因为不想浪费内存就直接将mysqldump生成的sql文件进行了压缩处理,然后中间的命令就是找到七天以前的文件并进行删除操作,-exec是值后面的命令将会被执行,大括号是被执行对象集合,后面以分号结尾,加一个反斜杠防止被转义,第三行命令就是从gzip文件中恢复数据到数据库,一开始我是用gzip,然后就报了一个错误:

ERROR: ASCII ‘\0‘ appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII ‘\0‘ is expected. Query: ‘.

我去搜索了一下发现没有什么好的解决方案,然后把sql语句解压后用命令发现可以执行.sql文件,就试了一下不使用gzip改用gunzip,然后就脚本就成功运行并且没有相类似的报错了。

后面的定时执行也顺带提一下,

# chmod +x bashname.sh  --为脚本添加执行权限
# crontab -e
00 3 * * * root ~/bashname.sh
# 表示每天3点00分执行脚本

然后重启一下crontab就可以了。

linux备份mysql文件并恢复的脚本,以及其中出现的错误:ERROR: ASCII '\0' appeared in the statement

原文地址:https://www.cnblogs.com/zzy0306/p/8858093.html

时间: 2024-11-02 02:10:15

linux备份mysql文件并恢复的脚本,以及其中出现的错误:ERROR: ASCII '\0' appeared in the statement的相关文章

用备份控制文件的恢复

用备份控制文件的恢复,控制文件中不包含数据文件,但联机日志中有           alter database backup controlfile to 'D:\control.ctl';           create tablespace tp1 datafile 'D:/tp1.dbf' size 10M;           create table t1(id int,name varchar2(10)) tablespace tp1;           insert into

[转]一个备份MySQL数据库的简单Shell脚本

本文翻译自 iSystemAdmin 的 <A Simple Shell Script to Backup MySQL Database> Shell脚本是我们写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行.我们也可以逐一敲入命令手动执行.如果我们要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反复运行这些命令了. 我首先要在本文带给你的是完整脚本.后面会对该脚本做说明.我假定你已经知道shell scripting. mysqldump和cronta

linux下mysql 文件导入导出

最近在做mysql的数据导入导出得到的一些经验,记录下. 1.首先要开通导入导出的功能,需要设置一个mysql的配置 可以在 my.conf 文件的最后增加配置项 secure-file-priv='' 用这个命令查到当前的设置 SHOW VARIABLES LIKE '%secure_file_priv%'; 如果为 NULL 表示禁止导入导出,如果指定了具体路径,则导入导出必须在这个路径下,如果为空字符串,则可以导出到任意路径(必须要有足够权限写任意的路径权限) 如果权限不够则可以默认到my

linux系统误删除文件怎么恢复

参考 http://wandiankafei.blog.51cto.com/10878910/1716201 方案1)现在我向大家介绍使用extundelete恢复文件(适合rhel6.X系统的ext4) 安装: 下载 extundelete-0.2.4.tar.bz2  wget  http://netassist.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 tar -jx

用samba和Microsoft Sync Toy从linux备份日志文件到windows

利用samba使linux系统日志备份到windows系统,以便查看与分析. 一.linux作为服务器, 1.vi  /etc/samba/smb.conf 在文件结尾添加如下行:[share]comment=this is Linux share directorypath=/home/myth/share hosts allow = 172.28.8.177 public=yeswritable=yes 保存退出:wq 2.重启smb服务 service smb restart 二.wind

Linux下mysql数据库损坏恢复

最近想买服务器上碰到一个坑,购买的阿里云服务器,20G的系统盘,前任那个家伙把mysql安装在系统盘,并且datadir也是定位在系统盘.终于,撑爆了,异常了,mysql服务无法启动,好在将datadir下的数据文件全部都做了备份.特别是ibdata1文件做了备份. 关于ibdata1文件的作用在百度里面查询到的信息如下: 这个文件超级大, 查了一下, 大概的作用如下 是储存的格式INNODB类型数据状态下,ibdata用来储存文件的数据而库名的文件夹里面的那些表文件只是结构而已 由于mysql

linux 转移mysql文件操作流程

1.现将mysql停服 2.将文件拷贝到指定目录cp ./sales_trade_2.ibd /db/data/mysql/data_warehouse/sales_trade_2.ibd 3.检查新旧文件大小是否一致 4.删除旧文件rm -rf ./sales_trade_2.ibd 5.创建软连接(硬连接不能夸分区)ln -s /db/data/mysql/data_warehouse/sales_trade_2.ibd /data/data/mysql/data_warehouse/2.i

没有文件扩展&quot;.js&quot;的脚本引擎 解决办法

在命令行运行JScript脚本时,遇到如下的错误提示: “输入错误: 没有文件扩展“.js”的脚本引擎.” 这样的错误,原因是因为JS扩展名的文件被其他软件关联了,需要取消关联. 如系统中安装了ULTRAEDIT或者E钻加密软件等,就需要去掉关联: 或者如下解决方法: 在运行中输入“regedit”进入注册表, 只需要把[HKEY_CLASSES_ROOT\.js] 项下的那个默认值改成 "JSFile" 就可以正常运行JS 文件了.

Linux下Mysql数据库备份和恢复全攻略

很多用户都有过丢失宝贵数据的经历,随着大量的数据被存入到MySQL数据库中,再加上错误地使用DROP DATABASE命令.系统崩溃或对表结构进行编辑等操作,都可能酿成灾难性的损失.所以对MySQL数据库进行备份,以备在出现意外时及时进行恢复是非常必要的. 一. 使用mysql相关命令进行简单的本地备份     1 mysqlldump命令 mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法.