`
gxrocky
  • 浏览: 31817 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

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';
分享到:
评论

相关推荐

    nbu&mysql备份恢复.docx

    NBU&MySQL备份恢复 NBU(NetBackup)是一款功能强大的备份恢复软件,而MySQL是一款流行的关系型数据库管理系统。本文将详细介绍如何使用NBU来备份和恢复MySQL数据库。 NBU备份mysql的优势 使用NBU备份mysql数据库...

    mysql备份脚本-按日期进行备份,并进行压缩

    ### MySQL备份脚本知识点解析 #### 一、脚本概述 该脚本主要实现了MySQL数据库的备份功能,并根据当前日期创建对应的备份文件夹与备份文件,同时对备份文件进行了压缩处理。此脚本适用于Windows环境。 #### 二、...

    mysql备份还原

    MySQL 备份还原详解 MySQL 备份还原是数据库管理中非常重要的一步骤,能够确保数据库的安全和可靠性。下面我们将详细介绍 MySQL 备份还原的步骤和注意事项。 什么是 MySQL 备份还原? MySQL 备份还原是指将数据库...

    Java操作mysql备份

    首先,"Java操作mysql备份"这个标题表明我们将讨论的是利用Java编程语言编写程序,对MySQL数据库进行备份。备份的主要目的是防止数据丢失,确保在系统故障或意外情况下能快速恢复数据。 描述中的"代码清晰可用"意味...

    阿里MySQL备份恢复指南

    阿里MySQL备份恢复指南是针对使用阿里云数据库服务的用户,特别是那些依赖MySQL数据库的企业或开发者设计的一份详尽的操作手册。这份指南旨在提供一个简单易懂的流程,帮助用户有效地进行数据库备份和恢复,以确保...

    Windows下mysql备份

    ### Windows 下 MySQL 备份详解 #### 单机备份 在 Windows 环境下进行 MySQL 数据库备份是一项常见的数据库管理任务。对于确保数据的安全性和完整性至关重要。下面将详细介绍两种不同的备份方法:一种是通过复制...

    实验报告六 MYSQL备份与恢复.docx

    根据提供的实验报告“MYSQL备份与恢复”的相关内容,我们可以总结出以下几个关键知识点: ### 一、MYSQL日志管理 #### 1. 错误日志 - **定义**: 记录MySQL运行过程中的错误信息和警告信息。 - **作用**: 帮助管理...

    mysql备份平台脚本

    MySQL备份平台是数据库管理系统中至关重要的组成部分,它确保了数据的安全性和可恢复性。在本文中,我们将深入探讨如何搭建MySQL备份平台,以及利用Apache服务器和Xtrabackup工具来实现这一目标。 首先,MySQL备份...

    mysql备份.zip

    "mysql备份.zip"这个压缩包提供了在Windows和Linux操作系统上进行MySQL数据库自动备份的解决方案。 在Windows环境下,"db.bat"是一个批处理文件,用于执行MySQL的备份任务。批处理文件通常包含一系列命令,这里可能...

    MYSQL备份、还原

    MySQL备份主要是为了防止数据丢失,这可能由于硬件故障、软件错误、人为操作失误或恶意攻击等原因引起。备份策略通常包括全量备份、增量备份和差异备份,每种都有其适用场景和优缺点。 全量备份是最基础的备份类型...

    mysql备份工具

    MySQL 备份工具使用指南 MySQL 备份工具是数据库管理的基本任务之一,它提供了自动化备份 MySQL 数据库的支持。下面是 MySQL 备份工具的主要特性和使用指南: 自动备份 MySQL 备份工具可以自动备份 MySQL 数据库,...

    阿里云 RDS for MySQL 备份文件恢复至自建数据库 .docx

    阿里云 RDS for MySQL 备份文件恢复至自建数据库 本文档将介绍如何将阿里云 RDS for MySQL 的备份文件恢复至自建数据库中,以供测试平台使用。我们将讨论物理备份和逻辑备份的差异,并探讨如何下载和解压备份文件,...

    Mysql备份可以执行的shell脚本

    下面我们将深入探讨如何利用shell脚本来执行MySQL备份。 首先,我们需要理解MySQL备份的基本类型:全量备份和增量备份。全量备份是指备份整个数据库或所有选定的数据库,而增量备份则仅备份自上次备份以来发生更改...

    MySQL 备份和恢复

    MySQL的备份和恢复是数据库管理的关键环节,确保数据的...总的来说,MySQL备份和恢复需要根据不同的表类型和需求选择合适的工具和策略。定期备份、测试恢复过程以及了解备份参数的正确使用是保证数据安全的关键步骤。

    mysql备份

    标题“mysql备份”涉及到的是MySQL数据库的备份操作,这是数据库管理中的重要环节,用于保护数据安全,防止数据丢失。在IT行业中,定期备份是确保业务连续性和数据完整性的重要步骤。 描述中提到的“一键备份数据库...

    linux运维学习笔记:Mysql备份与恢复.pdf

    Mysql 备份与恢复 在数据库管理中,备份与恢复是非常重要的两步骤。备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低。 ...

    mysql备份和恢复方案

    MySQL备份和恢复是数据库管理中的关键环节,旨在保护数据免受意外损失,如硬件故障、软件错误或数据损坏。在本方案中,我们将探讨两种主要的备份策略,并讨论如何实施有效的恢复计划,确保数据安全和应用程序的连续...

    新宇Mysql备份还原大师 v1.0.zip

    新宇Mysql备份还原大师是一款专为MySQL数据库设计的便捷备份和恢复软件,适用于那些对数据库操作不熟悉或缺乏专业数据库管理员的用户。这款工具旨在简化数据库管理过程,确保数据安全,防止因意外数据丢失而带来的...

    MYSQL备份并压缩bat

    一个用于备份MYSQL数据库的bat文件, 使用mysqldump命令, 并在dump后使用winrar命令将文件压缩成rar文件(前提: 需要安装winrar并将其添加到环境变量中)

Global site tag (gtag.js) - Google Analytics