标签分类
技术文章
当前位置:主页 > 计算机编程 > mysql > 如何备份MySQL数据库

备份MySQL数据库的实例方法

  • 发布时间:
  • 作者:码农之家原创
  • 点击:87

如何备份MySQL数据库

这篇文章主要知识点是关于备份,MySQL数据库,如何备份MySQL数据库,史上最简单的MySQL数据备份与还原教程(中)(三十六) 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

PHP&MySQL跨设备网站开发实例精粹
  • 类型:PHP编程大小:80.9 MB格式:PDF出版:清华大学出版社作者:陈惠贞,陈俊荣
立即下载
MySQL与MariaDB学习指南
  • 类型:数据库大小:68.9 MB格式:PDF出版:人民邮电出版社作者:罗素 戴尔
立即下载

更多相关的学习资源可以参阅 数据库电子书数据库视频、等栏目。

MySQL中进行数据备份的方法有两种

1. mysqlhotcopy

这个命令会在拷贝文件之前会把表锁住,并把数据同步到数据文件中,以避免拷贝到不完整的数据文件,是最安全快捷的备份方法。

命令的使用方法是:

mysqlhotcopy -u root -p<rootpass> db1 db2 … dbn <output_dir>

如果需要备份全部数据库,可以加上–regexp=”.*”参数。

Mysqlhotcopy命令可自动完成数据锁定工作,备份时不用关闭服务器。它还可以刷新日志,使备份文件和日志文件的检查点能保持同步。

 

2. mysqldump

这个命令是用来把数据库倒成sql文件的,是非常古老的命令了。

命令的使用方法是:

mysqldump -u root -p<rootpass> –hex-blob db1 > db1.sql

加上–hex-blob参数以后,blob数据会被类似BASE64的方法转换为文本来存储在sql文件中,就不会导致sql文件格式问题了。经过测试,通过这种方法备份的blob数据再重新恢复回去能够完全正确。

如果要备份所有的数据库,可以加上–all-databases参数。

mysqldump命令还可直接把数据库转移到另外一台服务器上,不用生成备份文件。重复执行可定期更新远程数据库。

% mysqladmin -h remote_host create testdb

% mysqldump –opt testdb | mysql -h remote_host testdb

另外还可通过ssh远程调用服务器上的程序,如:

% ssh remote_host mysqladmin create testdb

% mysqldump –opt testdb | ssh remote_host mysql testdb

2种数据库备份方式的优缺点:

使用mysqlhotcopy等程序备份速度快,因为它直接对系统文件进行操作,但是需人为协调数据库数据的备份前后一致性。

mysqldump程序备份数据库较慢,但它生成的文本文件便于移植。

对于没有使用InnoDB的数据库,用mysqlhotcopy是最好的方法;否则必须采用mysqldump。不论如何,直接拷贝文件的备份方法应该被废弃了。

史上最简单的MySQL数据备份与还原教程(中)(三十六)

数据备份与还原第二篇,具体如下

基础概念:

备份,将当前已有的数据或记录另存一份;

还原,将数据恢复到备份时的状态。

为什么要进行数据的备份与还原?

防止数据丢失;保护数据记录。

数据备份与还原的方式有很多种,具体可以分为:数据表备份、单表数据备份、SQL备份和增量备份。

单表数据备份

单表数据备份,每次只能备份一张表,而且只能备份数据,不能备份表结构。

通常的使用场景为:将表中的数据导出到文件。

备份方法:从表中选出一部分数据保存到外部的文件中,

select */字段列表 + into outfile + '文件存储路径' + from 数据源;

在这里,使用单表数据备份有一个前提,那就是:导出的外部文件不存在,即文件存储路径下的文件不存在

执行如下 SQL 语句,进行测试:

-- 单表数据备份
select * into outfile 'D:/CoderLife/testMySQL/class.txt' from class;

史上最简单的MySQL数据备份与还原教程(中)(三十六)

如上图所示,SQL 语句已经执行成功。在这里,如果我们遇到:

ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execute this statement.

