Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Python。自动创建 MySQL 数据库的备份。_创想鸟

Python。自动创建 MySQL 数据库的备份。

python。自动创建 mysql 数据库的备份。

此脚本自动创建 MySQL 数据库的备份、恢复它们以及管理目标 MySQL 服务器上的数据库和用户创建。

导入子流程导入日期时间导入系统导入操作系统def check_and_create_database(主机、端口、用户名、密码、数据库):    # 检查数据库是否存在的命令    check_database_command = f"mysql -sN --host={主机} --port={端口} --user={用户名} --password={密码} -e "SELECT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '{数据库}')" 2>/dev/null"    # 执行命令    输出 = subprocess.check_output(check_database_command, shell=True)    # 如果输出包含b'1',则数据库存在    如果输出中有 b'1':        subprocess.run(check_database_command, shell=True, check=True)        print(f"数据库'{database}'已经存在。")        系统退出(1)    别的:        # 如果命令失败,则数据库不存在        print(f"数据库 '{database}' 不存在。正在创建...")        # 创建数据库的命令        create_database_command = f"mysql --host={主机} --port={端口} --user={用户名} --password={密码} -e '创建数据库 {数据库}' 2>/dev/null"        subprocess.run(create_database_command, shell=True)def check_and_create_user(主机、端口、用户名、密码、数据库、新用户名、新密码):    # 检查用户是否存在的命令    check_user_command = f"mysql -sN --host={主机} --port={端口} --user={用户名} --password={密码} -e "SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '{new_username}')" 2>/dev/null"    # 执行命令    输出 = subprocess.check_output(check_user_command, shell=True)    # 如果输出包含b'1',则用户存在    如果输出中有 b'1':        print(f"用户'{new_username}'已经存在。")        系统退出(1)    别的:        # 用户不存在,创建        print(f"用户 '{new_username}' 不存在。正在创建...")        # 创建用户并授予权限的命令        create_user_command = f"mysql --host={主机} --port={端口} --user={用户名} --password={密码} -e "创建用户'{new_username}'@'%' 识别者' {新密码}';将 {database}.* 上的所有权限授予 '{new_username}'@'%';刷新权限;“2>/dev/null”        subprocess.run(create_user_command, shell=True)def backup_mysql_database(主机、端口、用户名、密码、数据库、备份路径):    # 检查备份目录是否存在    如果不是 os.path.exists(backup_path):        print(f"错误:备份目录'{backup_path}'不存在。")        系统退出(1)    # 使用当前日期和时间为备份创建文件名    时间戳 = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")    backup_file = f"{备份路径}/{数据库}_{时间戳}.sql"    # 使用mysqldump创建数据库备份的命令    dump_command = f"mysqldump --no-tablespaces --host={主机} --port={端口} --user={用户名} --password={密码} {数据库} > {备份文件} 2>/dev/无效的”    # 执行mysqldump命令    subprocess.run(dump_command, shell=True)    返回备份文件def Restore_mysql_database(主机、端口、用户名、密码、数据库、备份文件):    # 使用 mysql 从备份恢复数据库的命令    Restore_command = f"mysql --host={主机} --port={端口} --user={用户名} --password={密码} {数据库} /dev/null"    # 执行mysql命令    subprocess.run(restore_command, shell=True)def main():    # 源MySQL数据库的连接参数    源主机=“127.0.0.1”    源端口=“3309”    源用户名=“我的用户”    源密码=“我的密码”    源数据库=“我的数据库”    # 目标MySQL数据库的连接参数    目标主机=“127.0.0.1”    目标端口=“3309”    新用户名 = "新用户名"    新密码 = "新密码"    target_database =“my_database_two”    目标用户名=“root”    目标密码=“根密码”    # 本地保存备份的路径    backup_path =“my_dbs_dumps”    # 检查source_database与target_database是否不同    如果源数据库==目标数据库:        print("错误:源数据库应该与目标数据库不同。")        系统退出(1)    # 检查目标数据库,如果不存在则创建    check_and_create_database(目标主机、目标端口、目标用户名、目标密码、目标数据库)    # 检查目标用户,如果不存在则创建    check_and_create_user(目标主机、目标端口、目标用户名、目标密码、目标数据库、新用户名、新密码)    # 创建MySQL数据库的备份    backup_file = backup_mysql_database(源主机、源端口、源用户名、源密码、源数据库、备份路径)    print(f"已创建数据库备份:{backup_file}")    # 从备份中恢复目标服务器上的数据库    Restore_mysql_database(目标主机、目标端口、目标用户名、目标密码、目标数据库、备份文件)    print("数据库备份已在目标服务器上恢复。")如果 __name__ == "__main__":    主要的()

