先介绍一个mysql的备份命令mysqldump。
语法:mysqldump -u 用户名 -p -B ‘密码’ 数据库名 -e “show varibles like '%character%'”|gzip>备份的文件名.sql.gz(备份多个库时,在数据库名位置指定多个库即可)
参数:B 不加没有创建库的语句 e数据库命令 ,可以不加 gzip对导出数据进行压缩
备份数据恢复:
mysql -u root -p '密码'<备份数据文件
备份多个库:
方法1:使用上面的方法,把数据库名依次写出来
方法2:for循环
方法3:使用sed , mysql -u root -p '密码' -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r 's#^([a-z].*$)#mysqldump -u root -p '密码'' --events -B \1|gzip>\1.sql.gz#'|bash
备份单个表:
语法:mysqldump -u 用户名 -p ‘密码’ 数据库名 表名>备份的文件
备份多个表:
方法1:使用上面的方法,把表名依次写出来
方法2:使用循环
方法3:使用sed
备份参数-d只备份表结构;-t只备份数据 ;-F刷新bin-log日志配合 --master-data=1使用,可以找到bin-log位置点;-x锁表;-l只读锁表;-A备份所有库
myisam和innodb的区别,myisam影响范围较大
myisam备份:mysqldump -uroot -p密码 -A -B --master-data=2 -x --events|gzip>文件名.sql.gz
innodb备份:mysqldump -uroot -p密码 -A -B --master-data=2 --events --single-transaction|gzip>文件名.sql.gz(推荐使用)
数据库恢复:
使用source命令
1.登录数据库
2.source 数据库文件
使用mysql命令
mysqldump -u root -p '密码'' 数据库<数据库文件
对于压缩的sql.gz文件 需要gzip -d mysql_bak.sql.gz解压为.sql文件
mysql binlog
mysql binlog会记录mysql内部的增删改等对数据库有更新内容的记录,查询不会更改数据库内容,不记录。mysqlbinlog可以进行数据恢复,待续。