如何用python实现多台mysqlserver的远程备份

如何用python实现多台mysqlserver的远程备份,第1张

用python是非常方便的,非常方便就能备份mysql和sqlserver,

下面我们来具体看看如何用:

#coding=gbk

import os

import time

os.system("mysqldump -h192.168.0.2 -uddd -pggg xdreams >E:/mysqldack/xdreams/xdreamsfdfdf.txt")

上面就成功把0.2机器上的mysql数据库备份下来,

导入数据库:mysql -h192.168.0.2 -uroot -psz212 -P 7659 hotelguanli <G:/temp/2013-03-28-10-34-35.sql

下面是sqlserver的:

os.system("sqlcmd.exe -S 127.0.0.1,56678 -U sa -P 123456 -d 数据库名 -b -c cmd_end -Q \"backup database 数据库名 to disk='d:/sql.bak'\"")

看看,是不是很简单。

当然还可以通过os.path.getsize(r"d:/sql.bak")/1024来获取这个文件的大小,返回的是K,

备份文件还可以用时间值来命名:

如:

nowtime=time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))+""

改造上面一条:

os.system("mysqldump -h192.168.0.2 -uddd -pggg xdreams >E:/mysqldack/xdreams/xdreams"+nowtime+".txt")

如果再完善一点,就加个备份完成后发一封邮件到你邮箱里吧。

其它要注意到的一点就是sqlxerver和备份中,sqlserver服务器实列要支付远程连接,开启sql brower服务

两个数据库的密码不要含有"^"这个符号,因为在cmd里好像识别不到它,转义也不行,具体原因没查到.

现在,加在windows或linux的计划任务中去,每天执行它,至此,大功告成.

这个要用到mysql下的存取过程了,先把下面的那段代码做为了一个批处理文件,命名为:

mysql_bak.bat

具体的 *** 作步骤如下:

1. 将上面的两段代码分别保存为 mysql_bak.bat 并根据注释修改相关参数

确定好目录之后,运行 mysql_bak.bat 将计划任务添加到系统中。

2. Windows Server 2003 / XP 可以通过 开始,控制面板,计划任务进入计划任务管理界面;

Windows Vista / 7 可以通过 计算机,右键,管理,系统工具,任务计划程序,任务计划程序库,进入计划任务管理界面。

3. 手动运行该任务,查看备份目录来确认下备份是否成功。

具体实现在代码:

@echo off &setlocal ENABLEEXTENSIONS

:: ---------- 配置项 ----------

:: 备份放置的路径,加 \

set BACKUP_PATH=D:\Backup\

:: 要备份的数据库名称,多个用空格分隔

set DATABASES=database1 database2 database3

:: MySQL 用户名

set USERNAME=root

:: MySQL 密码

set PASSWORD=123456

:: MySQL Bin 目录,加 \

:: 如果可以直接使用 mysqldump(安装时添加 MySQL Bin 目录到了环境变量),此处留空即可

set MYSQL=D:\SERVER\MySQL\bin\

:: WinRAR 自带命令行工具的可执行文件路径,长文件名注意用 Dos 长文件名书写方式

set WINRAR=C:\Progra~1\WinRAR\Rar.exe

:: ---------- 以下请勿修改 ----------

set YEAR=%date:~0,4%

set MONTH=%date:~5,2%

set DAY=%date:~8,2%

:: 如果在 dos 下输入 time 返回的不是 24 小时制(没有 0 填充),请自行修改此处

set HOUR=%time:~0,2%

set MINUTE=%time:~3,2%

set SECOND=%time:~6,2%

set DIR=%BACKUP_PATH%%YEAR%\%MONTH%\%DAY%\

set ADDON=%YEAR%%MONTH%%DAY%%HOUR%%MINUTE%%SECOND%

:: create dir

if not exist %DIR% (

mkdir %DIR% 2>nul

)

if not exist %DIR% (

echo Backup path: %DIR% not exists, create dir failed.

goto exit

)

cd /d %DIR%

:: backup

echo Start dump databases...

for %%D in (%DATABASES%) do (

echo Dumping database %%D ...

%MYSQL%mysqldump -u%USERNAME% -p%PASSWORD% %%D >%%D.%ADDON%.sql 2>nul

:: winrar

if exist %WINRAR% (

%WINRAR% a -k -r -s -m1 -ep1 %%D.%ADDON%.rar %%D.%ADDON%.sql 2>nul

del /F /S /Q %%D.%ADDON%.sql 2>nul

)

)

echo Done

:exit

1. mysqldump: 最早,也是最成熟的逻辑备份工具,是 MySQL 原生的用来备份整个数据库实例、单个数据库、单张表的逻辑备份工具, 上手简单,学习成本几乎为 0。备份简单,恢复也简单。

比如导出单个数据库 ytt: mysqldump ytt >/tmp/ytt.sql;

恢复也非常简单:mysql </tmp/ytt.sql

缺点是备份速度慢。在整个备份过程中,是单线程运行;备份出来的数据集要恢复的话同样也是单线程运行,恢复速度也慢。除非对同一时刻的所有表单独备份出来,自己写额外脚本进行多线程恢复。

2. mysqlpump:MySQL 5.7 GA 后推出的 mysqldump工具的增强版。可以对同一个数据集多个线程并发备份,备份速度很快。

其他缺点和 mysqldump 一样。

3. MySQL Shell UTIL 对象附带的备份工具:随 MySQL 8.0.21 最新版本捆绑发布,自带多线程备份以及多线程恢复功能, 可以直接替代 mysqldump/mysqlpump。

dump_instance/dumpInstance 用来多线程备份 MySQL 整个单机实例 dump_schemas/dumpSchemas 用来多线程备份 MySQL 单个数据库 load_dump/loadDump 用来多线程恢复之前两个工具导出的数据集文件


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5905457.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存