mysql系列2-mysqldump逻辑备份

时间:2022-09-21 23:35:39


1,导库命令
:mysqldump -uroot -p dbname>bak.sql

-B参数:连接多个库,使用它可导出多个库,并且会导出创建db,use db等语句 

-A参数:备份Mysql中所有的库

-- compact参数:去掉导出sql中的注释,减少输出,调试时方便使用

使用gzip对备份数据进行压缩 mysqldump -uroot -p dbname|gzip>bak.sql.gz

 

多库备份:mysqldump -uroot -p -B dbname1 [dbname2...]>bak.sql

分库备份:先构造出命令,再利用bash执行(不常用)

mysql -uroot -pPASS -e "show databases"|grep -Evi "database|infor|perfor"|sed -r 's#^([a-z].*$)#mysqldump -uroot -pPASS -B \1|gzip>/opt/\1.sql.gz #g'|bash

2,导表命令:mysqldump -uroot -p dbname tname1 [tname2...]>bak.sql

只备份表结构:-d 参数

只备份数据:-t 参数

备份时锁表:-x 

备份时锁表只读:-l

刷新binlog参数:-F

--master-data参数:

等于1时,在导出的文件中记录当前导出的数据在binlog中的哪个文件哪个位置,但语句是不注释的,恢复时需要手动除了恢复dump文件之外还需要从binlog中的记录位置进行增量恢复

等于2时,在导出的文件中记录当前导出的数据在binlog中的哪个文件哪个位置,语句是注释的,这样从库恢复时会自动从binlog中寻找位置增量恢复


innodb事务数据库备份参数:--single-transaction(锁表),推荐使用的生产备份命令

mysqldump -user=root -A -B --single-transaction --master-data=1 --events|gzip>BACKUP_TIMESTAMP.sql

3,source恢复数据

登录数据库后执行:source /path/bak.sql

show status 查看当前会话的数据库状态信息

show full processlist 查看正在执行的完整sql语句

show global status 查看整个数据库状态信息,可用作监控

show variables 查看数据库的参数信息

 

4,mysqlbinlog命令解析mysql binlog日志,导出sql

mysql-bin.index记录了所有的mysql的binlog文件 

mysql binlog日志: 用来记录mysql内部增删改等对数据库有更新的内容,如:mysql-bin.000001(默认位置在/var/lib/mysql/)

mysqlbinlog mysql-bin.000001

查看修改的记录

从binlog中拆库(只查看某一个库的记录) : -d

mysqlbinlog -d dbname mysql-bin.000001>bak.sql

指定开始与结束位置恢复:

mysqlbinlog mysql-bin.000001 --start-position=123--stop-position=456 -r bak.sql 

指定开始与结束时间恢复(但同一时间可能包括不想恢复的数据变更):

mysqlbinlog mysql-bin.000001 --start-datetime=‘2015-12-1200:00:00‘ --stop-datetime=’2015-12-13 00:00:00‘ -r bak.sql