检查并创建_数据库:
此函数检查 MySQL 服务器上是否存在数据库。如果数据库不存在,则会创建它。它需要主机、端口、用户名、密码和数据库名称等参数来检查或创建。

检查并创建_用户:
与数据库函数一样,该函数检查 MySQL 服务器上是否存在用户。如果用户不存在,它将创建用户并授予特定数据库的权限。它还接受主机、端口、用户名、密码、数据库名称、新用户名和新密码等参数。

backup_mysql_database:
此函数使用 mysqldump 执行 MySQL 数据库的备份。它需要主机、端口、用户名、密码、数据库名称和保存备份文件的路径等参数。

restore_mysql_database:
此函数从备份文件恢复 MySQL 数据库。它接受主机、端口、用户名、密码、数据库名称和备份文件路径等参数。

主要:
这是该脚本的主要功能。它为源和目标 MySQL 数据库设置参数,包括连接详细信息、数据库名称和备份路径。然后,它执行检查以确保源数据库和目标数据库不同,如果目标数据库和用户不存在,则创建目标数据库和用户,创建源数据库的备份,最后将备份恢复到目标数据库。

此外,该脚本使用 subprocess 模块执行 MySQL 操作的 shell 命令(mysql、mysqldump),并执行错误处理和输出重定向(2>/dev/null)以抑制不必要的输出。

如果您正在使用 MySQL 数据库并想要创建自动化,此代码将为您提供帮助。

这段代码是一个很好的起始模板,用于创建管理 MySQL 数据库的自动化脚本。

dmi@dmi-laptop:~/my_python$ python3 mysql_backup_restore.py 数据库“my_database_two”不存在。创造...用户“new_username”不存在。创造...创建数据库备份:my_dbs_dumps/my_database_2024-05-13_20-05-24.sql数据库备份恢复到目标服务器上。dmi@dmi-laptop:~/my_python$ 

ask_dima@yahoo.com

以上就是Python。自动创建 MySQL 数据库的备份。的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/62673.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
java怎么设置数组大小排序
上一篇 2025年11月11日 08:07:20
为什么用多读免费读小说app_使用阅多免费小说app的理由
下一篇 2025年11月11日 08:07:21

