使用mysqldump命令导出文本文件
通过制定-tab=dir_name 参数来指定文本文件的导出路劲
需要在my.cnf 中先配置
secure_file_priv=/usr/local/mysql/backup/
比如导出course数据库的所有表的文本文件到=/usr/local/mysql/backup/目录下:
这个目录也需要mysql 权限才能导出
[root@master01 backup]# mysqldump -u root -p –tab=/usr/local/mysql/backup course
–fields-terminated-by=str参数指定每个字段值之间的间隔符,默认是tab
–fields-enclosed-by=char参数指定每个字段值使用什么字符括起来,默认是没有
–fields-optionally-enclosed-by=char参数指定对每个非数字类型的字段值使用什么字符括起来,默认没有
–lines-terminated-by=str参数指定行之间的结束符,默认是newline
比如:
[root@master01 backup]# mysqldump -u root -p –tab=/usr/local/mysql/backup –fields-terminated-by=, –fields-enclosed-by=’”’ –lines-terminated-by=0x0d0a course
针对文本文件(txt)到导入,分为两步, 先是导入表结构文件,再导入数据文件
表结构文件的导入可以使用mysql db1 < t1.sql或者source命令
数据文件的导入可以使用mysqlimport或者load data infile命令
模拟用文本文件导入数据,不删除表,删除表数据,再进行导入
mysqlimport 方式:
1 2 3 4 5
mysql> delete from students; mysql> exit; [root@master01 backup]# mysqlimport -u root -p --fields-terminated-by=, --fields-enclosed-by='"' --lines-terminated-by=0x0d0a course /usr/local/mysql/backup/students.txt Enter password: course.students: Records: 10 Deleted: 0 Skipped: 0 Warnings: 0
或者使用load data infile 方式
1 2 3 4
mysql> use course; mysql> select * from students; mysql> delete from students; mysql> load data infile '/usr/local/mysql/backup/students.txt' into table students FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
自定义脚本定时备份
检测所有用户定义的数据库,定时备份所有的数据库,并上传到备份服务器
Python脚本还是shell 脚本,想怎么写随你
样例脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#!/bin/sh #################################### ##Function: mysql_dump ##Version: 1.1 # ##################################### MYUSER=system PORT=5001 DB_DATE=$(date +%F) DB_NAME=$(uname -n) MYPASS=******** MYLOGIN=" /data/application/mysql/bin/mysql -u$MYUSER -p$MYPASS -P$PORT “ MYDUMP=" /data/application/mysql/bin/mysqldump -u$MYUSER -p$MYPASS -P$PORT -B “ DATABASE=" $($MYLOGIN -e "show databases;" |egrep -vi "information_schema|database|performance_schema|mysql") “ for dbname in $DATABASE do MYDIR=/server/backup/$dbname [ ! -d $MYDIR ] && mkdir -p $MYDIR $MYDUMP $dbname --ignore-table=opsys.user_action|gzip >$MYDIR/${dbname}_${DB_NAME}_${DB_DATE}_sql.gz Done find /server/backup/ -type f -name "*.gz" -mtime +3|xargs rm –rf find /server/backup/* -type d -name "*" -exec rsync -avz {} data_backup:/data/backup/ \;
Select … into outfield 备份
select … into outfile命令可以用来导出表中符合条件的数据到文本文件,不导出表结构,仅用来导出数据
1 2 3 4 5
SELECT INTO…OUTFILE语法: select * from Table into outfile '/路径/文件名' fields terminated by ',' enclosed by '"' lines terminated by ‘\r\n
outfile 输出文件路劲必须在my.cnf 中配置secure_file_priv=/usr/local/mysql/backup/
TERMINATED BY用来指定字段值之间的符号,例如, “TERMINATED BY ‘,’”指定了逗号作为两个字段值之间的标志。