mysql 导出导入数据库(Mysqldump)备份
- 使用mysql不熟练啊!!!
- mysqldump导出数据库,必须以cmd命令行的形式,在Navicat中以新建查询形式使用Mysqldump不好使的。(本来使用Navicat转储SQL,再导入SQL,但是报错,半天没解决闹心,决定使用Mysqldump)
- Mysqldump在cmd中导出数据库,有一点必须要注意,就是不能登录mysql,如果使用mysql -h 47.94.88.36 -u root -p登录了。那么再使用mysqldump -h 47.94.88.36 -u root -p dbname tablename > db.sql导出数据表结构和数据会提示你加分号,加了分号之后会报错(我觉得和分号无关,主要是因为登录了吧?)。意思就是不能登录,要在未登录的状态下使用mysqldump -h 47.94.88.36 -u root -p dbname tablename > db.sql 命令,然后提示输入密码,就能够成功导出数据了。而且在使用此命令的时候,后面不能加 ;。
- 备份
- 备份整个数据库:
mysqldump -uroot -proot --lock-all-tables --databases emotional_course > e:/project/SQLBackUp/course.sql #emotional_course 是数据库名
# 导出一个数据库, 注意选项参数 --databases 这里, 不要使用--database官方不推荐使用,而且以后的版本可能会移除.(会有一个warning)
mysqldump -uroot -proot emotional_course > e:/project/SQLBackUp/course.sql #区别是上面的会锁表(全局读锁),并且在SQL文件的第一行会创建数据库, 这条语句不会再SQL文件中创建数据库--lock-all-tables: 在mysqldump导出的整个过程中以read方式锁住所有表, information_schema(不会导出)performance_schema(不会导出)指定--lock-all-tables参数,那么从一开始就对整个mysql实例加global read lock锁。这整个全局读锁会一直持续到导出结束。导出的数据库在数据一致性上是被严格保证的,也就是数据是一致性的。
在备份的时候, 备份数据会上锁(写锁). - 备份某个表:
mysqldump -uroot -proot emotional_course user > e:/project/SQLBackUp/course_user.sql #备份一个表
mysqldump -uroot -proot emotional_course user course > e:/project/SQLBackUp/userandcourse.sql #备份多个表, 注意表名与表名之间是空格, 不要加标点符号(备份user表和course表) - 备份多个数据库:
mysqldump -uroot -proot --databases emotional_course bbb_cxk > e:/project/SQLBackUp/userandcourse.sql #需要注意的点和上面的一样,库名和库名之间只有空格, 还需要注意一点, 就是第一次备份数据库到a.sql文件,
如果第二次备份还是a.sql文件, 那么会覆盖掉之前的备份, 需要特别注意的. - 备份全部数据库
mysqldump -uroot -proot --all-databases > e:/project/SQLBackUp/userandcourse.sql # 输入这个命令后会报错,提示信息如下:
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
因为mysqldump默认是不备份事件表的,只有加了--events 才会解决,加上--events --ignore-table=mysql.events参数即可.
mysqldump -uroot -proot --events --ignore-table=mysql.events --all-databases > e:/project/SQLBackUp/userandcourse.sqlmysql数据库(系统自带的)会被备份, information_schema 和 performance_schema 两个数据库不会被备份.
- 编写shell脚本执行mysql备份
#!/bin/bash
number= #保留30天的备份文件
backup_dir=/home/bneglect/SQLBackup #保存备份文件的目录
backup_date=`date +%Y%m%d%H%M%S` #备份时间
username=root #数据库用户
password=root #数据库密码
db_name=fortune #数据库名
if [ ! -d $backup_dir ]
then
mkdir -p $backup_dir;
fi
# 判断目录是否存在, 不存在则创建
mysqldump -u$username -p$password $db_name >
$backup_dir/$db_name-$backup_date.sql #备份的目录及文件名
echo "create $backup_dir/$db_name-$backup_date.sql" >> $backup_dir/backup.log #备份的日志
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9}' | wc -l` #统计目录下的SQL文件个数
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9}' | head -1` #第一个文件.SQL文件
if [ $count -gt $number ]
then
rm -f $deffile
echo "delete $delfile" >> $backup_dir/backup.log
fi
# 删除最早的备份文件, 一直保留30天的即可使用-ppassword会报一个warning, 提示在命令行下输入密码不安全, 其实就是想要用户Mysqldump 回车之后输入密码, 因为命令行下输入密码会暴露明文密码的. 不过不影响备份的. 如果不想报这个warning, 可以去配置mysqld.cnf 配置文件.
- 编辑定时任务, 让shell脚本自动执行备份数据库.
crontab -e 编辑计划任务, 第一次会选择文本模式, 选择3(vim.basic)即可.* * * /home/bneglect/bneglect_test/mysqlBackUp.sh
保存退出, OK了.有的服务器直接wq就可以保存退出. 有的按照------> crontab编辑文件后保存方式 Ctrl+o, 出现"file name to write.."然后回车, 然后Ctrl+x 显示"crontab: installing new crontab"成功(Ubuntu系统)
- 注意如果计划任务不执行, 一般从4各方面着手排查
- cron服务是否启动(Ubuntu上是cron, 有的系统是crond) service cron status 或 systemctl status cron 查看服务状态 service cron start 或 systemctl start cron 启动
- shell脚本是否有语法错误, 可以手动执行shell脚本, 如果成功执行, 就是别的原因
- shell脚本的路径要写成绝对路径,不能使用相对路径.
- 创建计划任务的用户没有执行shell脚本的权限, 举例: bneglect创建的计划任务, 但是mysqlBackUp.sh 的属主和属组可能是root(反正不是bneglect), 解决办法: (1)添加bneglect到root属组(2)修改权限为777(3)属主改成bneglect, 不过一般都是改 777
- 备份整个数据库:
mysql 导出导入数据库(Mysqldump)备份的更多相关文章
- mysql导出导入数据库和表学习笔记
一.mysql导出数据库和表 1.导出单个数据库 mysqldump [-h Host] -u Username -p [PASSWORD] db_name > db_name.sql 2.导出 ...
- mysql导出导入数据库表
1.下载数据库 mysqldump db_name -h 192.168.5.162 -uroot -p > /var/www/db_name.sql(这个可以自定义) 2,下载数据库中的某个 ...
- Mysql导出导入数据库
1. 导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u root -p database > database.sql 2. 导入数 ...
- mysql 导出导入数据库中所有数据
导出数据库所有数据 >mysqldump -uroot -proot -all hzgajzyz>e:/hzgajzyz.sql 导入数据库所有数据 >source e:/hzgaj ...
- mysql 导出导入数据库
导入mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 < db.all.sql导出 mysqldum ...
- mysql导出整个数据库
mysql导出整个数据库 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql mysqldump - ...
- 第二百九十节,MySQL数据库-MySQL命令行导出导入数据库,数据库备份还原
MySQL命令行导出导入数据库,数据库备份还原 MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program ...
- mysql进阶(十三)命令行导出导入数据库
MySQL命令行导出导入数据库 MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd D:\Program Files\ ...
- mysql导出导入所有数据库
导出所有数据库 mysqldump -uroot -p123456 --all-databases > /home/aa.sql 导入所有数据库 mysql -uroot -p123456 &l ...
随机推荐
- 石子合并2——区间DP【洛谷P1880题解】
[区间dp让人头痛……还是要多写些题目练手,抽空写篇博客总结一下] 这题区间dp入门题,理解区间dp或者练手都很妙 ——题目链接—— (或者直接看下面) 题面 在一个圆形操场的四周摆放N堆石子,现要将 ...
- python 高阶函数 lamdad reduce map
## def use_filer(l):## # 过滤偶数# rest = filter(lambda n: n % 2 != 0, l)# return rest## if __name__ == ...
- MySQ-表关系-外键-修改表结构-复制表-03
目录 前言 不合理的表结构(案例) 带来的问题 如何解决问题? 如何确定表关系? 表关系 一对多 多对多 一对一 应用场景 判断表关系最简单的语法 三种关系常见案例 如何建立表关系? 外键 forei ...
- 小米soar
SOAR 简介 SOAR,即 SQL Optimizer And Rewriter,是一款 SQL 智能优化与改写工具,由小米运维 DBA 团队出品 SOAR 体系架构 SOAR主要由语法解析器,集成 ...
- 网站QQ客服链接代码
个人QQ客服代码 <a href="tencent://message/?uin=QQ号码">在线咨询</a> 企业QQ客服代码 <a href=&q ...
- Codeforces1263D-Secret Passwords
题意 给n个字符串,两个字符串之间如果有相同的字符,那么两个就等价,等价关系可以传递,问最后有多少个等价类. 分析 考虑并查集或者dfs联通块,如果是并查集的话,对于当前字符串的某个字符,肯定要和这个 ...
- 推荐系统遇上深度学习(十)--GBDT+LR融合方案实战
推荐系统遇上深度学习(十)--GBDT+LR融合方案实战 0.8012018.05.19 16:17:18字数 2068阅读 22568 推荐系统遇上深度学习系列:推荐系统遇上深度学习(一)--FM模 ...
- ccpc湘潭邀请赛 Partial Sum
选定最多m的区间,使区间和的绝对值最大.但是左右端点不能重复选取 首先涉及到区间和的问题,就应该想到用前缀和去优化 这里对前缀和排序 然后贪心的去选取最大.次大 (比赛的时候脑子堵的很,没想出来 可惜 ...
- gflags 编译动态库
gflags 编译动态库 这里涉及到gflags的安装,原来使用 sudo apt-get install libgflags-dev 但是后面有人在环境中下载安装了libgflags的安装包,解压后 ...
- luogu题解 P2860[USACO冗余路径Redundant Paths] 缩点+桥
题目链接 https://www.luogu.org/problemnew/show/P2860 https://www.lydsy.com/JudgeOnline/problem.php?id=17 ...