这个错误,可以通过查看「详述 MySQL 导出数据遇到 secure-file-priv 的问题」进行解决。

为了验证是否真的将class表中的数据导出到指定位置,我们可以到该路径下进行确认:

史上最简单的MySQL数据备份与还原教程(中)(三十六)

如上图所示,显然我们已经将class表中的数据导出到本地啦!不过在这里,有一点需要我们特别注意,那就是:对于从数据库导出的文件,我们最好用EditPlus等编辑工具打开,防止乱码

此外,对于上述用于导出表中数据的 SQL 语法,其实我们可以颠倒书写顺序,也没有问题,例如:

select */字段列表 + from 数据源 + into outfile + '文件存储路径';

执行如下 SQL 语句,进行测试:

-- 单表数据备份
select * from class into outfile 'D:/CoderLife/testMySQL/class2.txt';

史上最简单的MySQL数据备份与还原教程(中)(三十六)

接下来,我们学习一些用于单表数据备份的高级操作,即自己指定字段和行的处理方式

基本语法:select */字段列表 + into outfile + '文件存储路径' + fields + 字段处理 + lines + 行处理 + from 数据源;

字段处理:

enclosed by:指定字段用什么内容包裹,默认是,空字符串;

terminated by:指定字段以什么结束,默认是\t,Tab键;

escaped by:指定特殊符号用什么方式处理,默认是\\,反斜线转义。

行处理:

starting by:指定每行以什么开始,默认是,空字符串;

terminated by:指定每行以什么结束,默认是\r\n,换行符。

执行如下 SQL 语句,进行测试:

-- 指定单表数据备份处理方式
select * into outfile 'D:/CoderLife/testMySQL/class3.txt'
-- 字段处理
fields
enclosed by '"'
terminated by '|'
lines
starting by 'START:'
from class ;

史上最简单的MySQL数据备份与还原教程(中)(三十六)

如上图所示,显然导出文件class3.txt按照我们指定的格式进行输出啦!在前面,我们已经测试了各种单表数据备份的方式,现在我们删除数据,并尝试还原数据,即将保持在外部的数据重新恢复到数据表中。But,由于单表数据备份进能备份数据,因此如果表结构不存在,则不能进行还原。

基本语法:load data infile + '文件存储路径' + into table + 表名 + [字段列表] + fields + 字段处理 + lines + 行处理;

执行如下 SQL 语句,进行测试:

-- 删除表 class 中的数据
delete from class;

-- 查看表 class 中的数据
select * from class;

-- 还原表 class 中的数据
load data infile 'D:/CoderLife/testMySQL/class3.txt'
into table class
-- 字段处理
fields
enclosed by '"'
terminated by '|'
lines
starting by 'START:';

-- 查看表 class 中的数据
select * from class;

史上最简单的MySQL数据备份与还原教程(中)(三十六)

如上图所示,显然在我们删除表class中的数据之后,还原数据成功。

温馨提示:符号[]括起来的内容,表示可选项;符号+,则表示连接的意思。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到儿童python编程入门书籍推、 解决axios.interceptors.respon、 vue项目中使用md5加密以及、 等mysql文章进一步学习,感谢大家的阅读和支持。

上一篇:详解Mysql中存储UUID如何去除横线

下一篇:Mysql中用concat函数执行SQL注入查询的方法

展开 +

收起 -

学习笔记
网友NO.765716

mysql备份脚本 mysqldump使用方法详解