相关推荐

  • Linux查看系统日志的常用命令

    答案是查看Linux日志需综合使用journalctl、dmesg、tail、grep等工具。journalctl用于systemd系统集中查询服务及内核日志,支持时间、优先级、字段等多维度过滤;dmesg专注内核启动与硬件问题;tail -f实时监控日志动态;cat、grep、less结合正则和管…

    用户投稿 2026年9月21日
    000
  • mysql如何实现后台管理系统

    答案:基于MySQL的%ignore_a_1%需设计用户、权限、日志等表结构,通过后端语言实现安全的CRUD接口与JWT认证,前端展示数据并控制权限,确保系统安全稳定。 实现一个基于 MySQL 的后台管理系统,核心是构建一个安全、稳定、可扩展的系统架构,将数据库作为数据存储层,配合后端语言和前端界…

    2026年9月21日
    000
  • 压力测试(Benchmark)Swoole服务的工具与方法

    进行swoole服务的压力测试是为了确保服务在高负载下稳定运行。1. 选择工具:apache jmeter、wrk、locust。2. 使用方法:jmeter通过脚本配置,wrk通过命令行,locust通过python脚本。3. 注意事项:环境隔离、数据监控、脚本设计。4. 优化点:内存泄漏、连接池…

    2026年9月21日
    000
  • mysql常用存储引擎有哪些

    InnoDB是现代MySQL应用的首选存储引擎,因其支持事务(ACID)、行级锁、外键约束、崩溃恢复和MVCC,适用于高并发、数据完整性要求高的OLTP场景;MyISAM虽读取快但仅支持表级锁且无事务和外键,适用于读多写少的简单场景,已逐渐被淘汰;Memory引擎将数据存于内存,速度快但易失,适合临…

    2026年9月21日
    000
  • 利用蝴蝶号搭建多账号无人直播系统的完整方案

    利用蝴蝶号搭建多账号无人直播系统的完整方案利用蝴蝶号搭建多账号无人直播系统的完整方案利用蝴蝶号搭建多账号无人直播系统的完整方案利用蝴蝶号搭建多账号无人直播系统的完整方案

    搭建多账号无人直播系统并非一键操作,而是通过“蝴蝶号”实现自动化流程。首先,“蝴蝶号”负责多账号的生命周期管理,包括登录、状态维护、ip代理分配和设备指纹模拟;其次,内容调度系统决定直播内容及播放时间,可为预录视频或动态生成流;再次,推流引擎将内容实时推送至平台,推荐使用ffmpeg结合python…

    2026年9月21日 用户投稿
    100
  • 数据库运维开发环境的调试模式演进

    数据库运维开发环境的调试模式演进数据库运维开发环境的调试模式演进数据库运维开发环境的调试模式演进数据库运维开发环境的调试模式演进

    这是学习笔记的第2393篇文章。 昨日,同事反馈了一个问题,原本的办公机环境中的虚拟机可以将办公机的IP暴露出来,提供数据库运维的API服务。例如,办公机的IP为192.168.10.100,而使用VirtualBox的虚拟机采用主机模式,其IP可能为192.168.56.100,那么192.168…

    2026年9月21日 用户投稿
    100
  • MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求

    MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求

    mysql日志审计是合规性的基石,因为它提供了数据库操作的完整证据链,记录用户身份、操作类型和时间戳等关键信息,满足gdpr、hipaa等法规要求,并支持事后追溯与事前震慑。1. mysql自身提供错误日志、通用查询日志、慢查询日志和二进制日志,其中通用查询日志记录所有sql语句,二进制日志用于数据…

    2026年9月21日 用户投稿
    100
  • VSCode编写Java代码方法_VSCode搭建Java开发环境实战教程

    答案:在VSCode中配置Java开发环境需安装JDK并设置环境变量,再安装VSCode及Java扩展包,即可实现Java项目的创建、编写、运行与调试。它轻量、启动快,支持多语言和丰富扩展,集成Maven/Gradle,适合日常开发。 在VSCode里编写Java代码,说白了,就是把这个轻量级的代码…

    2026年9月21日
    100
  • MySQL执行计划中的Extra字段代表什么_怎么看优化空间?

    MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?

    在 mysql 查询优化中,执行计划的 extra 字段用于说明查询执行时的额外操作,常见的值包括:1. using filesort 表示需要额外排序,应尽量通过建立索引避免;2. using temporary 表示使用了临时表,常见于 group by 或复杂 join,需优化减少其使用;3.…

    2026年9月21日 用户投稿
    100
  • MySQL数据分库分表如何设计_避免性能瓶颈的方法?

    MySQL数据分库分表如何设计_避免性能瓶颈的方法?MySQL数据分库分表如何设计_避免性能瓶颈的方法?MySQL数据分库分表如何设计_避免性能瓶颈的方法?MySQL数据分库分表如何设计_避免性能瓶颈的方法?

    分库分表设计需注意分片键选择、分片数量控制、避免跨库查询及完善运维体系。一,优先选择高频查询字段作为分片键,如用户id,避免使用时间戳以防写热点;二,初期合理分片(如4~8库,每库4~8表),预留扩容空间并根据数据总量反推分片数;三,尽量避免跨库查询,可通过冗余数据、异步汇总或强制路由优化;四,配套…

    2026年9月21日 用户投稿
    100
  • MySQL用户权限体系配置思路_Sublime中编辑多用户分权管理脚本

    MySQL用户权限体系配置思路_Sublime中编辑多用户分权管理脚本MySQL用户权限体系配置思路_Sublime中编辑多用户分权管理脚本MySQL用户权限体系配置思路_Sublime中编辑多用户分权管理脚本MySQL用户权限体系配置思路_Sublime中编辑多用户分权管理脚本

    最小权限原则是mysql用户权限配置的核心,确保每个用户仅拥有必要权限以提升安全性与可维护性。1.明确需求:根据用户角色分配如只读、增删改查或结构修改权限;2.创建用户并编写sql脚本进行权限管理,替代手动输入命令,提高效率与一致性;3.使用sublime text等编辑器提升脚本编写效率,利用语法…

    2026年9月21日 用户投稿
    100
  • VSCode的代码折叠功能好用吗?

    VSCode代码折叠功能支持多种方式:点击箭头、快捷键、命令面板及按区域类型折叠;可自定义基于缩进的折叠、默认层级和提示装饰器;集成语言服务后能智能识别JSX、Vue组件等结构,提升大型文件编辑效率。 VSCode 的代码折叠功能非常实用,尤其在处理大型文件或复杂结构时能显著提升阅读和编辑效率。 支…

    2026年9月21日
    100
  • 事务隔离级别在mysql中如何应用

    MySQL提供四种事务隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ(默认)、SERIALIZABLE,依次增强数据一致性,分别用于平衡并发性能与脏读、不可重复读、幻读等问题;通过SELECT @@tx_isolation等命令可查看级别,S…

    2026年9月21日
    300
  • mysql数据库和表的关系是怎样

    数据库是表的集合,一个MySQL数据库可包含多个表,表依赖数据库存在,需先创建数据库才能建表,如CREATE DATABASE school;USE school;CREATE TABLE students;数据库实现数据隔离与管理,不同项目使用不同数据库,便于组织与权限控制。 MySQL数据库和表…

    2026年9月21日
    000
  • 控制台命令(Console Command)开发

    控制台命令是程序员日常工作中不可或缺的工具,它提高了开发效率并帮助理解和控制程序运行。1) 通过简单的文本输入,完成复杂任务,如文件管理和系统监控。2) 控制台命令可用于快速调试、测试代码和自动化重复工作。3) 开发控制台命令时需注意安全性和兼容性问题。4) 控制台命令可实现有趣功能,如监控服务器资…

    2026年9月21日
    200
  • mysql如何调整字符集和排序规则

    答案是调整MySQL字符集和排序规则需分层级操作:先修改数据库默认设置,再转换表和字段,最后配置服务器参数。具体步骤为:使用ALTER DATABASE更改数据库默认字符集;用ALTER TABLE CONVERT TO转换表中所有字符型字段;通过MODIFY修改特定字段的字符集;在my.cnf中设…

    2026年9月21日
    000
  • mysql安装后如何优化配置文件

    答案:优化MySQL配置需先定位配置文件,再根据硬件和业务调整内存、InnoDB、连接等核心参数。具体包括设置innodb_buffer_pool_size为物理内存50%~70%,合理配置日志参数与连接数,启用慢查询日志,并使用工具辅助调优,避免过度配置,确保稳定高效。 MySQL 安装后,优化配…

    2026年9月21日
    100
  • mysql如何设计数据归档表

    归档目标是解决主表数据量过大问题,需明确归档范围如时间维度冷数据,设计与原表一致或简化的归档表结构,保留必要索引并可添加archive_time字段和分区,通过分批迁移、限流休眠、事务安全和断点记录策略执行归档,避免影响线上服务,同时建立查询视图、定期备份、监控任务及生命周期管理,确保数据可用与系统…

    2026年9月21日
    000
  • 如何基于Swoole开发自定义框架?

    基于swoole开发自定义框架可以通过以下步骤实现:1. 创建核心app类,初始化swoole服务器并定义回调函数;2. 实现路由功能,使用router类处理请求分发;3. 添加中间件支持,使用middleware类处理请求;4. 集成异步数据库操作,使用swoole的mysql协程客户端;5. 实…

    2026年9月21日
    100
  • mysql如何理解数据压缩

    MySQL数据压缩通过减少存储空间提升I/O效率,主要在InnoDB引擎中实现页级压缩,使用zlib算法对BLOB、TEXT等大字段表压缩效果显著,需设置ROW_FORMAT=COMPRESSED和KEY_BLOCK_SIZE;压缩可降低磁盘使用并加速全表扫描,但增加CPU开销,频繁更新可能导致页分…

    2026年9月21日
    000

发表回复

登录后才能评论
关注微信