道者编程


Mysql备份与恢复

1:备份基本格式:

 mysqldump -uroot -p123 --databases 88 -l -F > /tmp/88.sql

把88数据库导出到/tmp目录

-l:--lock-tables的简写,读锁,备份的时候加这个命令,所有的写入都不能操作,备份完以后自动解锁,主要是保证数据库完整性,-l不能用大写

-F:--flush-logs的简写,刷新日志,重新生成新的日志。

运行一下上面的命令


执行成功,这里有一个提示,不管它,MySQL 5.6 开始在命令行输入密码,就会提示这些安全警告信息。

如果数据量大,可以导出压缩:

mysqldump -uroot -p123 --databases 88 -l -F | gzip > /tmp/88.sql.gz

单独导出表:导出88数据库的goods和user表

mysqldump  -uroot -p123 --databases 88 --tables goods user -l -F > /tmp/88.sql

--tables:导出表

2:定时备份

(1):建立备份脚本,我这里选择/usr/local/bak

vi auto_bak_db.sh
(2):备份脚本

#!/bin/bash
rq=`date +%Y%m%d` #这里输出当天的日期 20180816
mkdir /usr/local/bak/$rq #按照日期建立文件夹,备份的数据库就在该文件夹下,bak目录要有写入权限
mysql/bin/mysqldump -uroot -p123--databases 数据库1 | gzip > /usr/local/bak/$rq/数据库1$rq.sql.gz
mysql/bin/mysqldump -uroot -p123--databases 数据库2 | gzip > /usr/local/bak/$rq/数据库2$rq.sql.gz
mysql/bin/mysqldump -uroot -p123--databases 数据库3 | gzip > /usr/local/bak/$rq/数据库3$rq.sql.gz
(3):添加脚本执行权限

chmod +x auto_bak_db.sh
 (4):定时执行

# crontab -e
01 03 * * * /usr/local/bak/auto_bak_db.sh
每天凌晨03点01分的时候程序执行备份。

3:导入数据库(恢复)两种方式

(1):source

mysql>source /tmp/88.sql

如果在某个数据库导入表,先进入数据库,use 数据库,然后执行以上命令

导入多个数据库,假如导入5个数据库,可以先写一个总文件,把其他5个需要导入的分别写入到这个总文件,然后直接导入这一个sql文件即可:

all.sql

source /tmp/1.sql
source /tmp/2.sql
source /tmp/3.sql
source /tmp/4.sql
source /tmp/5.sql
执行:

mysql>source /tmp/all.sql #一次导入多个

(2):mysql

mysql -uroot -p123 -v -f < /tmp/g.sql #导入g.sql数据库
mysql -uroot -p123 88 -v -f < /tmp/g.sql #导入g.sql数据库到88数据库
-v:查看导入的详细信息
-f:导入过程中遇到错误时,可以skip过去,执行执行后面的语句

区别:两种导入,source是在mysql命令行执行,mysql是shell命令执行,据说后一种要快一些。


最新评论:
1楼 广东省深圳市 电信 发表于 2018-08-16 17:05:30
老陈牛逼
共有 1 条记录  首页 上一页 下一页 尾页 1
我要评论:

看不清楚


链接