当前位置:首页 > Mysql教程 > 列表

mysql数据库备份与恢复各种方法总结

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-07 15:57:53 浏览: 评论:0 

本来给大家总结现在网络上常用的几种mysql数据库备份与恢复的命令与方法,有需要学习备份mysql数据库的朋友可进入详细参考.

方法一,直接打包mysql数据库下的data目录中你要备份的数据库名字的目录,然后恢复也可以直接替换了.

方法二,利用xcopy定时备份了,代码如下.

把下面代码保存.bat文件,代码如下:

  1. @echo off  
  2. echo 执行备份任务  
  3. echo 正在停止数据库…  
  4. echo 正在停止网站数据库…  
  5. net stop MySQL  
  6. echo 执行备份数据库  
  7. xcopy "D:/MySQL/data/*.*" D:/mysqlbak/webbak%date:~0,10%/ /e /y /c  
  8. net start MySQL  
  9. echo 正在启动网站数据库…  
  10. echo 退出备份任务  
  11. echo .  
  12. exit 

另存为db_back.bat,该bat文件的意思是先停止mysql服务,然后使用xcopy命令,将源数据库所在文件夹整个复制到D:/db_backup下,并且以当天日期命名该文件.

我们在cmd下测试一下这个bat能否运行,"运行"->cmd,输入cd c:/定位到bat文件所在目录,输入back_job.bat.结果如下.

方法三,利用phpmyadmin备份还原,这里我就不介绍了.

方法四,利用mysqldump 命令进行备份

我通常使用以下 SQL 来备份 MyISAM 表,代码如下:

  1. /usr/local/mysql/bin/mysqldump -uyejr -pyejr --default-character-set=utf8 --opt --extended-insert=false  
  2. --triggers -R --hex-blob -x db_name > db_name.sql 

使用以下 SQL 来备份 Innodb 表:

  1. /usr/local/mysql/bin/mysqldump -uyejr -pyejr --default-character-set=utf8 --opt --extended-insert=false  
  2. --triggers -R --hex-blob --single-transaction db_name > db_name.sql 

1.2 还原

用 mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。

直接用 mysql 客户端,例如,代码如下:

/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql

用 SOURCE 语法,其实这不是标准的 SQL 语法,而是 mysql 客户端提供的功能,例如:

SOURCE /tmp/db_name.sql;

这里需要指定文件的绝对路径,并且必须是 mysqld 运行用户(例如 nobody)有权限读取的文件.

备份MySQL数据库的命令,代码如下:

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

备份MySQL数据库为带删除表的格式,备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库,代码如下:

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

直接将MySQL数据库压缩备份,代码如下:

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

备份MySQL数据库某个(些)表,代码如下:

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

同时备份多个MySQL数据库,代码如下:

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

仅仅备份数据库结构,代码如下:

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

备份服务器上所有数据库,代码如下:

mysqldump –all-databases > allbackupfile.sql

还原MySQL数据库的命令,代码如下:

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

还原压缩的MySQL数据库,代码如下:

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

将数据库转移到新服务器,代码如下:

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

利用php 来备份mysql数据库,代码如下:

  1. <?php 
  2.       mysql_connect('localhost''test''123456'); 
  3.       mysql_select_db('test'); 
  4.       if(copy_table('products''products_bak')) { 
  5.     echo "success/n"
  6.       } 
  7.       else { 
  8.     echo "failure/n"
  9.       } 
  10.  
  11.       function copy_table($from$to) { 
  12.     if(table_exists($to)) { 
  13.       $success = false; 
  14.     } 
  15.     else { 
  16.       mysql_query("CREATE TABLE $to LIKE $from"); 
  17.       mysql_query("INSERT INTO $to SELECT * FROM $from"); 
  18.       $success = true; //phpfensi.com 
  19.         } 
  20.         return $success
  21.       } 
  22.  
  23.       function table_exists($tablename$database = false) { 
  24.     if(!$database) { 
  25.       $res = mysql_query("SELECT DATABASE()"); 
  26.           $database = mysql_result($res, 0); 
  27.         } 
  28.         $res = mysql_query(" 
  29.            SELECT COUNT(*) AS count 
  30.            FROM information_schema.tables 
  31.            WHERE table_schema = '$database' 
  32.            AND table_name = '$tablename' 
  33.         "); 
  34.         return mysql_result($res, 0) == 1; 
  35.       } 
  36. ?>

Tags: mysql备份 mysql恢复

分享到: