全量备份
Linux环境
数据备份
数据库的备份与恢复有多中方法,通过mysql自带的mysqldump工具可对数据库进行备份。语法:
mysqldump -u username -p password --databases db_name > file_name .sql
说明:
-u参数指定用户名,username 填入用户名;
-p参数指定用户密码,password 填入用户密码;
–databases参数指定要导出的数据库,可以是一个或者多个,多个数据库用空格分开,db_name填入要备份的数据库;
file_name填入导出的文件名称,可以是文件的绝对路径,文件的格式可以.db文件或者.sql文件。
mysqldump 并不是在mysql命令行中运行,是一个可执行文件,安装mysql后在安装目录下会有该工具。以linux为例,比如mysqldump 工具在/usr/bin路径下。导出某个数据库:
[root@201 mysqlback]# /usr/bin/mysqldump -u root -p123456 --databases mysql_test > /share/mysql_test.db
导出所有数据库使用–all-databases参数
[root@201 mysqlback]# /usr/bin/mysqldump -u root -p 123456 --all-databases > /share/all.db
数据恢复
数据库的恢复可以使用source命令执行,进入mysql的命令行,执行以下命名。
mysql> source /share/mysql_test.sql;
query ok, 0 rows affected (0.06 sec)
windows环境
cmd命令行备份
语法同上,比如把temp数据库备份到 d:\temp.bak
mysqldump –u root –p123456 temp > d:\temp.bak
如果你希望备份是数据库的某几张表,可以在数据库后面加要备份的表名称,比如:
mysqldump –u root –p123456 temp dept > d:\temp.dept.bak
数据恢复
进入mysql控制台,使用source命令备份文件恢复我们的数据,比如:
mysql>source d:\temp.dept.bak
定时备份
把备份数据库的指令,写入到 bat文件, 然后通过任务管理器去定时调用 bat文件执行备份,比如新建一个bakTask.bat,里面写入mysql的备份命令:
F:\MySQL\bin\mysqldump -u root -p123456 temp dept > d:\temp.dept.bak
如果你的mysqldump.exe文件路径有空格,则一定要使用双引号 “ ” 包裹。把bakTask.bat做成一个任务,并设置每天定时调用。具体步骤如下:
(1) windows搜索“任务计划程序”,打开windows的任务计划程序。
(2)选中任务计划程序库,右键创建基本任务,输入任务名称,选择触发时间,最后选中bakTask.bat文件,下一步完成任务计划程序的创建。
增量备份
一个完整的备份方案应当包含全量备份与增量备份,下面以windows环境为例,讲解mysql的增量备份。当启用增量备份之后,mysql会以二进制的形式把用户对数据库的操作记录到文件中。需要注意的是,增量备份并不会记录所有的数据库操作。通常对ddl语句 (create alter drop),dml语句 (insert update delete),dcl语句(grant revoke set commit rollback)进行记录,而不会记录dql语句(select),因为数据查询语句并不会影响数据的完整性。增量备份通常会记录数据库操作语句、操作时间、操作位置等内容。
启用增量备份
在进行增量备份之前需要查看一下mysql 是否开启log_bin
mysql> show variables like '%log_bin%';+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| log_bin | OFF || log_bin_basename | || log_bin_index | || log_bin_trust_function_creators | OFF || log_bin_use_v1_row_events | OFF || sql_log_bin | ON |+---------------------------------+-------+
log_bin为off说明还没有开启log_bin。找到mysql安装目录下的my.ini或者my.conf文件,启用log_bin二进制备份,在[mysqld]下新增以下配置
[mysqld]#启用增量备份,双引号及双反斜杠log-bin=log-bin=F:\\MySQLbinlog\\log-binserver-id=1
重启mysql服务后生效,对数据库进行操作时将会生成log-bin.000001、log-bin.index文件。log-bin.000001文件写满后继续生成log-bin.000002文件,以此类推,是数据库操作日志文件。log-bin.index记录着操作日志文件的路径。
log-bin操作日志文件用文本编辑器是无法查看的,需要用mysql自带的工具进行查看。
F:\MySQL\bin>mysqlbinlog.exe F:\MySQLbinlog\log-bin.000001
mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8'
在使用mysqlbinlog工具查看时可能会报unknown variable 'default-character-set=utf8’的错误,可以使用以下命令查看
>mysqlbinlog.exe --no-defaults --base64-output=decode F:\MySQLbinlog\log-bin.000001
>mysqlbinlog.exe F:\MySQLbinlog\log-bin.000002 > tmp.sql
关于增量备份的恢复我们放到下一篇讲。