您通常如何备份数据库?

您通常如何备份数据库?

我正在使用 mysql

您多久备份一次数据库?

您通常如何备份数据库?

将所有数据导出为 sql 或 cvs 格式并将其保存在文件夹中??

答案1

如果您想正确执行 MySQL 备份,而无需停机,则应将数据库复制到备用服务器。它不需要非常强大,只需能够应付主数据库的写入负载即可。您不应该在生产中使用此服务器。如果复制永远跟不上,则需要更强大的服务器。您可以通过比较日志文件和输出中的位置来进行检查

 > SHOW MASTER STATUS\G

在主人和

 > SHOW SLAVE STATUS\G

在从服务器上。我认为 MySQL5 将显示滞后SHOW SLAVE STATUS

当你对你的奴隶保持同步感到高兴时,你可以通过以下方式进行备份

  1. SLAVE STOP;在从服务器上停止复制
  2. mysqldump --opt在从属服务器上执行。
  3. SLAVE START;在从服务器上重新启动复制

如果您这样做,那么您将拥有一致的数据库备份。此方法可防止不同数据库甚至更糟的同一数据库中的不同表不同步,并通过在备份时锁定表以进行写入来防止停机。

这种设置的一大好处是,您拥有一个数据库副本,您可以用它运行耗时较长且成本高昂的查询,而这不会影响您的实时服务。

一些随机提示:

  • 不要试图对 mysql 数据文件进行基于文件的备份。这样做弊大于利,而 MySQL 转储则更加灵活。
  • 在转储过程中,请注意 mysqldump 锁定表。
  • 除非你在转储过程中锁定每个表,否则请注意转储中的不一致问题
  • 使用mysqldump --opt,因为它通常是导入结果 SQL 的最快方法
  • 尽可能多地转储。我们每天都会转储,因为我们有 40GB 以上的数据。
  • 偶尔在备用服务器上测试您的转储以确保它们可以正常工作。

答案2

我使用一个脚本,用于mysqldump将数据/架构提取到每个数据库的文件中。数据通过常规的 netbackup 备份到磁带。您显然可以添加更多花哨的功能,但这只是一个基本的转储。

#!/bin/sh
# Find out what databases are in mysql and back them up
# Delete old backups


STARTTIME=` date +%Y%m%d-%H%M `

#BACKUP_DIR="/usr/local/db_backups"
BACKUP_DIR="/var/local/db_backups"
LOGFILE="/var/log/db_backups.log"
USER="root"
PASSWD="<password>"
KEEP="7"

(
echo
echo " ---MySQL backups start ${STARTTIME} ---"
#delete any backup written more than ${KEEP} days ago
echo "Removing files over ${KEEP} days old from ${BACKUP_DIR}:"
/usr/bin/find  ${BACKUP_DIR} -mindepth 1 -mtime +${KEEP} -print -delete



echo
echo "Performing today's dumps"
#find each database running in this instance of mysl
for DB in ` echo "show databases;"|mysql -u${USER} -p${PASSWD} mysql |awk " NR>1 {print $1} " `
do
        #generate a backup file name based on the data base name
        BACKUP_FILE="${BACKUP_DIR}/${DB}-${STARTTIME}.sql"
        echo "Processing database ${DB} into file ${BACKUP_FILE}"
        # dump the database data/schema into the backup file
        mysqldump -u${USER} -p${PASSWD} --add-drop-table ${DB} > ${BACKUP_FILE}
        gzip ${BACKUP_FILE}
done

ENDTIME=` date +%Y%m%d-%H%M `
echo
echo " ---MySQL backups complete ${ENDTIME} ---"
echo
) >>  ${LOGFILE} 2>&1

答案3

如果必须停止数据库,通常每天会备份一次,然后将备份传输到存储区域进行合并,然后记录到磁带上。

大多数情况下,数据库备份都是使用数据库引擎提供的本机工具完成的。

为了防止硬件故障,服务器上不应保留数据备份。

强烈建议尽可能拥有数据库服务器的最新版本副本,最好为生产数据库配备故障转移机制。

对于软件,您可以查看巴库拉或者兹曼达

答案4

我正在使用 Percona 的备份软件. 它是 InnoDB 的非阻塞备份解决方案 /数据库

相关内容