ubuntu上mysql的自动备份

ubuntu上mysql的自动备份

我有一台装有 Mysql 数据库的 Ubuntu 服务器。我想在另一台服务器(例如 ovh)上设置夜间自动备份该数据库的功能。

我不知道什么是最好的工具。如果有人能提供一些建议...

提前致谢。

答案1

自动执行此任务的最简单方法是结合使用 MySQL Dumps 和 cronjob。您可以在此和其他互联网网站上找到大量有关此主题的信息,但为了完整起见,请执行以下操作:

创建 mysqldump.sh 文件

其中将包含我们将在 cron 作业中安排的 mysql dump 命令(替换用户、密码和路径以匹配您的环境):

mysqldump -u root -p<mysql_root_password> --all-databases | gzip > /desired/backup/folder/mysqldb_`date +%F`.sql.gz

编辑:如果希望脚本将备份存储在远程位置,只需挂载相应的设备或共享并在脚本中使用挂载路径。

测试脚本

确保脚本具有执行权限:

chmod +x /path/to/mysqldump.sh

执行脚本:

sh /path/to/mysqldump.sh

并测试它是否正常工作(备份文件将在指定的备份文件夹中创建)。

创建并安排新的 cron 作业

在命令提示符中输入

sudo crontab -e

并在文件底部添加以下行:

30 23 * * * /path/to/mysqldump.sh

这将在每天 23:30 执行脚本。

扩展这个简单的脚本

为了改进这种简单的备份方法,实际上可以做很多事情:

  • 备份到另一个系统
  • 监控磁盘空间
  • 电子邮件报告
  • ...

所以不要就此结束,继续实验吧!:-)

使用备份工具或基于云的备份服务

虽然上述方法是最简单的方法之一,并且可以扩展以满足您的特定需求,但值得一提的是,还有其他替代方法:

  • 备份工具,例如 AutoMySQLBackup,这是一款开源应用程序,可以简化配置电子邮件通知、压缩、加密、轮换和备份类型(例如增量)的过程。至于 2018 年 5 月,它可通过 APT 供 Ubuntu Server 使用。
  • 基于云的备份服务,例如 BackupBird、myRepono、Bitcan 等,如果您管理多个数据库服务器并想要集中管理所有备份,这些服务可能会很有趣。

请记住,我与上述任何解决方案和服务都没有任何关系,我列出它们仅供参考,因此使用它们需要您自行承担风险。

有用的链接/参考资料:

计划任务->https://en.wikipedia.org/wiki/Cron

MySQL 转储 ->https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

答案2

有几种方法可以自动备份 MySQL 数据库:

  1. Bash 脚本
  2. 使用 automysqlbackup
  3. 第三方工具

Bash 脚本

# Backup storage directory 
backup_folder=/var/backups

# Notification email address 
recipient_email=<[email protected]>

# MySQL user
user=<user_name>

# MySQL password
password=<password>

# Number of days to store the backup 
keep_day=30 

sqlfile=$backup_folder/all-database-$(date +%d-%m-%Y_%H-%M-%S).sql
zipfile=$backup_folder/all-database-$(date +%d-%m-%Y_%H-%M-%S).zip 

# Create a backup 
sudo mysqldump -u $user -p$password --all-databases > $sqlfile 

if [ $? == 0 ]; then
  echo 'Sql dump created' 
else
  echo 'mysqldump return non-zero code' | mailx -s 'No backup was created!' $recipient_email  
  exit 
fi 

# Compress backup 
zip $zipfile $sqlfile 

if [ $? == 0 ]; then
   echo 'The backup was successfully compressed' 
else
   echo 'Error compressing backup' | mailx -s 'Backup was not created!' $recipient_email 
   exit 
fi 

rm $sqlfile 

echo $zipfile | mailx -s 'Backup was successfully created' $recipient_email 

# Delete old backups 
#find $backupfolder -mtime +$keep_day -delete
find $backup_folder -mtime +$keep_day -delete      
  • 优点:
    • 完全免费
    • 您可以将所需的一切添加到 bash 脚本中以自动执行备份
  • 缺点:
    • 需要对 Bash 脚本有很好的了解才能完成复杂的备份过程
    • 很难配置将备份发送到云端

自动mysql备份

sudo apt-get install automysqlbackup
wget https://github.com/sixhop/AutoMySQLBackup/archive/master.zip

mkdir /opt/automysqlbackup
mv AutoMySQLBackup-master.zip 
cd /opt/automysqlbackup
tar -zxvf AutoMySQLBackup-master.zip

./install.sh

sudo nano /etc/automysqlbackup/automysqlbackup.conf

CONFIG_configfile="/etc/automysqlbackup/automysqlbackup.conf"
CONFIG_backup_dir='/var/backup/db'
CONFIG_mysql_dump_username='root'
CONFIG_mysql_dump_password='my_password'
CONFIG_mysql_dump_host='localhost'
CONFIG_db_names=('my_db')
CONFIG_db_exclude=('information_schema')
CONFIG_mail_address='[email protected]'
CONFIG_rotation_daily=6
CONFIG_rotation_weekly=35
CONFIG_rotation_monthly=150

automysqlbackup /etc/automysqlbackup/automysqlbackup.conf
  • 优点:
    • 免费
    • 备份过程的几个部分已经添加到脚本中
  • 缺点:
    • 您只能指定一个文件夹作为备份存储位置(这不安全)
    • 没有机会删除旧备份的文件

第三方工具

如果你需要一些现成的、易于使用且有很多选项的东西,你可以使用查询语句

  • 优点:

    • 免费
    • 它很容易使用
    • 支持多种存储云
    • 有不同类型的通知
    • 云端会自动删除旧备份
    • 一个 Web 界面可管理多个 DBMS 服务器
    • 不同类型的 DBMS (MySQL、PostgreSQL、MS SQL Server)
  • 缺点:

    • 还没有机会进行增量备份

相关内容