mysql的备份恢复
mysqldump是一个客户端工具,可以用它实现数据迁移
特性:1.可以备份所有的数据库,特殊的数据库和特殊的数据表;2.mysqldump可以备份本地的库和远程的库,备份的路径可以自己指定,如果要在备份的时候把表和数据分开可以使用--tab选项,生成的文件是一个包含create table 和insert 语句的文本文件;3.它适用于所有的存储引擎表;4.因为他是一个可执行的sql语句文件,所以可以在所有mysql数据库之间传输;
常用的一些选项:
-B ,--database可以一次导出多个数据库
-e ,--extend-insert=true(false) 是否使用一次插入多行
-F,--flush-logs 在导出数据库之前,先进行一次日志切换
-x --lock-all-tables 在导出的时候会自动锁定表,给表加以个读锁
--master-data= 1 2(在导出文件中添加注释,指出导出文件日志名和路径)
-d --no-data 不包含数据,只导出表结构
-R,--routines 控制是否导出存储程序,比如存储过程
--single-transaction 保持数据的一致性,只支持innodb,
--skip-opt 跳过opt默认的选项
--opt 是--add-drop-table --add-locks --create-options --quick --extend-insert --lock-tables --set-charset and --disable-keys 这些选项的缩写
实践:
非事务表的一致备份(备份期间数据库是只读的)
mysqldump --skip-opt --quick --extended-insert=false --lock-all-tables --master-data=2 --databases test1 test2 >/tmp/tt.sql
show master status;查看当前日志写到哪个日子文件
事务表的一致备份(备份期间数据库不受限制,也就是支持热备份)
mysqldump --skip-opt --quick --extended-insert=false --single-transaction --master-data=2 --database test1 test2>/tmp/tt.sql
mysql恢复
mysqlbinlog :mysql服务器端生成的日志是一个二进制日志,使用mysqlbinlog可以查看这些文件
主要参数:
-d ,--database=name 查看具体的数据库日志,因为我们在导出的时候可以一次性导出多个数据库;
-R,--read-from-remote-server
-r,--result-file=name 生成result file 文件里
--start-datatime=name 指定从哪个时间开始打印 时间格式:2010-01-01 11:12:21
--stop-datatime
-j,--start-position=(数字) 从第几条开始打印
--stop-position=(数字) 打印到第几条
-t --to-last-log
-D --disable-log-bin 是否把这条binlog的应用写入到日志里
转载于:https://blog.51cto.com/nameyjj/550802