0
点赞
收藏
分享

微信扫一扫

mysql增量备份脚本


怎么备份远程mysql数据库的脚本文件

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

1.mysqlhotcopy

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

命令的使用方法是:

mysqlhotcopy-uroot-p db1db2…dbn

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

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

2.mysqldump

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

命令的使用方法是:

mysqldump-uroot-p –hex-blobdb1>db1.sql

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

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

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

%mysqladmin-hremote_hostcreatetestdb

%mysqldump–opttestdb|mysql-hremote_hosttestdb

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

%sshremote_hostmysqladmincreatetestdb

本回答由提问者推荐

windows自动备份mysql数据库脚本

mysqldump-urootwelfare>d:\data_back\back.sql

如果要定时备份

用这个批处理

for/f"Tokens=1Delims=/"%%iin('date/t')dosetdt=%%i

for/f"Tokens=1"%%iin('time/t')dosettm=%%i

settm=%dt%

SETbkupdir=d:\data_back

SETdbname=welfareSETdbuser=root

SETdbpassword=

SETCharacterSet=utf8

@ECHOBeginningbackupof%dbname%...

mysqldump-u%dbuser%-p%dbpassword%%dbname%--add-drop-table--complete-insert--opt>%bkupdir%\%dbname%-%tm%.sql

@ECHODone!Newfile:%bkupdir%\%dbname%-%tm%.sql

MySQL整个数据库怎么备份与还原?

1.备份:

[root]# /usr/bin/mysqldump -h127.0.0.1 -uusername -ppassword databasename >/opt/share/1/backup.sql

/usr/bin/mysqldump:用于执行的程序;

-h:主机名称

-u:数据库用户

-p:数据库密码

databasename:数据库名称

>/opt/share/1/backup.sql:导出文件的保存名称

以这样的方式导出的文件打开后发现里面有乱码,这个是正常的,是因为导出时没有设置字体的缘故,这个不影响数据库内容的备份和还原。

2.还原数据库:

[root]# /usr/bin/mysql -h127.0.0.1 -uusername -ppassword databasename2 导入数据到databasename2中即可。

MySql数据库备份有哪些方法?

目的:备份hostA主机中一个mysql数据库TestA,并恢复到到hostB机中

试验环境:

操作系统:WinNT4。0,Mysql3。22。34,phpMyAdmin 2。1。0

在hostA中安装mysql数据库并建立TestA数据库

hostB机安装mysql数据库,没有TestA数据库

方法步骤:

启动phpMyAdmin察看HostA和HostB中的数据库列表,在HostB中没有TestA数据库

找到HostA中mysql的安装目录,并找到数据库目录data

在我的试验环境中,这个目录是

C:mysqldata

找到对应数据库名称的子目录

C:mysqldataTestA

粘贴拷贝到HostB的Data目录下,是HostA同HostB Mysql数据目录下的文件相同

刷新HostB的phpMyAdmin察看一下数据库列表,我们看到TestA已经出现,并且作查询修改等操作都正常,备份恢复恢复成功

试验结论:Mysql的数据库可以通过文件形式保存,备份,恢复只要将相应文件目录恢复即可,无需使用其它工具备份。

linux服务器自动备份mysql数据库的脚本!

你运气好,我这个也刚做好,发你一份把 。自动运行在window下的任务计划中添加,如需要Linux下的请H! 我··

@echo off

set sqlserver="aboa" \*aboa 为你 要备份的数据库名字

set dn=7 7天以前的,可自己设置

echo.

echo在D盘自动建立文件夹 back

echo.

if exist D:\back (

echo "已经存在文件夹"

) else (

md D:\back创建文件夹back

cd/d "D:\back"

echo Wscript.echo dateadd^("d",-%dn%,date^)>rd.vbs

for /f "tokens=1-3 delims=-" %%a in ('cscript//nologo rd.vbs')do (

set yy=%%a&set mm=00%%b&set "dd=00%%c")

set ymd=%yy%-%mm:~-2%-%dd:~-2%&del rd.vbs

set n=0

for /f "delims=" %%i in ('dir/b/a-d *.sql')do (

if "%%~ti" lss "%ymd%9" (

cls&echo/&echo 正在删除 %%i

set/a n+=1

del "%%i"))

cls&echo/&echo/&echo 检查删除7天以前的备份文件完毕,共删除 %n% 个文件.

echo _______________________________

echo.

echo今天是 %date%

echo时间是 %time%

echo _______________________________

echo.

echoMySQL 数据库备份

echo正在进行数据备份中,请耐心等待.....

echo.

echo _______________________________

mysqldump --port 3306 -h localhost -u root -proot --default-character-set=utf8 -R %sqlserver% > d:\back\%date:~0,4%-%date:~5,2%-%date:~8,2%.sql备份的数据库文件名为当天的日期

echo.

pause一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):

1、导出数据和表结构:

mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql

#/usr/local/mysql/bin/mysqldump -uroot -p abc > abc.sql

敲回车后会提示输入密码

2、只导出表结构

mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql

#/usr/local/mysql/bin/mysqldump -uroot -p -d abc > abc.sql

注:/usr/local/mysql/bin/ ---> mysql的data目录

二、导入数据库

1、首先建空数据库

mysql>create database abc;

2、导入数据库

(1)选择数据库

mysql>use abc;

(2)设置数据库编码

mysql>set names utf8;

(3)导入数据(注意sql文件的路径)

mysql>source /home/abc/abc.sql;

mysql -u用户名 -p密码 数据库名 < 数据库名.sql

#mysql -uabc_f -p abc < abc.sql

建议使用第二种方法导入。

注意:有命令行模式,有sql命令

mysql怎么自动备份数据库备份

打开navicat客户端,连上mysql后,双击左边你想要备份的数据库。点击“计划”,再点击“新建批处理作业”。

双击上面的可用任务,它就会到下面的列表里去,代表你选择了这个任务。

点击保存,弹出个命名对话框,给这个任务取个名字,点击“确定”。

点击“设置”计划任务。

弹出的对话框,选择“计划”,再点击“新建”。

这里设置为从2014年1月24号起每天早上九点备份该数据库。如果你想提高备份频率、或者设置备份截止日期,请点击“高级”。

高级选项可以把备份设置的更精细,比如这里设置的是在24小时内每隔2小时就备份一次。加上前面的基本设置,任务计划就是:从2014年1月24号开始,每天九点,每隔2小时备份一次,每天的备份都持续24小时。

最后,输入电脑密码就大功告成。定期的备份可使我们数据库崩溃造成的损失大大降低。在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';

举报

相关推荐

0 条评论