您的位置:

mysql数据库备份练习(mysql数据库完全备份)

本文目录一览:

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 TABLES;

使用BACKUP TABLE语句备份的数据表可用RESTORE TABLE重新加载到服务器。

InnoDB和BDB数据库也可用mysqldump和直接拷贝法进行备份。使用直接拷贝法时应注意需把组成InnoDB和BDB数据库的所有文件都拷贝下来,如InnoDB的.frm文件、日志文件和表空间配置文件;BDB的数据文件、日志文件等。

使用镜像机制进行备份,我们可用SLAVE STOP语句挂起从服务器的镜像,在从服务器上通过直接拷贝法或其它工具制作备份。备份完成,用SLAVE START重新启动镜像,从服务器重新与主服务器同步,接收备份时主服务器所做的修改。

在MySQL中没有为数据库重命名的命令,但我们可用mysqldump转储数据库,再创建一个新的空数据库,把转储文件加载到该新数据库,这样就完成数据库重命名的工作。如:

% mysqldump old_db db.sql #转储db数据库数据

% mysqladmin create new_db #新建一个空的数据库

% mysql new_db db.sql #把db数据库的数据加载到新的数据库中

% mysqladmin drop old_db #删除旧的数据库

一个更简单的重命名数据库的方法是直接修改数据库目录名,但该方法不适用于InnoDB和BDB数据库。注意,在更名后,需在权限表中更新相关数据表信息,需执行以下语句:

mysql UPDATE db SET db='new_db' WHERE db='old_db';

mysql UPDATE tables_priv SET db='new_db' WHERE db='old_db';

mysql UPDATE columns_priv SET db='new_db' WHERE db='old_db';

mysql UPDATE host SET db='new_db' WHERE db='old_db';

mysql怎么备份数据库

方法一:如果你使用的是虚拟主机,可以用使用phpmyadmin来备份数据库。

1)登陆phpmyadmin。登陆后左边会出现数据库列表,单击要备份的数据库,如图。

Mysql数据库备份的几种方法

2)在弹出的页面中,右侧上部单击“导出”按钮,一般保持默认选项,最下面“另存为文件”,选择“ZIP压缩”,最后单击执行按钮,如图

Mysql数据库备份的几种方法

3)弹出保存文件后,保存文件即可,如图。

Mysql数据库备份的几种方法

mysql数据库怎么备份数据库

可以用mysqldump工具简单用例说明:

导入、导出数据库

导出: mysqldump -uroot db1 db1.sql (注db1为database名)

导入:mysql -uroot test db1.sql (注test为database名,将db1中所有的表及数据导入到test数据库)

导入、导出表

导出:mysqldump -uroot db1 tb1 tb2tables.sql(注db1为database名,tb1 tb2为要导出的表列表,中间用空格隔开)

导入:mysql -uroot test tables.sql(将db1数据库中的tb1和tb2表导入到test数据库)

常见参数:

--all-databases , -A

导出全部数据库。

mysqldump -uroot -p --all-databases

--all-tablespaces , -Y

导出全部表空间。

mysqldump -uroot -p --all-databases --all-tablespaces

--no-tablespaces , -y

不导出任何表空间信息。

mysqldump -uroot -p --all-databases --no-tablespaces

--add-drop-database

每个数据库创建之前添加drop数据库语句。

mysqldump -uroot -p --all-databases --add-drop-database

--add-drop-table

每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)

mysqldump -uroot -p --all-databases (默认添加drop语句)

mysqldump -uroot -p --all-databases –skip-add-drop-table (取消drop语句)

--databases, -B

导出几个数据库。参数后面所有名字参量都被看作数据库名。

mysqldump -uroot -p --databases test mysql

--no-data, -d

不导出任何数据,只导出数据库表结构。

mysqldump -uroot -p --host=localhost --all-databases --no-data

--host, -h

需要导出的主机信息

mysqldump -uroot -p --host=localhost --all-databases

--password, -p

连接数据库密码

--port, -P

连接数据库端口号

--set-charset

添加'SET NAMES default_character_set'到输出文件。默认为打开状态,使用--skip-set-charset关闭选项。

mysqldump -uroot -p --host=localhost --all-databases

mysqldump -uroot -p --host=localhost --all-databases --skip-set-charset

--tables

覆盖--databases (-B)参数,指定需要导出的表名。

mysqldump -uroot -p --host=localhost --databases test --tables test

--user, -u

指定连接的用户名。

如何用mysql命令备份和恢复

Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下面为大家分享一下操作的常用的命令。

一、备份命令

1、备份MySQL数据库的命令

!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

--mysqldump-hhostname-uusername-ppassword databasenamebackupfile.sql

2、备份MySQL数据库为带删除表的格式

备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

--mysqldump-–add-drop-table-uusername-ppassword databasenamebackupfile.sql

3、直接将MySQL数据库压缩备份

!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

--mysqldump-hhostname-uusername-ppassword databasename|gzipbackupfile.sql.gz

4、备份MySQL数据库某个(些)表

!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

--mysqldump-hhostname-uusername-ppassword databasename specific_table1 specific_table2backupfile.sql

5、同时备份多个MySQL数据库

!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

--mysqldump-hhostname-uusername-ppassword –databases databasename1 databasename2 databasename3multibackupfile.sql

6、仅仅备份数据库结构

!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

--mysqldump –no-data –databases databasename1 databasename2 databasename3structurebackupfile.sql

7、备份服务器上所有数据库

!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

--mysqldump –all-databasesallbackupfile.sql

二、还原命令

1、还原MySQL数据库的命令

!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

--mysql-hhostname-uusername-ppassword databasenamebackupfile.sql

2、还原压缩的MySQL数据库

!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

--gunzipbackupfile.sql.gz|mysql-uusername-ppassword databasename

3、将数据库转移到新服务器

!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

--mysqldump-uusername-ppassword databasename|mysql –host=*.*.*.*-C databasename

总结

做好数据备份和还原,定好合适的备份策略,这是一个DBA所做事情的一小部分,万事开头难,就从现在开始吧!

mysql数据库如何备份?

MySQL数据库备份与还原

备份和恢复数据

生成SQL脚本

在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本,但要注意,脚本文本中只包含数据库的内容,而不会存在创建数据库的语句!所以在恢复数据时,还需要自已手动创建一个数据库之后再去恢复数据。

mysqldump –u用户名 –p密码 数据库名生成的脚本文件路径

现在可以在C盘下找到mydb1.sql文件了!

注意,mysqldump命令是在Windows控制台下执行,无需登录mysql!!!

执行SQL脚本

执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!

执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL 脚本来操作数据库!大家都知道,在黑屏下编写SQL语句时,就算发现了错误,可能也不能修改了。所以我建议大家使用脚本文件来编写SQL代码,然后执行之!

SOURCE C:\mydb1.sql

注意,在执行脚本时需要先行核查当前数据库中的表是否与脚本文件中的语句有冲突!例如在脚本文件中存在create table a的语句,而当前数据库中已经存在了a表,那么就会出错!

还可以通过下面的方式来执行脚本文件:

mysql -uroot -p123 mydb1c:\mydb1.sql

mysql –u用户名 –p密码 数据库要执行脚本文件路径

这种方式无需登录mysql!