wbh*_*ing 7 mysql mysqldump master-slave database-backups
我目前在Mysql slave上运行mysqldump来备份我们的数据库.这对于备份我们的数据本身很有效,但我想补充的是主机的二进制日志位置,它与mysqldump生成的数据相对应.
这样做可以让我们恢复我们的奴隶(或设置新的奴隶),而不必在主数据库上执行单独的mysqldump,我们获取主数据库的二进制日志位置.我们只需要获取mysqldump生成的数据,将它与我们生成的二进制日志信息结合起来,然后再进行重新调整.
到目前为止,我的研究让我非常关心能够实现这个目标,但我似乎无法找到一种自动化的方法来实现这一目标.以下是我发现的"差不多":
这似乎是一个普遍的东西,以前有人必须弄明白,希望有人使用Stack Overflow?
以下shell脚本将以cron或periodic运行,根据需要替换变量(默认为FreeBSD编写):
# MySQL executable location
mysql=/usr/local/bin/mysql
# MySQLDump location
mysqldump=/usr/local/bin/mysqldump
# MySQL Username and password
userpassword=" --user=<username> --password=<password>"
# MySQL dump options
dumpoptions=" --quick --add-drop-table --add-locks --extended-insert"
# Databases
databases="db1 db2 db3"
# Backup Directory
backupdir=/usr/backups
# Flush and Lock
mysql $userpassword -e 'STOP SLAVE SQL_THREAD;'
set `date +'%Y %m %d'`
# Binary Log Positions
masterlogfile=`$mysql $userpassword -e 'SHOW SLAVE STATUS \G' | grep '[^_]Master_Log_File'`
masterlogpos=`$mysql $userpassword -e 'SHOW SLAVE STATUS \G' | grep 'Read_Master_Log_Pos'`
# Write Binlog Info
echo $masterlogfile >> ${backupdir}/info-$1-$2-$3.txt
echo $masterlogpos >> ${backupdir}/info-$1-$2-$3.txt
# Dump all of our databases
echo "Dumping MySQL Databases"
for database in $databases
do
$mysqldump $userpassword $dumpoptions $database | gzip - > ${backupdir}/${database}-$1-$2-$3.sql.gz
done
# Unlock
$mysql $userpassword -e 'START SLAVE'
echo "Dump Complete!"
exit 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11643 次 |
| 最近记录: |