我在项目中随着数据库数据变多,以前的MySQL数据库备份方法不行了,就写了简单的PHP执行MySQL数据库备份和还原,利用mysqldump,mysqldump.exe和mysql.exe文件,PHP包的mysql文件夹中自带有,直接调用就好。(mysqldump适合100G以下的数据库备份)
mysqldump命令将数据库中的数据备份成一个文本文件,表的结构和表中的数据将存储在生成的文本文件中。
mysqldump命令的工作原理:它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。
备份代码
//设置时区
1 2 3 4 5 6 7 8 9 10 11 | date_default_timezone_set( "Asia/Shanghai" ); /*********************************备份数据库start*********数据库大小100G以下*******************/ $db_user = "root" ; //数据库账号 $db_pwd = "123456" ; //数据库密码 $db_name = "dbname" ; //数据库名 $filename = date ( "Y-m-d" ). "-" .time(); $name = "E:/dataBackup/dbname" . $filename . ".sql" ; //数据库文件存储路径 $exec = "E:/MySQL/bin/mysqldump -u" . $db_user . " -p" . $db_pwd . " " . $db_name . " > " . $name ; $result = exec ( $exec ); //前面要设置mysql执行文件的路径。 /*********************************备份数据库end****************************/ |
还原代码
1 2 3 4 5 6 7 8 9 10 | /*********************************还原数据库start******数据库大小100G以下**********************/ $db_user = "root" ; //数据库账号 $db_pwd = "123456" ; //数据库密码 $db_name = "dbname" ; //数据库名 $filename = "原来备份的文件名" ; //不包含.sql $name = "E:/dataBackup/dbname" . $filename . ".sql" ; //数据库文件存储路径 $exec = "E:/MySQL/bin/mysql -u" . $db_user . " -p" . $db_pwd . " " . $db_name . " < " . $name ; $result = exec ( $exec ); //print_r($result); /*********************************还原数据库end****************************/ |
要修改的地方有
1 2 3 4 5 | db_user db_pwd db_name name:修改为你要保存的相应地址,绝对路径 exec :修改为mysql安装目录,备份是bin下的mysqldump,还原是bin下的mysql
|