Mysql,Mariadb备份数据常用参数
mysqldump -u root -p611102c6c2012eb9 -A  --single-transaction --master-data=1 -F  --flush-privileges --default-character-set=utf8 > all.sql




	
innodb建议备份策略
	mysqldump -root -p -A -F -E -R --single-transaction --master-data=1 --flush-privileges --default-character-set=utf8 --hex-blob > /dir/name.sql
		 解释:
			-A
				--all-databases 备份所有数据库,包含crate databases
				全备份,其实单独加一个-A就包含其他了,可以不用加其他的参数了
				单独备份一个库需要加其他参数
			
			-B
				databases db_name 指定备份的数据库,包含crate databases语句
				
			-F
				--flush-privileges备份前滚动日志,锁定表完成后,执行flush logs命令,生成新的二进制日志文件,配合-A或者-B选项时,会导致刷新多次数据库.建议在通一时刻执行转储和日志刷新.可通过和--single-transaction或-X.--master-data一起是使用实现,此时只刷新一次二进制日志
				备份了同时刷新日志,生成新的二进制日志
			
			-E
				--events 备份相关所有的event scheduler
				备份事件
			
			-R
				--routines 备份所有春初过程和自定义函数
				存储过程函数等等
				
			innodb存储引擎支持事务,可以利用事务的相应的隔离级别,实现热备,也可以实现温备但不建议用
	--single-transaction

			#此选项Innodb中推荐使用,不适用MyISAM,此选项会开始备份前,先执行START TRANSACTION指令开启事务 
			#此选项通过在单个事务中转储所有表来创建一致的快照。仅适用于存储在支持多版本控制的存储引擎中的表〈目前只有InnoDB可以)﹔转储不保证与其他存储引擎保持一致。在进行单事务转储时,要确保有效的转储文件(正确的表内容和二进制日志位置),
				没有其他连接应该使用以下语句:ALTER TABLE,DROP TABLE,TRUNCATE TABLE,此选项和--lock-tables(此选项隐含提交挂起的事务) 选项是相互排除,备份
				大型表时,建议将--single-transaction选项和--quick结合一起使用
			
			
			
			--default-character-set=utf8
				指定字符集为utf8
		
			--master-data=#1/#2
				#1 所备份的数据之前加一条记录CHANGE MASTER TO语句,非注释,不指定#,默认为1,适合于主从复制多机使用
				#2 记录为呗注释的#CHANGE MASTER TO语句,适合于单机使用
				#此选项会自动关闭--lock-tables功能,自动打开-x | --lock-all-tables功能(除非开启--single-transaction)
			
			--compact
				去掉注释合适调试,生产不使用
				
			-d
				--no-data 只备份表结构,不备份数据
					
			-t
				--no-create-info 只备份数据,不备份表结构,既create table
				
			-n
				--no-create-db 不备份create database 可被-A或-B覆盖
				
			--flush-privileges
				备份mysql或相关时需要使用
				
			-f
				--force 备份sql错误,继续执行
				
			--hex-blob
				使用十六进制符号转储二进制列,当有包括BINARY,VARBINARY,BLOB,BIT的数据类型的列时使用,避免乱码
				
			-q 
				不缓存查询,直接输出,加快备份速度
				
			
				
				
				
mysqldump的myISAM存储引擎相关备份选项
MyISan不支持事务,只能支持温备,不支持热备,所以必须先锁定要备份的库,而后启动备份操作				
myisam建议备份策略
	mysqldump -uroot -p -A -F -E R- -X  --master-data=1 --flush-privileges --triggers --default-character-set=utf8 --hex-blob > /dir/name.sql
		解释:
			--triggers
				备份相关触发器,默认启用,用--skip-triggers
				
			-x
				--lock-all-tables 加全局读锁,锁定所有库的所有表,同事加--single-transaction或--lock-all-tables选项会关闭此选项功能,注意数据量大时,可能会导致长时间无法并发访问数据库
				
			-l
				--lock-all-tables 对于需要备份的每个数据库,在启动备份之前分别锁定其所有表,默认为on,--skip-lock-tables选项可禁用,对备份myisam的多个,可能会造成数据不一致
								  以上选项对innodb表一样生效实现温备,但不推荐使用
			
			
			
数据库备份脚本
	#!/bin/bash
	TIME='data +%F_%H-%M-%S'
	DIR=/backup
	DB=helldb
	PASSWD=123456
	 
	mysqldump -uroot -p "$PASSWD" -F --single-transaction --master-data=2 --default-character-set=utf8 -q -B $DB | gzip > $DIR/$DB_${TIME}.sql.gzip
	
	
	
	
			
			
			
			
			
			
			
			
			
			
			


本文 暂无 评论

Top