>  기사  >  백엔드 개발  >  PHP에서 자동 데이터베이스 백업을 구현하는 방법

PHP에서 자동 데이터베이스 백업을 구현하는 방법

炎欲天舞
炎欲天舞원래의
2017-08-03 16:54:372822검색

PHP를 사용하여 데이터베이스를 자동으로 백업하는 방법


1. 소개

mysql 데이터베이스를 백업하는 방법에는 여러 가지가 있습니다.

예:

1.mysqldump 함수를 사용하세요

mysqldump -u username -p dbname table1 table2 ...  > BackupName.sql


    dbname 매개변수는 데이터베이스의 이름을 나타냅니다
  1. table1 및 table2 매개변수는 백업해야 하는 테이블의 이름을 나타냅니다. 비어 있으면 전체 데이터베이스가 백업됩니다.
  2. BackupName.sql 매개변수 테이블은 백업 파일의 이름을 지정합니다. 파일 이름 앞에 절대값을 추가할 수 있습니다. 데이터베이스는 일반적으로 접미사 이름이 sql인 파일로 나누어집니다.

  3. 기본 사용법:

2. 데이터베이스를 백업하는 방법에는 여러 가지가 있습니다. 위의 두 가지가 더 일반적입니다

이번에는 PHP 기능을 통해 데이터베이스를 자동으로 백업하는 방법을 주로 설명합니다

2. 관련 기능 소개

2.1, fopen

2.2, array_keys

2.3, array_values

2.4, implode

2.5, substr

2.6, fwrite

3.

4. 코드 구성

/**
 * [copyDb description]  备份数据库
 * @param  [type] $dbname   [description]  数据库名
 * @param  [type] $fileName [description]  存储的文件名
 * @return [type]           [description]
 */public function copyDb($dbname, $fileName){
	$myfile = fopen($fileName, "w") or die("Unable to open file!");//打开存储文件
	$this->link->query("use {$dbname}");//切换数据库
	$this->changeDb($dbname);
	$tables = $this->link->query('show tables');//获取当期数据库所有表名称
	while($re = $tables->fetch(PDO::FETCH_ASSOC)){
		//var_dump($re);//查看数组构成
		$tableName = $re['Tables_in_'.$dbname];//构成特定的下标
		$sql = "show create table {$tableName};";
		$tableSql = $this->link->query($sql);

		fwrite($myfile, "DROP TABLE IF EXISTS `{$tableName}`;\r\n");//加入默认删除表的遇见
		//下面备份表结构,这个循环之执行一次
		while($re = $tableSql->fetch(PDO::FETCH_ASSOC)){
			// echo "<pre class="brush:php;toolbar:false">";
			// var_dump($re);
			// echo "
"; echo "正在备份表{$re['Table']}结构
"; fwrite($myfile, $re['Create Table'].";\r\n\r\n"); echo "正在备份表{$re['Table']}结构完成
"; } //下面备份表数据 echo "正在备份表{$tableName}数据
"; $sql = "select * from {$tableName};"; $valueSql = $this->link->query($sql); while($re = $valueSql->fetch(PDO::FETCH_ASSOC)){ $keyArr = array_keys($re);//获得对应的键值 $valueArr = array_values($re);//获得对应的值 $keyStr = ''; foreach ($keyArr as $key => $value) { $keyStr .= "`".$value."`,"; } $keyStr = substr($keyStr,0,strlen($keyStr)-1); //取出最后一个逗号 $valueStr = ''; // var_dump($valueArr); foreach ($valueArr as $key => $value) { $valueStr .= "'".$value."',"; } //以上的处理只是对应sql的写法 $valueStr = substr($valueStr,0,strlen($valueStr)-1); //取出最后一个逗号 $sql = "insert into `{$tableName}`({$keyStr}) values({$valueStr})"; fwrite($myfile, $sql.";\r\n\r\n"); } echo "正在备份表{$tableName}数据完成
"; echo "

"; } fclose($myfile);}

5. 결론

데이터베이스를 백업하는 주요 이유 프로세스:

1: 해당 데이터베이스로 전환합니다.

2: show create table tableName을 사용하여 테이블 구조를 가져와서 파일에 씁니다. 그런 다음 모든 테이블 데이터를 쿼리하고 반복하여 해당 SQL 문을 생성한 다음 파일에 씁니다.

4: 생성된 SQL 파일을 시험 실행합니다.

위 내용은 PHP에서 자동 데이터베이스 백업을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.