镜像PHP / MySQL设置的正确方法

时间:2011-12-12 07:44:15

标签: php mysql mirror

我刚刚创建了我的第一个PHP / MySQL站点,并且正在研究为备份创建数据库的镜像。当然,这是因为一些黑客设法窥探并破坏了主数据库。这样做是对还是错?

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

5 个答案:

答案 0 :(得分:4)

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

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

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

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

2使用mysql replication solutions(主从结构)进行在线备份。所有对master进行数据修改的查询也将在slave上执行。

<强>比较 - :

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

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

  1. 每天早上写镜子,
  2. 在另一台物理计算机上构建master db的slave。
  3. 那是安全的。

答案 1 :(得分:1)

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

备份数据库:

mysqldump -u username -p database_name > backup.sql

现在从备份恢复:

mysql -u username -p database_name < backup.sql

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

您可以详细了解mysqldump here

的语法

答案 2 :(得分:0)

就黑客而言备份数据库时,似乎mysqldump是可行的方法;你可以阅读它here。然后你可以将mysql转储到另一台服务器。就个人而言,我每天都有一个chron进行此备份,然后我将备份复制到另一台具有ftp同步功能的服务器上,但还有其他方法可以自动执行此操作。如果你在Linux服务器上,使用webmin可以使过程更容易,它有备份mysql数据库的工具。希望这会有所帮助。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

您可以设置mysql Master / Slave复制:

首先创建一个用于复制数据库的用户: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