2011-12-12 30 views
2

我刚刚创建了我的第一个PHP/MySQL站点,并且正在研究创建用于备份的数据库镜像。当然,这是一些黑客设法去窥探并破坏主数据库的情况。有没有这样做的正确或错误的方式?镜像PHP/MySQL设置的正确方法

编辑:是的,我已经在其他一些主机托管计划,我想镜子被放置在

+1

不要托管公司自动执行此操作吗? –

回答

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(主从结构)进行联机备份。主站上的所有查询导致数据修改也将在从站上执行。

比较 - :

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

在我的经验中,我们始终将这两种方法一起组成:

  1. 写每天早晨镜,并
  2. 建立主DB的从另一台物理机器上。

这将是安全的。

+0

解决方案2很有趣。我喜欢根据一天的时间有两个不同的时间表。为了澄清,#1是冷备份,#2是热备份? – enchance

+0

@enchance是的。在错误地删除整个表格或硬盘损坏的情况下,您可以使用#1的镜像在当天早上恢复数据库。然后使用binlog(在这种情况下,工具[mysqlbinlog](http://dev.mysql.com/doc/refman/5.1/en/mysqlbinlog.html)将会很有帮助。)恢复增量数据。 – tyger

0

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

0

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

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

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

1

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

备份数据库:

mysqldump -u username -p database_name > backup.sql 

我们从备份中恢复:

mysql -u username -p database_name < backup.sql 

这是最好创建一个脚本,这是否定期让你总是有一个新鲜的恢复点。

您可以了解更多关于语法的mysqldump here