2

我刚刚创建了我的第一个 PHP/MySQL 站点,并正在研究创建数据库的镜像以进行备份。这当然是为了防止某些黑客设法窥探并破坏主数据库。这样做有正确或错误的方法吗?

编辑:是的,我在其他一些主机中有一个托管计划,我希望将镜像放置在其中。

4

5 回答 5

4

备份mysql数据库主要有两种方式:冷(静态/离线)备份和热(动态/在线)备份。

1 每天/每周/每月等使用 crontab 脚本备份您的数据库。我们称之为冷备份。脚本可能是这样的:

!#/bin/sh
mysqldump -usample_name -S/tmp/sample.sock --databases db1 db2 > db_backup_time.sql

你可以在这里找到 mysqldump 的手册。实际上,整个 chp.6 都在谈论数据库备份和恢复。在此之后,您将每天获得数据的镜像(例如早上 6 点)。

2 使用mysql复制方案(主从结构)进行在线备份。master 上所有导致数据修改的查询也将在 slave 上执行。

比较:

基本上,冷备份更容易。但是当坏事发生时,第一种方法只能将数据恢复到您转储镜像时的数据。借助热备份和mysqldump工具,您可以随时恢复数据。

根据我的经验,我们总是将这两种方法组合在一起:

  1. 每天早上写镜子,然后,
  2. 在另一台物理机器上构建主数据库的从属。

那将是安全的。

于 2011-12-12T08:38:08.033 回答
1

mysqldump 是一个方便的实用程序,可让您将数据库备份为文本文件。

要备份您的数据库:

mysqldump -u username -p database_name > backup.sql

现在从备份中恢复:

mysql -u username -p database_name < backup.sql

最好创建一个定期执行此操作的脚本,以便您始终拥有一个新的还原点。

您可以在此处了解有关 mysqldump 语法的更多信息

于 2011-12-12T07:58:24.250 回答
0

至于在黑客的情况下备份数据库,似乎mysqldump是要走的路;你可以在这里阅读。然后,您可以将该 mysql 转储到另一台服务器。就个人而言,我每天都有一个 chron 做这个备份,然后我将备份复制到另一台服务器上,并使用 ftp 同步,但还有其他方法可以自动化它。如果您在 linux 服务器上,使用webmin可能会使该过程更容易,它具有备份 mysql 数据库的工具。希望这可以帮助。

于 2011-12-12T07:52:11.030 回答
0

如果您通过将数据库镜像到另一台主机来备份数据库,例如每天一次,如果数据被损坏/丢弃并且您在镜像之前没有捕获它,您的数据仍然会丢失。正确的方法是定期保持转储。我每天都对我的数据库进行转储,每天备份 4 周,然后每周备份 6 个月。

如果您的数据库和备份服务器彼此相邻(在网络距离内),这种方法效果最好。但是,如果您的数据库托管在其他地方并且不是太大,它应该仍然可以正常工作(许多主机每天都会转储您的数据库,但您需要自己获取它)。

于 2011-12-12T07:52:20.553 回答
0

您可以设置 mysql 主/从复制:

首先创建一个用于复制数据库的用户:replUser

在主服务器上,您需要以下设置:

[mysqld]
log-bin=mysql-bin
server-id=1

在从服务器上,您需要在 my.cnf 中进行以下设置

## Replication
server-id                       = 2
relay-log-space-limit           = 16G
expire-logs-days                = 7
master-host = 10.10.10.10
master-user = replUser
master-password = yourpassword
master-connect-retry=60
replicate-do-db = database_name

参考:http ://dev.mysql.com/doc/refman/5.0/en/replication.html

于 2011-12-12T07:55:26.390 回答