3

当前问题集

  • 包含 mysql_connector 对象的 Python 应用程序
  • 只能使用 mysql 访问远程服务器(无 ssh、rsh、telnet 等)

目标

  • 使用 mysql 连接器创建数据库备份到文件(在本地机器或网络位置 - 例如 Samba 共享)
  • 我想避免从每个表中收集每一行并将单行转储到 ascii 文件中。

环境

  • 操作系统:Windows、Linux
  • Python版本: 2.7

到目前为止我尝试了什么

欢迎任何帮助和提示!

4

2 回答 2

0

在基于 Ubuntu 的 linux 发行版上,运行以下命令来获取名为 my_database 的数据库的完整备份(包括模式)。

sudo apt-get install mysql-client
mysqldump -h<your_db_server> -u <your_user> -p<your_password> -e --databases my_database > my_backup.sql

如果您的本地计算机无法访问数据库,您只需要在服务器上运行它,但是您说您可以访问服务器,所以这应该可以正常工作。请记住不要在密码和 -p 之间添加空格。(如果密码是 passwd,写-ppasswd

于 2020-08-20T19:05:02.290 回答
0

我正在使用 mysqldump - 这意味着我必须在客户端机器上安装它,但它比从每个表中选择每一行的复杂脚本更可靠(对我来说)。

try:
    mysqldump_process = run(["/usr/bin/mysqldump","-h",host_endpoint,"-P","3306","-u","admin",master_user_password,"--result-file=/tmp/sanitised_dump.sql","--databases",schema_name], capture_output=True, check=True, text=True)
    print ("mysqldumping")

    print ("Process: ", mysqldump_process)
    print ("Command output: ", mysqldump_process.stdout)
except:
    print("mysqldump failed (but i don't know how to get the output in the exception handler)")
    print ("Process: ", mysqldump_process)
于 2022-01-12T01:44:35.893 回答