> 数据库 > MySQL >

备份与还原Mysql

一、Windows版备份指令:

1、在C盘下创建一个目录,名称:Backup,然后将下面的代码保存为backup.bat


@echo 设置MySql数据库的IP
set  ipaddress=127.0.0.1

@echo 设置MySql数据库名
set  db_name1=lxyy_db

@echo 获取当天的日期格式yyyymmdd 20120311
set  backup_date=%date:~0,4%%date:~5,2%%date:~8,2%
set  backup_date1=date:~0,10

@echo 设置mysqldump 备份的参数
set  uid_test_db=-uroot -pdsideal -h %ipaddress% %db_name1%

@echo 使用mysqldump对指定的MySql进行备份
mysqldump %uid_test_db% -R -E -e -l -F  --max_allowed_packet=1048576 --net_buffer_length=16384 >%db_name1%_%backup_date%.sql 
@echo 用WinRar中的Rar命令对备份出的sql文件进行压缩,也可以换成其它的压缩命令
"C:\Program Files\WinRAR\Rar.exe" a %backup_date%.zip *.sql 

@echo 删除已压缩的备份文件
del *.sql

为什么会有上面的参数呢?

说明: mysql> -umysql用户名 -pmysql密码 要导入到的数据库名<要导入MYSQL的SQL文件路径 这样导入将会非常快,之前数小时才能导入的sql现在几十秒就可以完成了。 
-l :进行读锁
-F:生成新的日志文件。

导出时候注意点:
-e  使用包括几个VALUES列表的多行INSERT语法; 
--max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小; 
--net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。 
注意:max_allowed_packet和net_buffer_length不能比目标数据库的设定数值 大,否则可能出错。 
首先确定目标库的参数值 
mysql>  show variables like 'max_allowed_packet'; 

 
--max_allowed_packet=4194304
 
mysql>show variables like 'net_buffer_length'; 

--net_buffer_length=16384

 根据参数值书写mysqldump命令,如: mysql>mysqldump -uroot -psupidea 要导入到的数据库名 goodclassification -e --max_allowed_packet=4194304 --net_buffer_length=16384 >要导入到的数据库名.net.sql

还原

使用命令行客户端连上mysql服务器,

mysql -uroot -pdsideal --default-character-set=utf8 --max_allowed_packet=1048576--net_buffer_length=16384

然后use lxyy_db进入需要还原的数据库,运行
source c:\lxyy_db_20130426.sql 
导入备份。


二、开源中国的备份数据库命令:
date_str=`date +%Y%m%d`
cd /data2/backup
mysqldump -h localhost -u oschina --password=xxxx -R -E -e --max_allowed_packet=1048576 --net_buffer_length=16384 oscdb| gzip > /data2/backup/oschina_$date_str.sql.gz

 

(责任编辑:IT)