mysql导入sql文件问题
2015-04-24 14:37
501 查看
公司用的阿里云RDS数据库,有一个表,每天会产生几百万的程序日志。不到一个星期,空间就满了。
所以需要每天清理一下表(truncate table),把当天的数据备份下来,下载到公司内网的备份服务器。
脚本已经做好了,每天晚上执行一次。
问题是用脚本导入的时候,出错了,无法导入。
刚开始shell是用
mysql -u root -proot -e "use dts;source /backup/dts_message_201404.sql"
出现报错
ERROR 1839 (HY000) at line 24 in file: 'dts_message_201504.sql': @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON.
然后就退出了。
但是mysql -u root -proot
mysql> use dts;
mysql> source /backup/dts_message_201404.sql;
虽然有一个报错,但是还是可以继续导入的。
后来脚本改成
mysql -u root -proot dts < dts_message_20150424.sql
还是报错
ERROR 1839 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON.
后来发现有一个参数-f,可以忽略错误,继续执行
然后测试了一下,果然奏效,nice啊!
脚本如下:
#!/bin/bash
time=`date -d today +%d`
mysql -f -u root -proot dts < /backup/dts_message_201504$time.sql
mysql -u root -proot -e "use dts;CREATE TABLE dts_message_201504$time (SELECT * FROM dts_message_201504);"
然后做个任务,每天执行一下就好了。
不用每天手动执行了。
但是到了下个月的1号,就看不到前一天的数据
所以脚本改了下
#!/bin/bash
time=`date -d "1 day ago" +"%m%d"`
a=`date -d today +%d`
if [ $a -eq 01 ];then
timea=`date -d "-1 month" +"%m"`
else
timea=`date -d today +%m`
fi
/usr/local/mysql/bin/mysql -f -u root dts < /backup/dts_message_history_2015$time.sql
/usr/local/mysql/bin/mysql -u root -e "use dts;CREATE TABLE dts_message_history_2015$time (SELECT * FROM dts_message_history_2015$timea);"
sleep 1
find /backup -ctime 5 -type f -name "*.sql" -exec rm {} \;
本文出自 “陨落星空” 博客,请务必保留此出处http://xiao987334176.blog.51cto.com/2202382/1637953
所以需要每天清理一下表(truncate table),把当天的数据备份下来,下载到公司内网的备份服务器。
脚本已经做好了,每天晚上执行一次。
问题是用脚本导入的时候,出错了,无法导入。
刚开始shell是用
mysql -u root -proot -e "use dts;source /backup/dts_message_201404.sql"
出现报错
ERROR 1839 (HY000) at line 24 in file: 'dts_message_201504.sql': @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON.
然后就退出了。
但是mysql -u root -proot
mysql> use dts;
mysql> source /backup/dts_message_201404.sql;
虽然有一个报错,但是还是可以继续导入的。
后来脚本改成
mysql -u root -proot dts < dts_message_20150424.sql
还是报错
ERROR 1839 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON.
后来发现有一个参数-f,可以忽略错误,继续执行
然后测试了一下,果然奏效,nice啊!
脚本如下:
#!/bin/bash
time=`date -d today +%d`
mysql -f -u root -proot dts < /backup/dts_message_201504$time.sql
mysql -u root -proot -e "use dts;CREATE TABLE dts_message_201504$time (SELECT * FROM dts_message_201504);"
然后做个任务,每天执行一下就好了。
不用每天手动执行了。
但是到了下个月的1号,就看不到前一天的数据
所以脚本改了下
#!/bin/bash
time=`date -d "1 day ago" +"%m%d"`
a=`date -d today +%d`
if [ $a -eq 01 ];then
timea=`date -d "-1 month" +"%m"`
else
timea=`date -d today +%m`
fi
/usr/local/mysql/bin/mysql -f -u root dts < /backup/dts_message_history_2015$time.sql
/usr/local/mysql/bin/mysql -u root -e "use dts;CREATE TABLE dts_message_history_2015$time (SELECT * FROM dts_message_history_2015$timea);"
sleep 1
find /backup -ctime 5 -type f -name "*.sql" -exec rm {} \;
本文出自 “陨落星空” 博客,请务必保留此出处http://xiao987334176.blog.51cto.com/2202382/1637953
相关文章推荐
- 用SQL语句解决mysql导入大数据文件的问题
- 用SQL语句解决mysql导入大数据文件的问题
- mysql oracle sql文件备份恢复问题(外键约束导致导入sql需要按顺序)
- mysql 从文件导入sql 乱码问题...
- Mysql导入大容量SQL文件数据问题
- Mysql导入大容量SQL文件数据问题
- mysql导入sql文件时乱码问题
- MYSQL 数据库导入 SQL 文件出现乱码的问题
- MySQL导入导出.sql文件及备份乱码问题
- Mysql导入大容量SQL文件数据问题
- MySql使用全记录5 -----解决Windows下用命令导入sql文件时"Failed to open file"的问题
- mysql导入sql文件时乱码问题处理
- 解析MYSQL 数据库导入SQL 文件出现乱码的问题
- 解析MYSQL 数据库导入SQL 文件出现乱码的问题
- Mysql导入大SQL文件数据问题
- Mysql导入大容量SQL文件数据问题
- Mysql导入大容量SQL文件数据问题
- mysql导入sql文件时乱码问题
- MySQL导入大sql 文件大小限制问题的解决
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)