当前位置:首页 » 编程软件 » mysql增量脚本

mysql增量脚本

发布时间: 2022-08-03 21:56:23

‘壹’ 如何实现mysql增量更

Ø 首先,我们需要开启MySQL服务器的二进制日志功能,其实现方法有很多种,最常用的是在MySQL的配置文件的mysqld项中加入log-bin=[filepath]项;也可以使用mysqld –log-bin=[filepath]重新启动MySQL服务器。
Ø 其次,使用mysqlmp对数据库进行完全备份,它可以实现对数据据的联机,非阻塞的热备份,不会影响其他进程对数据库的读写操作。(参考指令:mysqlmp -uroot --password=123 --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > d:/mysql5.0/full_%date:~0,10%_1500_PM.sql)
Ø 第三,使用flush logs指令刷新创建新的二进制日志。可以通过mysqladmin flush logs或者flush logs语句实现。最方便有效的方法是将它做成批处理文件,然后让操作系统定期执行。
Ø 使用mysql < *.sql进行完全备份的恢复。

‘贰’ 如何增量导入MYSQL数据库中的数据

大SQL文件导入数据库的方法:
1、点击"开始"-"运行",输入cmd,然后回车进入到DOS界面。
2、进入MYSQL安装目录。
3、假如MYSQL安装在D盘,SQL文件也在D盘,加入命名为demo.sql,操作的方法是:
输入"D:",回车即进入到D盘了,然后输入"cd mysql/bin"并回车
4、再输入"mysql -u root -p database d:/demo.sql",回车显示要输入密码
5、如果MYSQL数据库的密码为空则不输入任何东西回车,没有出现错误说明导入成功。
注意:上面的database是要导入的数据库名。

‘叁’ 怎么通过java程序实现获取mysql的增量

Slave I/O线程和Slave SQL线程是典型的单写单读生产者-消费者模型,是可以做到无锁设计的;因此实现思路就是Slave I/O线程在每次写完数据后,原子更新Relay Log的长度信息,Slave SQL线程读取Relay Log的时以长度信息为边界。

‘肆’ 如何实现Mysql数据库的差异性备份和增量备份

Ø首先,我们需要开启MySQL服务器的二进制日志功能,其实现方法有很多种,最常用的是在MySQL的配置文件的mysqld项中加入log-bin=[filepath]项;也可以使用mysqld –log-bin=[filepath]重新启动MySQL服务器。

Ø其次,使用mysqlmp对数据库进行完全备份,它可以实现对数据据的联机,非阻塞的热备份,不会影响其他进程对数据库的读写操作。(参考指令:mysqlmp -uroot --password=123 --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > d:/mysql5.0/full_%date:~0,10%_1500_PM.sql)

Ø第三,使用flush logs指令刷新创建新的二进制日志。可以通过mysqladmin flush logs或者flush logs语句实现。最方便有效的方法是将它做成批处理文件,然后让操作系统定期执行。

Ø使用mysql < *.sql进行完全备份的恢复。

Ø使用mysqlbinlog logs-bin.[0-9]* | mysql进行增量备份的恢复。一般的,假设我们周日下午三点进行了完全备份并生成备份文件full_backup_20100415_3_PM.sql,周一周二中午一点进行了两次增量备份,分别生成增量备份文件inc_backup_1_PM.0007和inc_backup_1_PM.0008,周三上午10:00数据库发生崩溃,需要进行数据库恢复,此时正在记录的二进制日志为inc_backup_1_PM.0009,我们还需要恢复其中记录的操作。具体的恢复操作为:

mysql < full_backup_20100415_3_PM.sql

mysqlbinlog inc_backup_1_PM.0007 inc_backup_1_PM.0008 inc_backup_1_PM.0009

u具体应用(结合T8项目)

根据上述分析,我们在T8项目使用MySQL增量备份,也需要三个步骤:

Ø首选修改MySQL启动配置文件my.cnf,在其中的mysqld项中增加log-bin选项,重新启动MySQL服务器以开启二进制日志功能,在生成文件/usr/data/mysql/ t8server-bin.index和t8server-bin..000001。如图所示:

u总结

MySQL提供了很方便的完全+增量备份实现方法,我们只需调用系统内置的方法或者作出一些细微的配置就可以对MySQL数据库进行备份和恢复。对于MyISAM数据库和InnoDB数据库,都可以通过mysqlmp实现数据库的完全逻辑备份,通过启动二进制日志(binary logs),可以记录一个时间段内对数据库的所有可能更新的操作,从而通过flush logs创建新的日志而实现增量备份。

‘伍’ 本机运行的MySQL 数据库 如何安全的备份/还原

