我们有一个虚拟服务器,在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,你可以
FLUSH TABLES WITH READ LOCK; 在数据库上 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