设置 MySQL 数据库的自动备份(包括表锁等)-MySQL Workbench?

设置 MySQL 数据库的自动备份(包括表锁等)-MySQL Workbench?

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

我办公室里有一台运行 Ubuntu 的小型计算机,但什么都没用。我想我应该用它来制作和存储我们的 MySQL 数据库备份(副本)。但是,我该如何备份我们的数据库呢?

MySQL Workbench 可以锁定表以避免错误,并具有许多其他功能,但是没有计划任何自动备份位。MySQL 转储器没有指定他们是否可以保持数据库的一致性。
本段信息来源:

当我有 SSH 访问权限时,我不明白在服务器上运行 php 脚本并通过电子邮件发送备份有什么意义。由于备份如此重要,我认为一定有一种我尚未找到的标准(或极好的)方法!

那么我该如何备份我们的数据呢?最好还有我们的用户、配置等等!

答案1

如果您在 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

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

试一试 !!!

答案2

将下面的脚本放在一个文件中并使其可执行使用(chmod u+v 文件名),然后在计算机上添加一个 crontab 条目@daily 文件名,它将转储并保留每周备份。

 #!/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

相关内容