一般是即时备份。做主从。或者是每天增量备份。
本文是在linux下,mysql 4.1.14版本下测试的,经过适当修改可能适合mysql 4.0,5.0及其其他版本.

本文适合于没有启动复制功能的mysql,如果启动了复制,可能不需要采取这种备份策略或者需要修改相关参数.

每个人的备份策略都可能不同,所以请根据实际情况修改,做到举一反三,不要照搬照抄,可能会造成不必要的损失.

希望你明白这个脚本要干什么工作!

脚本描述

每7天备份一次所有数据,每天备份binlog,也就是增量备份.

(如果数据少,每天备份一次完整数据即可,可能没必要做增量备份)

作者对shell脚本不太熟悉,所以很多地方写的很笨 :)

开启 bin log

在mysql 4.1版本中,默认只有错误日志,没有其他日志.可以通过修改配置打开bin log.方法很多,其中一个是在/etc/my.cnf中的mysqld部分加入:

[mysqld]
log-bin

这个日志的主要作用是增量备份或者复制(可能还有其他用途).

如果想增量备份,必须打开这个日志.

对于数据库操作频繁的mysql,这个日志会变得很大,而且可能会有多个.

在数据库中flush-logs,或者使用mysqladmin,mysqlmp调用flush-logs后并且使用参数delete-master-logs,这些日志文件会消失,并产生新的日志文件(开始是空的).

所以如果从来不备份,开启日志可能没有必要.

完整备份的同时可以调用flush-logs,增量备份之前flush-logs,以便备份最新的数据.

完整备份脚本

如果数据库数据比较多,我们一般是几天或者一周备份一次数据,以免影响应用运行,如果数据量比较小,那么一天备份一次也无所谓了.

#!/bin/sh

# mysql data backup script
# by scud
# 2005-10-30
#
# use mysqlmp --help,get more detail.
#

BakDir=/backup/mysql
LogFile=/backup/mysql/mysqlbak.log

DATE=`date +%Y%m%d`

echo " " >> $LogFile
echo " " >> $LogFile
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile

cd $BakDir

DumpFile=$DATE.sql
GZDumpFile=$DATE.sql.tgz

mysqlmp --quick --all-databases --flush-logs
--delete-master-logs --lock-all-tables
> $DumpFile

echo "Dump Done" >> $LogFile

tar czvf $GZDumpFile $DumpFile >> $LogFile 2>&1

echo "[$GZDumpFile]Backup Success!" >> $LogFile

rm -f $DumpFile

#delete previous daily backup files:采用增量备份的文件,如果完整备份后,则删除增量备份的文件.
cd $BakDir/daily

rm -f *

cd $BakDir

echo "Backup Done!"

echo "please Check $BakDir Directory!"

echo " it to your local disk or ftp to somewhere !!!"

ls -al $BakDir
上面的脚本把mysql备份到本地的/backup/mysql目录,增量备份的文件放在/backup/mysql/daily目录下.

注意:上面的脚本并没有把备份后的文件传送到其他远程计算机,也没有删除几天前的备份文件:需要用户增加相关脚本,或者手动操作.

增量备份

增量备份的数据量比较小,但是要在完整备份的基础上操作,用户可以在时间和成本上权衡,选择最有利于自己的方式.

增量备份使用bin log,脚本如下:

#!/bin/sh

#
# mysql binlog backup script
#

/usr/bin/mysqladmin flush-logs

DATADIR=/var/lib/mysql
BAKDIR=/backup/mysql/daily

###如果你做了特殊设置,请修改此处或者修改应用此变量的行:缺省取机器名,mysql缺省也是取机器名
HOSTNAME=`uname -n`

cd $DATADIR

FILELIST=`cat $HOSTNAME-bin.index`

##计算行数,也就是文件数
COUNTER=0
for file in $FILELIST
do
COUNTER=`expr $COUNTER + 1 `
done

NextNum=0
for file in $FILELIST
do
base=`basename $file`
NextNum=`expr $NextNum + 1`
if [ $NextNum -eq $COUNTER ]
then
echo "skip lastest"
else
dest=$BAKDIR/$base
if(test -e $dest)
then
echo "skip exist $base"
else
echo "ing $base"
cp $base $BAKDIR
fi
fi
done

echo "backup mysql binlog ok"
增量备份脚本是备份前flush-logs,mysql会自动把内存中的日志放到文件里,然后生成一个新的日志文件,所以我们只需要备份前面的几个即可,也就是不备份最后一个.
因为从上次备份到本次备份也可能会有多个日志文件生成,所以要检测文件,如果已经备份过,就不用备份了.

