【问题标题】:Linux Perform MySQL Backup to time-based path from WebminLinux 从 Webmin 执行 MySQL 备份到基于时间的路径
【发布时间】:2012-08-11 12:15:26
【问题描述】:

我试图在 Linux Ubuntu Server 12.04 (CronJob) 中设置计划任务,以便在午夜执行我所有 MySQL 数据库的每日备份。

我已经安装了已知的Webmin(一个很好的用于管理 Web 服务器的 Web 界面)。

所以我的问题是:无论何时执行备份,文件都会被覆盖!

也就是说:前天的备份丢失了,只保存“昨天”的备份!

我尝试过设置动态文件路径,例如:

/var/www/mysqlbackups/%d-%m-%y

但我没有成功:(

谁能帮帮我。

非常感谢各位。

【问题讨论】:

    标签: mysql backup ubuntu-server cron-task webmin


    【解决方案1】:

    您可以通过以下方式进行操作

    Webmin > MySQL 数据库服务器 > 选择数据库 > 备份数据库 > 文件路径 在其他备份选项中,您可以使用 > 命令在备份后运行 输入======> mv文件路径/文件名文件路径/文件名_date +"%Y%m%d%H%M%S".sql

    【讨论】:

      【解决方案2】:

      MySQL 数据库服务器 > 模块配置 > 在“是否对备份目标进行 strftime 替换?”选择“是”

      它对我有用! :)

      【讨论】:

      【解决方案3】:

      我遇到了同样的问题并这样解决了:

      服务器 选择 MySQL 数据库服务器。 转到 Module config(左上角),然后选择 Do strftime replacement of backup destinations?Yes

      我使用 db_%d-%m-%Y.sql 格式进行备份。 (db_13-03-2013.sql)

      【讨论】:

        【解决方案4】:

        您可以使用动态路径,但必须在模块配置中启用它:

        System > Filesystem Backup > Module Config > Do strftime substitution of backup destinations? > Yes
        

        (如果您不确定占位符,只需单击配置中的文本“Do strftime replacement of backup destinations?”,帮助将显示给您。)

        【讨论】:

        • 这仅适用于文件系统备份 (vritualmin 4.08)。 @Mr Vector 的答案是正确的。
        【解决方案5】:

        我制作了一个 shell 脚本(不适用于 webmin)。把它放在 /etc/cron.daily 中。

        脚本会备份数据库(将其存储为 .gz),然后通过 ssh 将其上传到另一台服务器。对于授权。我设置了 ssh 密钥,所以不需要密码。 备份文件具有唯一名称,因此您不会覆盖备份文件。

        这是在脚本中创建文件名的方法:

        now=`date  +%Y%m%d_%H%M`
        dst_path=/var/local/backups
        filename="$dst_path/$database.$now.sql.gz"
        

        然后你应该编写一个小脚本来删除所有早于 x 天的备份文件。

        #!/bin/sh
        
        #
        # Creates a backup of a MySQL databases and uses ssh (sFTP) to send if  to another server
        # This script shouldbe called from the crontab
        
        PATH=/usr/sbin:/usr/bin:/sbin:/bin
        
        # MySQL user and password
        mysql_cmd=/opt/bitnami/mysql/bin/mysqldump
        mysql_usr=user_name
        mysql_pass=password
        
        # destination ssh
        dst_user=user_name
        dst_hostname=192.168.1.1
        
        # Database to backup
        database=test
        
        # create timestamp
        now=`date  +%Y%m%d_%H%M`
        
        # where we store the files
        dst_path=/var/local/backups
        
        # backup filename
        filename="$dst_path/$database.$now.sql.gz"
        dst_filename="$database.$now.sql.gz"
        
        # run backup
        $mysql_cmd -u $mysql_usr --password=$mysql_pass  $database | gzip > $filename
        
        # upload to sever (ssh)
        scp $filename $dst_user@$dst_hostname:
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-09-12
          • 1970-01-01
          • 2011-12-15
          • 1970-01-01
          • 2023-03-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多