首页 > 编程知识 正文

mysql备份数据库结构表数据,备份表结构和数据

时间:2023-12-27 22:27:57 阅读:327011 作者:DTZS

本文目录一览:

如何使用mysqldump命令备份mysql数据库

mysqldump: 最早,也是最成熟的逻辑备份工具,是 MySQL 原生的用来备份整个数据库实例、单个数据库、单张表的逻辑备份工具, 上手简单,学习成本几乎为 0。备份简单,恢复也简单。

比如导出单个数据库 ytt: mysqldump ytt /tmp/ytt.sql;

恢复也非常简单:mysql /tmp/ytt.sql

缺点是备份速度慢。在整个备份过程中,是单线程运行;备份出来的数据集要恢复的话同样也是单线程运行,恢复速度也慢。除非对同一时刻的所有表单独备份出来,自己写额外脚本进行多线程恢复。

如何备份MYSQL数据库?

定期的备份可使我们数据库崩溃造成的损失大大降低。在MySQL中进行数据备份的方法有两种,一种是使用mysqldump程序,一种是使用mysqlhotcopy、cp、tar或cpio等打包程序直接拷贝数据库文件。mysqldump程序备份数据库较慢,但它生成的文本文件便于移植。使用mysqlhotcopy等程序备份速度快,因为它直接对系统文件进行操作,需人为协调数据库数据的备份前后一致性。

使用mysqldump备份数据库其实就是把数据库转储成一系列CREATE TABLE和INSERT语句,通过这些语句我们就可重新生成数据库。使用mysqldump的方法如下:

% mysqldump --opt testdb | gzip /data/backup/testdb.bak

#--opt选项会对转储过程进行优化,生成的备份文件会小一点,后的管道操作会进行数据压缩

% mysqldump --opt testdb mytable1,mytable2 | gzip /data/backup/testdb_mytable.bak

#可在数据库后接数据表名,只导出指定的数据表,多个数据表可用逗号分隔

--opt选项还可激活--add-drop-table选项,它将会在备份文件的每条CREATE TABLE前加上一条DROP TABLE IF EXISTS语句。这可方便进行数据表的更新,而不会发生“数据表已存在”的错误。

用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

通过直接拷贝系统文件的方式备份数据库,在备份时,要确保没有人对数据库进行修改操作。要做到这点,最好关闭服务器。如果不能关闭的,要以只读方试锁定有关数据表。下面是一些示例:

% cp -r db /backup/db #备份db数据库到/backup/db目录

% cp table_name.* /backup/db #只备份table_name数据表

% scp -r db remotehot:/usr/local/mysql/data #用scp把数据库直接拷贝到远程服务器

在把数据库直接拷贝到远程主机时,应注意两台机器必须有同样的硬件结构,或者将拷贝的数据表全部是可移植数据表类型。

使用mysqlhotcopy工具,它是一个Perl DBI脚本,可在不关闭服务器的情况下备份数据库,它主要的优点是:

它直接拷贝文件,所以它比mysqldump快。

可自动完成数据锁定工作,备份时不用关闭服务器。

能刷新日志,使备份文件和日志文件的检查点能保持同步。

下面是该工具的使用示例:

% mysqlhotcopy db /bakcup/ #把db数据库备份到backup/db目录里,会自动创建一个db目录

使用BACKUP TABLE语句进行备份,该语句最早出现在MySQL 3.23.25版本中,仅适用于MyISAM数据表。用法如下:

mysql BACKUP TABLE mytable TO '/backup/db'; #把mytable数据表备份到/backup/db目录下

为了执行该语句,你必须拥有那些表的FILE权限和SELECT权限,备份目录还必须是服务器可写的。该语句执行时,会先把内存中的数据写入磁盘,再把各个数据表的.frm(表结构定义文件)、.MYD(数据)文件从数据目录拷贝到备份目录。它不拷贝.MYI(索引)文件,因为它能用另外两个文件重建。BACKUP TABLE语句备份时,依次锁定数据表,当同时备份多个数据表时,数据表可能会被修改,所以备份0完成时,备份文件中的数据和现时数据表中的数据可能会有差异,为了消除该差异,我们可用只读方式锁定数据表,在备份完成后再解锁。如:

mysql LOCK TABLES tb1 READ,tb2 READ;

mysql BACKUP TABLE tb1,tb2 TO 'backup/db';

mysql UNLOCK TABLE

如何备份MySQL数据库

下载个navicat premium,网上有破解版的

新建数据库连接,输入你的mysql数据库连接的密码,自定义一个名称

双击打开该名称的连接,可以看到当前数据库连接下能够访问到的所有mysql数据库

打开数据库,可以看到数据库中的所有表,右键要备份的表,选择转储为sql文件,选择结构和数据一起转储就可以把数据表和数据一起备份成sql文件

需要使用时,只要右键数据库,选择运行sql文件,然后选中备份的sql文件运行,就可以还原原来备份的mysql数据库了

怎么定时自动备份mysql数据表

一、对于Windows主机

==============

假想环境:

MySQL

安装位置:C:MySQL

论坛数据库名称为:bbs

MySQL

root

密码:123456

数据库备份目的地:D:db_backup

@echo

off

C:MySQLbinmysqladmin

-u

root

–password=123456

shutdown

C:MySQLbinmysqldump

–opt

-u

root

–password=123456

bbs

D:db_backupbbs.sql

C:MySQLbinmysqld-nt

将以上代码保存为backup_db.bat

然后使用Windows的“计划任务”定时执行该脚本即可。(例如:每天凌晨5点执行back_db.bat)

二、对于Linux主机

===========

假想环境:

MySQL

安装位置:/usr/local/mysq

论坛数据库名称为:bbs

MySQL

root

密码:123456

数据库备份目的地:/var/db_backup/

#!

/bin/bash

/usr/local/mysql/bin/mysqladmin

-u

root

–password=123456

shutdown

/usr/local/mysql/bin/mysqldump

–opt

-u

root

–password=123456

bbs

/var/db_backup/bbs.sql

/usr/local/mysql/bin/mysqld_safe

–user=mysql

将上述代码保存在/usr/local/sbin/backup_db.sh

对该脚本赋予执行权限:

#

chmod

755

/usr/local/sbin/backup_db.sh

加入crontab中自动执行:

#

crontab

-e

加入:

5

*

*

*

/usr/local/sbin/backup_db.sh

mysql备份方式有哪些

数据库最直接的备份方法就是使用自带的mysqldump命令进行备份。

1、 mysqldump命令备份数据

在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:

#MySQLdump常用

mysqldump -u root -p --databases 数据库1 数据库2 xxx.sql

2、 mysqldump常用操作实例

2.1备份全部数据库的数据和结构

mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql

2.2备份全部数据库的结构(加 -d 参数)

mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql

2.3 备份全部数据库的数据(加 -t 参数)

mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql

2.4 备份单个数据库的数据和结构(,数据库名mydb)

mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql

2.5 备份单个数据库的结构

mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql

2.6 备份单个数据库的数据

mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql2

2.7 备份多个表的数据和结构(数据,结构的单独备份方法与上同)

mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql

2.8 一次备份多个数据库

mysqldump -uroot -p123456 --databases db1 db2 /data/mysqlDump/mydb.sql

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。