设置MySQL数据库的自动备份,包括表锁等 – MySQL Workbench?

我们有一个虚拟服务器,在Ubuntu服务器上运行完整的ssh和root权限运行LAMP。

我在运行ubuntu的办公室里有一台小电脑,这个电脑没有被使用。 我以为我应该使用它来制作和存储(我们的MySQL数据库备份的副本)。 但是,我如何去备份我们的数据库呢?

MySQL Workbench会locking表以避免在其他一些function中发生错误,但是没有计划的任何计划的自动备份位。 MySQL Dumper没有指定他们可以保持数据库的一致性。
来自本段的资料:

我没有看到在我的服务器上运行php脚本,并在有SSH访问时通过电子邮件发送备份。 由于备份是如此重要,我认为必须有一个标准(或真棒)的方式做到这一点,我还没有find!

那么我怎么去备份我们的数据呢? 而且,最好是我们的用户,configuration等!

如果您在Ubuntu机器上安装了MySQL,您可以执行以下操作:

假设虚拟IP是10.1.2.30

你可以在Ubuntu机器上进行以下操作

BACKUP_FILE=/root/MySQLData.sql MYSQL_HOST=10.1.2.30 MYSQL_USER=whateverusername MYSQL_PASS=whateverpassword MYSQL_CONN="-h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS}" mysqldump ${MYSQL_CONN} --all-databases > ${BACKUP_FILE} 

你也可以在Ubuntu机器上使用crontab

如果你正在寻找一致的mysqldumps,你可以

  • 如果所有数据都是InnoDB,则使用–single-transaction选项
  • 如果所有的数据是MyISAM,运行FLUSH TABLES WITH READ LOCK; 在数据库上
  • 如果数据是MyISAM和InnoDB混合,运行FLUSH TABLES WITH READ LOCK;--single-transaction数据库上的--single-transaction (请参阅我的posthttps://dba.stackexchange.com/questions/8587/mysql-db-backup-excluding-specific-tables/8613#8613关于脚本的一些想法)

试一试 !!!

在一个文件和下面的脚本是exe使用(chmod u + v文件名),然后在计算机上@daily文件名添加一个crontab项,它将转储并保持每周备份。

  #!/bin/sh eightdaysago=$(date --date='7 days ago' +%Y-%m-%d-%A) rm -rf /backups/$eightdaysago # Backup the mysql Databases for database in $(mysql -u b4ckup -pd1psh1t --host server0.expatjob.net -e "show databases" | awk '{print $1}' | grep -v Database| grep -v information_schema | grep -v mysql | grep -v phpmyadmin | grep -v STATS) do ssh user@ip 'mysqladmin -u (user) -p(password) flush-hosts' mysqldump -u (user) -p(password) --lock-tables=false --host ip $database > /backups/`date +\%Y-\%m-\%d`-`date +\%A`/$database.sql done