MySql数据库备份的几种方式
mysqldump工具备份
备份整个数据库
$> mysqldump -u root -h host -p dbname > backdb.sql
备份数据库中的某个表
$> mysqldump -u root -h host -p dbname tbname1, tbname2 > backdb.sql
备份多个数据库
$> mysqldump -u root -h host -p --databases dbname1, dbname2 > backdb.sql
备份系统中所有数据库
$> mysqldump -u root -h host -p --all-databases > backdb.sql
直接复制整个数据库目录(对于InnoDB存储引擎不适用)备份
windowns: installpath/mysql/data
linux: /var/lib/mysql
在复制前需要先执行如下命令:
MYSQL> LOCK TABLES;
# 在复制过程中允许客户继续查询表,
MYSQL> FLUSH TABLES;
# 将激活的索引页写入硬盘。
mysqlhotcopy工具备份
备份数据库或表最快的途径,只能运行在数据库目录所在的机器上,并且只能备份MyISAM类型的表。
要使用该备份方法必须可以访问备份的表文件。
$> mysqlhotcopy -u root -p dbname /path/to/new_directory;
#将数据库复制到new_directory目录。
mysql命令导入sql文件还原
$> mysql -u root -p [dbname] < backup.sql
# 执行前需要先创建dbname数据库,如果backup.sql是mysqldump创建的备份文件则执行是不需要dbname。
MYSQL> source backup.sql;
# 执行source命令前需要先选择数据库。
直接复制数据库目录还原
注: 该方式必须确保原数据库和待还原的数据库主版本号一致,并且只适用于MyISAM引擎的表。
- 关闭mysql服务。
- 将备份的文件或目录覆盖mysql的data目录。
- 启动mysql服务。
- 对于linux系统,复制完文件后需要将文件的用户和组更改为mysql运行的用户和组。
mysqlhotcopy快速恢复
停止mysql服务,将备份数据库文件复制到存放数据的位置(mysql的data文件夹),重先启动mysql服务即可(可能需要指定数据库文件的所有者)。
$> cp -R /usr/backup/test /usr/local/mysql/data
# 如果恢复的数据库已经存在,则使用DROP语句删除已经存在的数据库之后,恢复才能成功,还需要保证数据库版本兼容。
相同版本数据库之间迁移
$> mysqldump -h www.abc.com -uroot -p password dbname |
$> mysqldump -h www.bcd.com -uroot -p password
# 将服务器www.abc.com的数据库dbname迁移到服务器www.bcd.com的相同版本数据库上。
不同版本的mysql数据库之间的迁移
备份原数据库。
卸载原数据库。
安装新数据库。
在新数据库中还原备份的数据库数据。
数据库用户访问信息需要备份mysql数据库。
默认字符集问题,MySQL4.x中使用latin1作为默认字符集,mysql5.x使用utf8作为默认字符集。如果有中文数据需要对默认字符集进行更改。
不同数据库之间的迁移
MyODBC工具实现MySQL和SQL Server之间的迁移。
MySQL Migration Toolkit工具。
表的导出和导入
SELECT ...... INTO OUTFILE 导出文本文件,该方法只能导出到数据库服务器上,并且导出文件不能已存在。
MYSQL> SELECT ...... INTO OUTFILE filename [OPTIONS]
MYSQL> SELECT * FROM test.person INTO OUTFILE "C:\person0.txt";
# 将表person里的数据导入为文本文件person0.txt。
mysqldump文件导出文本文件(和INTO OUTFILE不一样的是该方法所有的选项不需要添加引号)
$> mysqldump -T path -u root -p dbname [tables] [OPTIONS]
# -T参数表明导出文本文件。path导出数据的目录。
$> mysqldump -T C:\test person -u root -p
# 将test表中的person表导出到文本文件。执行成功后test目录下会有两个文件,person.sql和person.txt
mysql命令导出文本文件
MYSQL> mysql -u root -p --execute="SELECT * FROM person;" test > C:\person3.txt;
# 将test数据库中的person表数据导出到person3.txt文本文件中。--vartical参数可以将一行分为多行显示。
MYSQL> mysql -u root -p --vartical --execute="SELECT * FROM person;" test > C:\person3.txt;
# --html将表导出为html文件,--xml文件将表导出为xml文件
LOAD DATA INFILE导入文本文件
MYSQL> LOAD DATA INFILE 'filename.txt' INTO TABLE tablename [OPTIONS] [IGNORE number LINES];
# [IGNORE number LINES]表示忽略行数
MYSQL> LOAD DATA INFILE 'C:\person0.txt' INTO TABLE test.person;
mysqlimport导入文本文件
$> mysqlimport -u root -p dbname filename.txt [OPSTONS]
# 导入的表名有文件名决定,导入数据之前表必须存在
$> mysqlimport -uroot -p test C:\backup\person.txt
# 将数据导入到test数据库的person表中。
使用mysqlbinlog恢复数据
$> mysqlbinlog [option] filename | mysql -u user -p password
# filename为二进制日志文件,
$> mysqlbinlog --stop-date="2013-03-30 15:27:47" D:\MySQL\log\binlog\binlog.000008 | mysql -u root -p password
# 根据日志文件binlog.000008将数据恢复到2013-03-30 15:27:47以前的操作。
启动二进制日志
log-bin = path/filename #日志文件存储目录和文件名
expire_log_days = 10 #日志自动删除时间
max_binlog_size = 100M # 日志文件最大大小
查看二进制日志
MYSQL> SHOW VARIABLES LIKE 'log_%';
MYSQL> SHOW BINARY LOGS;
$> mysqlbinlog filename
# filename为二进制日志文件名。
删除二进制日志
MYSQL> RESET MASTER; #删除所有二进制日志
MYSQL> PURGE {MASTER | BINARY} LOGS TO 'log_name'; #删除文件编号小于log_name编号的文件
MYSQL> PURGE {MASTER | BINARY} LOGS BEFORE 'date'; #删除指定日期以前的文件
暂时停止二进制日志(不需要重启mysql服务)
MYSQL> SET sql_log_bin = {0|1} #暂停或启动二进制日志。
MySql数据库备份的几种方式的更多相关文章
- MySQL数据库备份的4种方式
MySQL备份的4种方式 总结: 备份方法 备份速度 恢复速度 便捷性 功能 一般用于 cp 快 快 一般.灵活性低 很弱 少量数据备份 mysqldump 慢 慢 一般.可无视存储引擎的差异 一般 ...
- 【转载】Sqlserver数据库备份的几种方式
在实际的数据库Sqlserver的运维的过程中,很多时候我们需要做到数据的备份操作,可以做到定时备份,也可以进行手动数据库备份.在实际的过程中,有时候因业务需要备份出完整数据库,而有时候又因为实际业务 ...
- MySQL数据库优化的八种方式(经典必看)
引言: 关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂 偶尔发现了这篇文章,总结得很经典,文章流量也很大,所以拿到自己的总结文集中,积累优质文章,提升个人 ...
- MySQL数据库优化的八种方式
引言: 关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂 偶尔发现了这篇文章,总结得很经典,文章流量也很大,所以拿到自己的总结文集中,积累优质文章,提升个人能力 ...
- MySQL中备份的几种方式
前言: 并不是每家公司都高大上,并不是每家公司都会用一些很前沿的技术来做备份这一块,有些企业或者有些行业或者团队本身由于各方面的原因使用简单或者复杂的方式来做备份这块,这次这个文档算是对以前工作的总结 ...
- mysql表备份的一种方式
前提: 最近测试环境shop表经常出现表损坏不能正常查询,通过mysql的修复方法,暂时有效.故做该表的迁移操作. 思路是: 停止数据库的操作 1.备份老表. 2.创建一个结构一样的表. 3.将老表 ...
- MySQL数据库授权的两种方式
方法一:grant命令创建用户并授权(针对只修改权限) grant命令简单语法如下: grant all privileges on dbname.* to username@localhost id ...
- python对mysql数据库操作的三种不同方式
首先要说一下,在这个暑期如果没有什么特殊情况,我打算用python尝试写一个考试系统,希望能在下学期的python课程实际使用,并且尽量在此之前把用到的相关技术都以分篇博客的方式分享出来,有想要交流的 ...
- mysql备份的4种方式
mysql备份的4种方式 转载自:https://www.cnblogs.com/SQL888/p/5751631.html 总结: 备份方法 备份速度 恢复速度 便捷性 功能 一般用于 cp 快 快 ...
随机推荐
- node express+mysql搭建简易API服务—body-parser中间件
最近用express搭建了一个简单的RESTful风格的API服务,数据库使用mysql,主要用于获取数据库数据,模糊搜索等. 需要用到的模块: express:这个都很熟悉了: body-parse ...
- 想取得刚才nextval()的值时,放心大胆的用currval()吧,currval()的返回值并不会因为nextval()的并发访问而混乱
以前写sql的时候总是担心current()得到的值并不会绝对等于我上一次nextval()取得的值;因为可能其他线程并发访问nextval(). 先说结论吧:当你拿到一个数据库连接,先nextval ...
- CentOS 7 调整 home分区 扩大 root分区
总体过程: 把/home内容备份,然后将/home文件系统所在的逻辑卷删除,扩大/root文件系统,新建/home ,恢复/home内容 1.查看分区 df -h 2.备份home分区文件 tar c ...
- 使用heroku创建应用时报错 heroku does not appear to be a git repository
在跟着heroku的官方教程创建python应用时,到deploy-the-app这一步,要上传代码到heroku 的git仓库时,报的这个错误: 网上一搜,相关的答案居然极少,首页只出现一篇(还好这 ...
- Mybatis多表查询(一对一、一对多、多对多)
Mybatis的多表级联查询 . 一对一可以通过<association>实现,一对多和多对多通过<collection>实现. <discriminator> 元 ...
- synchronized的简单理解
synchronized能够保证在同一时刻只有一个线程执行该段代码. 使用synchronized能够防止多个线程同时并发访问程序的某些资源. synchronized既可以修饰变量,也可以修饰方法, ...
- SDL编程
一.简介 SDL是一个用C编写的跨平台的多媒体库,它通过OpenGL和Direct3D,提供了针对音频.视频.键盘.鼠标.控制杆及3D硬件的低级别的访问接口.它在MPEG播放软件.模拟器以及许多游戏中 ...
- 邮槽 匿名管道 命名管道 剪贴板 进程通讯 转自http://www.cnblogs.com/kzloser/archive/2012/11/04/2753367.html#
邮槽 通信流程: 服务器 客户端 注意: 邮槽是基于广播通信体系设计出来的,它采用无连接的不可靠的数据传输 邮槽可以实现一对多的单向通信,我们可以利用这个特点编写一个网络会议通知系统,而且实现这一的系 ...
- YourKit Java Profiler安装和破解
YourKit Java Profiler是业界领先的Java性能剖析工具.其独立版本安装成功且首次启动 YourKit Java Profiler 后,会弹出一个对话框,让用户选择 YourKit ...
- C++11中std::unordered_map的使用
unordered map is an associative container that contains key-value pairs with unique keys. Search, in ...