mysqldump备份工具

mysqldump

  • 语法:
 mysqldump  -h 服务器  -u用户名  -p密码   数据库名  > 备份文件.sql
  • 参数说明:

    • 库的范围:
    -A, --all-databases	所有库
    	school	数据库名
    	school stu_info t1	是指school数据库的表stu_info、t1
    	-B, --databases bbs test mysql	多个数据库
    --single-transaction                    #InnoDB 一致性 服务可用性
    --master-data=1|2	#该选项将会记录binlog的日志位置与文件名并追加到文件中,或添加注释
    
    • 高级选项
    	--opt 		#同时启动各种高级选项
    	-R, --routines			 #备份存储过程和存储函数
    	-F, --flush-logs		#备份之前刷新日志,截断日志。备份之后新binlog。
    	--triggers		#备份触发器
    
    mysqldump --help 帮助
    

备份

[root@localhost ~]# mysqldump -p'liweiqiang@123' \
--all-databases --single-transaction \
 --master-data=2 \
--flush-logs \
>  /backup/`date +%F-%H`-mysql-all.sql   (把所有的库备份到 /backup/当前时间)


备份出来的文件:
	vim /backup/2016-11-25-14-mysql-all.sql
	LOCK TABLES `user` WRITE;   观察各种锁机制,用来保证数据一致性   锁表机制(让边只读不可写,很快备份完就解锁)
22 CHANGE MASTER TO MASTER_LOG_FILE='localhost-bin.000004', MASTER_LOG_POS=154; (22行告诉你备份到数据的哪里154之后的数据没有备份)
	二进制日志截断位置。第22行
业务正常推进...


重启数据库服务切断二进制日志

恢复

恢复:
	1 备份二进制日志文件
	cp /var/lib/mysql/*bin* ~
	2. 停止数据库
	systemctl stop mysqld

	3. 清理环境
	rm -rf /var/lib/mysql/*
	4.启动数据库
	systemctl start mysqld
	grep 'password' /var/log/mysqld.log
		找密码,再改一下密码。请使用密码和以前的不一样的
		mysqladmin -uroot -p'Kyzw;u2dq<mh' password 'liweiqiang@1234'
		注意
			语法要求password后面有空格。
	5.mysql恢复数据
	 mysql -p'liweiqiang' < /backup/2016-12-08-04-mysql-all.sql
 
	登陆并验证数据恢复结果。请思考恢复的数据库有几个?
		1个

二进制日志恢复

	观察二进制截取记录
		vim /backup/2016-11-25-14-mysql-all.sql
		CHANGE MASTER TO MASTER_LOG_FILE='localhost-bin.0000010', MASTER_LOG_POS=154;
	mysqlbinlog localhost-bin.000002 localhost-bin.000003
 	--start-position=154  | mysql -p'liweiqiang@123'  (用二进制日志恢复数据)
	注意后续有多少日志,要跟多少日志名字。
7.观察数据
	请思考数据是否恢复完整。
		是完整的。
8.请思考误删除的问题
	如何保留testdb3库
		[root@localhost ~]#mysqlbinlog  localhost-bin.00004      ......005.....006...... > 1.txt
		删除1.txt中不需要的at(比如test3库是误操作)
		cat  1.txt | mysql -p'liweiqiang@123'
	课后题:是否可以通过mysqlbinlog start 和stop 命令解决。

9.关于数据恢复时的多余日志。
	方法一
		原因
			每次还原数据库都会增加日志的体积。但这些都是还原操作。恢复数据库的日志占用了存储空间。
		mysql>  set sql_log_bin =0   (关闭二进制日志  这样恢复的操作就不会记录到二进制日志里面)
		 再mysql>  source   /backup/*.sql  (在数据库里面执行备份文件 source)
		观察
			二进制日志并没有发生变化。
	方法二
		在备份文件中,加入关闭二进制日志。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值