注:同样,用户也需要自己远程传送,不过不需要删除了,完整备份后程序会自动生成.

访问设置

脚本写完了,为了能让脚本运行,还需要设置对应的用户名和密码,mysqladmin和mysqlmp都是需要用户名和密码的,当然可以写在脚本中,但是修改起来不太方便,假设我们用系统的root用户来运行此脚本,那么我们需要在/root(也就是root用户的home目录)创建一个.my.cnf文件,内容如下

[mysqladmin]
password =password
user= root
[mysqlmp]
user=root
password=password
注:设置本文件只有root可读.(chmod 600 .my.cnf )

此文件说明程序使用mysql的root用户备份数据,密码是对应的设置.这样就不需要在脚本里写用户名和密码了.

自动运行

为了让备份程序自动运行,我们需要把它加入crontab.

有2种方法,一种是把脚本根据自己的选择放入到/etc/cron.daily,/etc/cron.weekly这么目录里.
一种是使用crontab -e放入到root用户的计划任务里,例如完整备份每周日凌晨3点运行,日常备份每周一-周六凌晨3点运行.

‘陆’ win7系统下mysql如何增量备份

增量备份其实就是开启二进制日志,保留每个操作的sql语句,然后定时备份那个日志文件,并进行刷新以便生成新的日志文件

‘柒’ 有什么简单的 mysql 增量备份方案

简单的 mysql 增量备份方案
想弄一个自动作业每天备份公司项目的一个mysql数据库,原本采取的方案是crontab+全量mysqlmp 然后gzip压缩并按日期保存,最后生成文件大概30多M的样子。但是毕竟这种全量备份放在每天执行不是很好,因为以后数据会越来越大(其中几张表,每天可能增加几w条数据)。
网络google了mysql增量备份的方案,看到有2种:
1.也是使用mysqlmp,然后将这一次的mp文件和前一次的文件用比对工具比对,生成patch补丁,将补丁打到上一次的mp文件中,生成一份新的mp文件。(stackoverflow上看到的,感觉思路很奇特,但是不知道这样会不会有问题)
2.增量拷贝 mysql 的数据文件,以及日志文件。典型的方式就是用官方mysqlbackup工具配合 --incremental 参数,但是 mysqlbackup 是mysql Enterprise版才有的工具,现在项目安装的mysql版本貌似没有。

‘捌’ mysql用mysqlmp进行增量备份,如何搞啊有详细思路以及命令吗

echo "" > $eMailFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $eMailFile
#
# 刷新日志,使数据库使用新的二进制日志文件
$mysqlDir/bin/mysqladmin -u$user -p$userPWD flush-logs
cd $dataDir
# 得到二进制日志列表
fileList=`cat $HOSTNAME-bin.index`
iCounter=0
for file in $fileList
do
iCounter=`expr $iCounter + 1`
done
nextNum=0
iFile=0
for file in $fileList
do
binLogName=`basename $file`
nextNum=`expr $nextNum + 1`
# 跳过最后一个二进制日志(数据库当前使用的二进制日志文件)
if [[ $nextNum == $iCounter ]]; then
echo "Skip lastest!" > /dev/null
else
dest=$dailyBackupDir/$binLogName
# 跳过已经备份的二进制日志文件
if [[ -e $dest ]]; then
echo "Skip exist $binLogName!" > /dev/null
else
# 备份日志文件到备份目录
cp $binLogName $dailyBackupDir
if [[ $? == 0 ]]; then
iFile=`expr $iFile + 1`
echo "$binLogName Backup Success!" >> $eMailFile
fi
fi
fi
done
if [[ $iFile == 0 ]];then
echo "No Binlog Backup!" >> $eMailFile
else
echo "Backup $iFile File(s)." >> $eMailFile

热点内容
Ftp打开文件是只读模式 发布:2025-02-09 07:40:55 浏览:504
androidlistview点击事件 发布:2025-02-09 07:25:52 浏览:171
targz解压缩 发布:2025-02-09 06:59:19 浏览:311
wpsphp 发布:2025-02-09 06:58:41 浏览:961
视易锋云系统如何架设辅助服务器 发布:2025-02-09 06:47:08 浏览:770
mysql备份脚本shell 发布:2025-02-09 06:46:33 浏览:15
腾讯云服务器怎样调整分辨率 发布:2025-02-09 06:46:30 浏览:369
php上一个页面 发布:2025-02-09 06:41:25 浏览:489
改装配置后不想重启怎么办 发布:2025-02-09 06:36:40 浏览:446
算法复杂度定义 发布:2025-02-09 06:30:46 浏览:587