我已经编写了一个 shell 脚本,每天进行备份,但是每当它启动 mysql 时,它就会锁定数据库并且站点出现故障。
我不想影响实时服务器,因为站点可以访问不同的时区,所以不能在晚上进行备份
避免此问题的一种方法是设置MySQL 复制并使用从数据库进行备份。
优点是您可以获得数据库的完整复制,并且可以有效地进行热备份,无论数据库类型如何。但是,您确实需要另一个数据库服务器,并且有效地将存储容量翻倍(因为您正在维护数据库的另一个副本)
不是每个人的一杯茶,但仍然是一种选择。
解决问题
mysqldump -u[user] -p[password] dbname --skip-lock-tables | gzip > soohoo_backup.sql.gz
如果您使用的是 MyISAM,您可以通知 MySQL 您不想使用--lock-tables=false
. 如果您使用的是 InnoDB,您可以使用它--single-transaction
来避免锁定。
您可以使用 :
mysqldump -u [user] -p[password] [dbname] > dumpfile.sql