本文实例为大家分享了mysql备份脚本,供大家参考,具体内容如下 #!/bin/bash#全备方式,一般在从机上执行,适用于小中型mysql数据库#删除15天以前备份#作者:fafu_li#时间:2015.08.10source /etc/profile #加载系统环境变量source ~/.bash_profile #加载用户环境变量set -o nounset #引用未初始化变量时退出#set -o errexit #执行shell命令遇到错误时退出user="root"password="123456"host="localhost"port="3306"#需备份的数据库,数组db=("test")#备份时加锁方式,#MyISAM为锁表--lock-all-tables,#InnoDB为锁行--single-transactionlock="--single-transaction"mysql_path="/usr/local/mysql"backup_path="${mysql_path}/backup"date=$(date +%Y-%m-%d_%H-%M-%S)day=15backup_log="${mysql_path}/backup.log"#建立备份目录if [ ! -e $backup_path ];then mkdir -p $backup_pathfi#删除以前备份find $backup_path -type f -mtime +$day -exec rm -rf {} \; /dev/null 2gt; $backup_path/$backup_name if [[ $? == 0 ]];then cd $backup_path tar zcpvf $backup_name.tar.gz $backup_name size=$(du $backup_name.tar.gz -sh | awk '{print $1}') rm -rf $backup_name echo "$date 备份 $dbname($size) 成功 " else cd $backup_path rm -rf $backup_name echo "$date 备份 $dbname 失败 " fi}#循环备份length=${#db[@]}for (( i = 0; i $length; i++ )); do backup_sql ${db[$i]} $backup_log 2&1doneecho "备份结束,结果查看 $backup_log"du $backup_path/*$date* -sh | awk '{print "文件:" $2 ",大小:" $1}' 以上就是本文的全部……

网友NO.929275

Mysql触发器在PHP项目中用来做信息备份、恢复和清空

案例: 通过PHP后台代码可以将员工的信息删除,将删除的员工信息进行恢复(类似于从回收站中恢复员工信息),并且还可以将已经删除的员工进行清空(类似于清空回复站的功能)。 思路: 要有一张员工表,还要有一张员工备份表;备份,使用触发器,在点击删除按钮执行删除功能之前将员工表中的信息导入到备份表中,这样就达到了备份的效果;恢复,对备份表使用触发器,将备份表中的数据删除,删除的同时将此数据导入到员工表中;清空,使用truncate方法,将备份表中的数据彻底清空,并且释放内存,而且这个方法进行数据删除不会调用触发器。话不多少,直接上干货。 第一步:建表,员工表,员工备份表。 CREATE TABLE `employee` ( `id` int(11) NOT NULL AUTO_INCREMENT, `denumber` varchar(255) DEFAULT '0', `idnumber` varchar(255) DEFAULT '0', `worknumber` varchar(255) DEFAULT '1', `pwd` varchar(255) DEFAULT NULL, `emname` varchar(255) DEFAULT '0', `tel` varchar(255) DEFAULT '0', `salary` int(255) DEFAULT '0', `entrytime` varchar(255) DEFAULT '0', `orderpaixu` int(255) DEFAULT '1', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=100 DEFAULT CHARSET=utf8 这是员工表 CREATE TABLE `employeebackup` ( `id` int(11) NOT NULL, `denumber` varchar(255) DEFAULT NULL, `idnumber` varchar(255) DEFAULT NULL, `worknumber` varchar(255) DEFAULT NULL, `pwd` varchar(255) DEFAULT NU……

网友NO.690570

MySQL 数据备份与还原的示例代码

一、数据备份 1、使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。 mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。 1、备份一个数据库 mysqldump基本语法: mysqldump -u username -p dbname table1 table2 ...- BackupName.sql 其中: dbname参数表示数据库的名称; table1和table2参数表示需要备份的表的名称,为空则整个数据库备份; BackupName.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件; 使用root用户备份test数据库下的person表 mysqldump -u root -p test person D:ackup.sql 其生成的脚本如下: 文件的开头会记录MySQL的版本、备份的主机名和数据库名。 文件中以“--”开头的都是SQL语言的注释,以"/*!40101"等形式开头的是与MySQL有关的注释。40101是MySQL数据库的版本号,如果MySQL的版本比1.11高,则/*!40101和*/之间的内容就被当做SQL命令来执行,如果比4.1.1低就会被当做注释。 2、备份多个数据库 语法: mysqldump -u username -p --databases dbname2 dbname2 Backup.sql 加上了--databases选项,然后后面……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明