Jak*_*keJ 5 mysql backup windows
我想知道是否有任何方法可以定期将整个 MySQL 服务器备份到特定位置。(如果需要版本,我可以轻松获取)。
如果有,我必须有一种方法可以轻松地从该服务器备份中恢复单个数据库,就像我已经单独备份它们一样。
所使用的方法只是一个纯粹的备份,没有区别,因此无需担心并发症。
更新:我使用 Windows Server 2008 来托管 MySQL 服务器
请在下面查看我的 WINDOWS 答案 UPDATE 2012-05-22 12:42 EDT
您需要分别备份每个数据库
首先,获取所有数据库
MYSQL_CONN="-uusername -ppassword"
SQLSTMT="SELECT DISTINCT table_schema FROM information_schema.tables"
SQLSTMT="${SQLSTMT} WHERE table_schema NOT IN"
SQLSTMT="${SQLSTMT} ('information_schema','mysql','performance_schema')"
mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" > /tmp/ListOfDatabases.txt
Run Code Online (Sandbox Code Playgroud)
如果您有几个数据库要备份,您可以并行转储所有数据库:
MYSQL_CONN="-uusername -ppassword"
MYSQLDUMP_OPTIONS="--hex-blob --routines --triggers"
for DB in `cat /tmp/ListOfDatabases.txt`
do
BACKUP_GZIP=${DB}.sql.gz
mysqldump ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} ${DB} | gzip > ${BACKUP_GZIP} &
done
wait
Run Code Online (Sandbox Code Playgroud)
如果要同时启动的数据库过多,则一次转储 10 个:
MYSQL_CONN="-uusername -ppassword"
MYSQLDUMP_OPTIONS="--hex-blob --routines --triggers"
COMMIT_COUNT=0
COMMIT_LIMIT=10
for DB in `cat /tmp/ListOfDatabases.txt`
do
mysqldump ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} ${DB} | gzip > ${DB}.sql.gz &
(( COMMIT_COUNT++ ))
if [ ${COMMIT_COUNT} -eq ${COMMIT_LIMIT} ]
then
COMMIT_COUNT=0
wait
fi
done
if [ ${COMMIT_COUNT} -gt 0 ]
then
wait
fi
Run Code Online (Sandbox Code Playgroud)
如果数据库太多或者某些数据库太大而无法频繁备份,您可能需要考虑像这样进行备份:
BACKUP ALGORITHM #2
这样,可以以时间点的方式恢复数据库。
例如,要获取mydb
2012-05-20 09:00:00 的数据库,请执行以下操作:
--start-datetime="2012-05-01 00:00:00"
--stop-datetime="2012-05-20 09:00:00"
--database=mydb
对于这些脚本,您可能还需要考虑其他因素。您可能还想使用开源/商业程序以最适合您使用的方式获取备份。
我会进一步推荐使用 MySQL 复制。这样,这些脚本就可以以这种方式在 Slave 上执行(如MySQL 5.0 Certification Study Guide,第 462 页第 32.6 节“复制作为备份的辅助”标题下的建议):
这也可以防止备份干扰生产主服务器。
哦,你运行的是Windows 2008?那是完全不同的球赛。
实际上,早在 2012 年 3 月,我就在 StackOverflow 上写了一篇关于在 Windows 中转储单独的数据库的文章。
我现在会从 StackOverflow 发布我的答案......
让 information_schema 数据库构建一个 DOS 批处理文件来并行执行 mysqldumps
set MYSQLUSER=root
set MYSQLPASS=1234
set BATCHFILE=S:\Backup\MySQL\Batch_mysqldump.bat
set DUMPPATH=S:\Backup\MySQL
echo @echo off > %BATCHFILE%
echo cd %DUMPPATH% >> %BATCHFILE%
mysql -u%MYSQLUSER% -p%MYSQLPASS% -AN -e"SELECT CONCAT('start mysqldump -u%MYSQLUSER% -p%MYSQLPASS% --routines --triggers ',schema_name,' > ',schema_name,'.sql') FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema','performance_schema')" >> %BATCHFILE%
type %BATCHFILE%
Run Code Online (Sandbox Code Playgroud)
就像任何 DOS 批处理文件一样运行
确保您有正确的用户名和密码来连接到 mysql
我只是试了一下以确保
C:\>set MYSQLUSER=lwdba
C:\>set MYSQLPASS=<hidden>
C:\>set BATCHFILE=C:\LWDBA\Batch_mysqldump.bat
C:\>set DUMPPATH=C:\LWDBA
C:\>echo @echo off > %BATCHFILE%
C:\>echo cd %DUMPPATH% >> %BATCHFILE%
C:\>mysql -u%MYSQLUSER% -p%MYSQLPASS% -AN -Bse"SELECT CONCAT('start mysqldump -u%MYSQLUSER% -p%MYSQLPASS% --routines --triggers ',schema_nam
e,' > ',schema_name,'.sql') FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema','performance_schema')" >> %BATCH
FILE%
C:\>type %BATCHFILE%
@echo off
cd C:\LWDBA
start mysqldump -ulwdba -phidden --routines --triggers a1ex07 > a1ex07.sql
start mysqldump -ulwdba -phidden --routines --triggers annarbor > annarbor.sql
start mysqldump -ulwdba -phidden --routines --triggers dilyan_kn > dilyan_kn.sql
start mysqldump -ulwdba -phidden --routines --triggers dtest > dtest.sql
start mysqldump -ulwdba -phidden --routines --triggers dude > dude.sql
start mysqldump -ulwdba -phidden --routines --triggers example > example.sql
start mysqldump -ulwdba -phidden --routines --triggers fed > fed.sql
start mysqldump -ulwdba -phidden --routines --triggers friends > friends.sql
start mysqldump -ulwdba -phidden --routines --triggers giannosfor > giannosfor.sql
start mysqldump -ulwdba -phidden --routines --triggers javier > javier.sql
start mysqldump -ulwdba -phidden --routines --triggers johnlocke > johnlocke.sql
start mysqldump -ulwdba -phidden --routines --triggers junk > junk.sql
start mysqldump -ulwdba -phidden --routines --triggers lovesh > lovesh.sql
start mysqldump -ulwdba -phidden --routines --triggers mysql > mysql.sql
start mysqldump -ulwdba -phidden --routines --triggers nwwatson > nwwatson.sql
start mysqldump -ulwdba -phidden --routines --triggers part > part.sql
start mysqldump -ulwdba -phidden --routines --triggers preeti > preeti.sql
start mysqldump -ulwdba -phidden --routines --triggers prefixdb > prefixdb.sql
start mysqldump -ulwdba -phidden --routines --triggers replagdb > replagdb.sql
start mysqldump -ulwdba -phidden --routines --triggers rollup_test > rollup_test.sql
start mysqldump -ulwdba -phidden --routines --triggers sample > sample.sql
start mysqldump -ulwdba -phidden --routines --triggers stuff > stuff.sql
start mysqldump -ulwdba -phidden --routines --triggers table_test > table_test.sql
start mysqldump -ulwdba -phidden --routines --triggers tagmediatest > tagmediatest.sql
start mysqldump -ulwdba -phidden --routines --triggers targetdb > targetdb.sql
start mysqldump -ulwdba -phidden --routines --triggers test > test.sql
start mysqldump -ulwdba -phidden --routines --triggers test_mysqldb > test_mysqldb.sql
start mysqldump -ulwdba -phidden --routines --triggers tostinni > tostinni.sql
start mysqldump -ulwdba -phidden --routines --triggers user1267617 > user1267617.sql
start mysqldump -ulwdba -phidden --routines --triggers user391986 > user391986.sql
start mysqldump -ulwdba -phidden --routines --triggers utility > utility.sql
start mysqldump -ulwdba -phidden --routines --triggers veto > veto.sql
start mysqldump -ulwdba -phidden --routines --triggers vito > vito.sql
start mysqldump -ulwdba -phidden --routines --triggers zipcodes > zipcodes.sql
Run Code Online (Sandbox Code Playgroud)
试一试 !!!
JakeJ 编辑:
运行时,该解决方案只是将数据输出到 CMD 中,然后将其关闭而不将其写入任何文件,但是现在将数据保存到创建的 .SQL 文件中。
set MYSQLUSER=root
set MYSQLPASS=pass
set BATCHFILE=C:\Backup\MySQL\Batch_mysqldump.bat
set DUMPPATH=C:\Backup\MySQL
echo @echo off > %BATCHFILE%
echo cd %DUMPPATH% >> %BATCHFILE%
cd C:\Program Files\MySQL\MySQL Server 5.5\bin\
mysql.exe -u%MYSQLUSER% -p%MYSQLPASS% -AN -e"SELECT CONCAT('mysqldump -u%MYSQLUSER% -p%MYSQLPASS% --routines --triggers ',schema_name,' > ',schema_name,'.sql') FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema','performance_schema')" >> %BATCHFILE%
type %BATCHFILE%
cd C:\Backup\MySQL
Batch_mysqldump.bat
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1631 次 |
最近记录: |