MySQL学习——备份和还原
MySQL学习——备份和还原
摘要:本文主要学习了如何备份和还原数据库。
部分内容来自以下博客:
https://www.cnblogs.com/chenmh/p/5300370.html
常用命令
导出数据
导出2019年1月的数据,数据库是ide,表是user,要求不需要导出建库语句,要求使用完成的插入语句,并且合并插入:
[root@localhost ~]# mysqldump -h 127.0.0.1 -P -uroot -p'' --no-create-info --databases ide --tables user \
> --where=" date >= '2019-01-01' and date < '2019-02-01' " --complete-insert --extended-insert > '/data/dump/201901.txt'
导入数据
[root@localhost ~]# mysql -uroot -p123456 database < db_back.sql
导出数据
导出数据一般使用mysqldump命令在Linux系统执行。
语法
导出全部数据库:
mysqldump [OPTIONS] --all-databases [OPTIONS]
导出指定数据库:
mysqldump [OPTIONS] --databases DB1 [DB2 DB3...] [OPTIONS]
导出指定数据库的指定表:
mysqldump [OPTIONS] --database DB --tables TB [TB2 TB3...] [OPTIONS]
说明
用户名:
登录数据库的用户名,当前用户可省略该配置,“-u”后面紧跟用户名,或者使用“--user=”后面紧跟用户名的方式。
--user, -u
密码:
登录数据库的密码,“-p”后面紧跟密码,或使用“--password=”后面紧跟密码的方式。
--password, -p
主机地址:
设置数据库所在的主机地址,默认是localhost。
--host, -h
端口号:
设置用于连接的端口号。
-P, --port
连接协议:
设置使用的连接协议,取值有TCP、SOCKET、PIPE、MEMORY四种。
--protocol
套接字文件:
指定当连接localhost时的套接字文件位置,默认路径是/tmp/mysql.sock。
-S, --socket
导出全部数据库:
--all-databases, -A
导出指定数据库:
--databases, -B
导出指定表:
只能针对一个数据库进行导出,并且导出的内容中没有创建数据库的判断语句。
--tables
不导出指定表:
指定忽略多个表时,需要重复多次,每次一个表,每个表必须同时指定数据库和表名。
--ignore-table
导出全部表空间:
--all-tablespaces, -Y
不导出表空间信息:
--no-tablespaces, -y
不添加创建数据库语句:
默认添加。
--no-create-db, -n
添加删除数据库语句:
默认不添加。
--add-drop-database
不添加创建表语句:
默认添加。
--no-create-info, -t
添加删除表语句:
默认添加,使用“--skip-add-drop-table”参数取消。
--add-drop-table
–-skip-add-drop-table
不导出数据只导出表结构:
--no-data, -d
导出存储过程以及自定义函数:
--routines, -R
在每个表导出前锁表并在导出后解锁:
默认为打开状态,使用“--skip-add-locks”参数取消。
--add-locks
--skip-add-locks
设置默认的字符集:
默认是utf8。
--default-character-set
在客户端和服务器之间启用压缩传递所有信息:
--compress, -C
处理换行:
直接输出到指定文件中。该选项应该用在使用回车换行对(\\r\\n)换行的系统上(例如:DOS,Windows)。该选项确保只有一行被使用。
--result-file, -r
添加导出时间:
将导出时间添加到输出文件中。默认为打开状态,使用“--skip-dump-date”参数取消。
--dump-date
--skip-dump-date
只导出符合指定条件的记录:
如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。
--where, -w
合并多个插入语句:
默认开启,使用“--skip-extended-insert”关闭。
--extended-insert
--skip-extended-insert
使用完整的插入语句:
使用包含列名称的完整插入语句。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。
--complete-insert, -c
忽略插入错误:
默认不添加,在插入语句中添加忽略错误语句。
--insert-ignore
服务器发送和接受的最大包长度:
客户端/服务器之间通信的缓存区的最大大小,最大为1GB。
--max_allowed_packet
强制插入:
在表转储过程中,即使出现SQL错误也继续。
--force, -f
实例
导出全部数据库:
[root@localhost ~]# mysqldump -h127.0.0. -uroot -p --all-databases > db_back.sql
导出指定数据库:
[root@localhost ~]# mysqldump -h127.0.0. -uroot -p --databases test demo > db_back.sql
导出指定表:
[root@localhost ~]# mysqldump -h127.0.0. -uroot -p --database test --tables demo user > db_back.sql
不导出指定表:
[root@localhost ~]# mysqldump -h127.0.0. -uroot -p --all-databases \
> --ignore-table=database.table1 --ignore-table=database.table2 > db_back.sql
设置默认字符集:
[root@localhost ~]# mysqldump -h127.0.0. -uroot -p --all-databases --default-character-set=latin1 > db_back.sql
处理换行:
[root@localhost ~]# mysqldump -h127.0.0. -uroot -p --all-databases --result-file=/tmp/mysqldump_result_file.txt
只导出符合指定条件的记录:
[root@localhost ~]# mysqldump -h127.0.0. -uroot -p --all-databases --where=" id=1 limit 10"
使用完整的插入语句:
[root@localhost ~]# mysqldump -h127.0.0. -uroot -p --all-databases --complete-insert
导入数据
导入数据有两种方式,一种是在Linux系统使用<命令导入,另一种是在MySQL数据库使用source命令导入。
语法
在Linux系统使用<命令:
mysql -u用户名 -p密码 数据库名 < 文件路径
在MySQL数据库使用source命令:
source 文件路径
实例
在Linux系统使用<命令:
[root@localhost ~]# mysql -uroot -p123456 database < db_back.sql
在MySQL数据库使用source命令:
mysql> source /home/user/data/db_back.sql
效率比较
在文件较小的情况下,source速度比mysql高。在导入大的文件时,建议使用mysql命令。
优化导入速度
对于百M级以上文件,根据MySQL官方建议,有几个措施可以极大提高导入的速度。
修改配置文件
配置如下:
[mysqld]
bulk_insert_buffer_size=2G;
innodb_log_buffer_size=2G;
innodb_autoinc_lock_mode=;
说明:
对于MyISAM,调整系统参数:bulk_insert_buffer_size。改为至少单个文件大小的2倍以上。
对于InnoDB,调整系统参数:innodb_log_buffer_size。改为至少单个文件大小的2倍以上,导入完成后可以改回默认的8M,注意不是innodb_buffer_pool_size。
有自增列的,设置:innodb_autoinc_lock_mode的值为2。
删除索引
除主键外,删除其他索引,导入完成后重建索引。
执行批量脚本
bash脚本内容:
for SQL in *.sql;
do
echo $SQL;
sed -i '1i\SET autocommit=0;\nSET unique_checks=0;\nSET foreign_key_checks=0;' $SQL
sed -i '$a\COMMIT;\nSET autocommit=1;\nSET unique_checks=1;\nSET foreign_key_checks=1;' $SQL
done
说明:
关闭自动提交:autocommit=0。
关闭唯一索引检查:unique_checks=0。
关闭外键检查:foreign_key_checks=0。
MySQL学习——备份和还原的更多相关文章
- [转]MySQL数据库备份和还原的常用命令小结
MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下: 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword datab ...
- day 50 MySQL数据备份与还原(mysqldump)
MySQL数据备份与还原(mysqldump) 一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Databas ...
- mysql多线程备份与还原工具mydumper
(一)mydumper介绍 之前我们已经学过如何使用mysqldump备份恢复数据库:<mysql逻辑备份与还原工具mysqldump>,就目前来说,mysqldump是使用最广泛的MyS ...
- 转 MySQL 数据备份与还原
MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html 一.数据备份 1.使用mysqldump命令备份 mysqldum ...
- Linux下MySQL的备份与还原
Linux下MySQL的备份与还原 1. 备份 [root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录) [roo ...
- Mysql数据库备份和还原常用的命令
Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下 ...
- MySQL的备份和还原
MySQL的备份和还原 备份:副本 RAID1,RAID10:保证硬件损坏而不会业务中止: DROP TABLE mydb.tb1; 备份类型: 热备份.温备份和冷备 ...
- mysql数据备份和还原命令
mysql数据库备份和还原 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfil ...
- MySQL的备份与还原
原文:MySQL的备份与还原 MySQL备份和还原,都是利用mysqldump.mysql和source命令来完成的. 1.Win32下MySQL的备份与还原 1.1 备份 开始菜单 | 运行 | c ...
随机推荐
- 研究微信红包分配算法之Golang版
今天来看一下红包的分配,参考几年前流传的微信红包分配算法,今天用Golang实现一版,并测试验证结果. 微信红包的随机算法是怎样实现的?https://www.zhihu.com/question/2 ...
- 教你如何快速上手markdown语法,编写技术博客(史上最全最简,用MarkDown写博客)
首先,进行有道云笔记官网,新建一份markdown文档, 如下图 然后,在文档编辑区,左边,复制如下段落文字 加粗 斜线 标记颜色 下划线 废弃线 一级标题 二级标题 三级标题 四级标题 五级标题 六 ...
- Go语言实现:【剑指offer】和为S的连续正数序列
该题目来源于牛客网<剑指offer>专题. 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数 ...
- Go语言实现:【剑指offer】二叉树中和为某一值的路径
该题目来源于牛客网<剑指offer>专题. 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路 ...
- linux web站点常用压力测试工具httperf
一.工具下载&&安装 软件获取 ftp://ftp.hpl.hp.com/pub/httperf/ 这里使用的是如下的版本 ftp://ftp.hpl.hp.com/pub/httpe ...
- zabbix性能问题
在我们的zabbixserver端主机数量过多时,如果由server端去收集数据,zabbix会出现严重的性能问题,主要的表现有: 1.当被监控端达到一个量级的时候,web操作会卡,容易出现502 2 ...
- 分享下超实用的用skura frp做内网穿透的经验
操作目的: 使无公网ip的主机能被外网访问,实现ssh对服务器的远程管理 硬件准备: 1.服务端:skura frp主机(skura frp 免费提供,有待创建) 2.客户端:接在无线路由器(内网)上 ...
- linux中vim使用技巧
一.导入文件内容 :r 解释 导入文件 示例 编辑模式下 # 将/tmp/test.txt内容导入到光标所在的位置的下一行 :r /tmp/test.txt :! 解释 在编辑文件时,执行系统命令 示 ...
- 利用Graphics的截图功能CopyFromScreen
该方式是直接对屏幕进行截图操作 UserControl chartContainPanel = new UserControl(); Graphics graph = chartContainPane ...
- getElementsByTagName得到的对象
今天练习使用DOM创建html元素,想通过getElementsByTagName("body")获得body对象,然后建立和新创建的元素的关系,如下图: 其实,getElemen ...