1、mysqldump工具
1.1 通过mysqldump备份数据
若备份文件中出现了SET @@SESSION.SQL_LOG_BIN= 0
,表示之后执行的sql都不会计入binlog,若还原时是主从结构,还需要在从库还原一次,否则主从数据库将不同步。可通过添加 --set-gtid-purged=off
参数解决。
# -A 全库备份
# -S 指定启动时的sock文件
# -F 刷新日志
# -B 指定数据库
# -R 备份存储过程等
# -x 锁表
# --master-data 在备份语句里添加change master语句以及binlog文件及位置点信息
$MYSQL_HOME/bin/mysqldump -uroot -p"<pass_word>" -A -S /tmp/mysql.sock -F -R -x --master-data=2 dataname | gzip > $MYSQL_HOME/dataDump/bak_`date +%F`.sql.gz
1.2 通过mysqldump恢复数据
$MYSQL_HOME/bin/mysql -uroot -f -S /tmp/mysql.sock < $MYSQL_HOME/dataDump/bak_2020-10-13-19-47.sql
2、binlog 工具(1-4 库内查看)
2.1 查看binlog文件内容(只查看第一个binlog)
show binlog events;
2.2 查看指定的binlog文件内容
show binlog events in 'mysql-bin.000002'
2.3 查看当前写入的binlog
show master status\G;
2.4 查看binlog文件列表
show binary logs;
2.5 本地查看binlog日志
注意!!!注意!!!注意!!!前方高能预警,使用前必看:
-
不要查看当前正在写入的binlog文件;
-
不要加–force参数强制访问;
-
_如果binlog格式是行模式,需要添加 -vv 参数
# a、通过开始/结束时间查看
mysqlbinlog --start-datetime='2020-10-16 08:46:40' --stop-datetime='2020-10-16 10:46:40' -d datebaseName binlogFileName
# b、通过pos值(binlog中节点位置)查看
mysqlbinlog --start-position=107 --stop-position=111 -d datebaseName binlogFileName
2.6 刷新binlog日志(从一个新的binlog开始记录)
flush logs;
2.7 清空所有的binlog
reset master;
2.8 binlog通过节点恢复数据
$MYSQL_HOME/bin/mysqlbinlog --stop-position=435 --database=dbName $MYSQLDATA_HOME/mysql-bin.000006 | $MYSQL_HOME/bin/mysql -uroot -p dbName -v
-v 表示执行此命令
整条语句的意思为:从mysqlbinlog中拿取每条SQL语句,通过管道放到mysql中去执行
2.9 binlog通过时间恢复数据
$MYSQL_HOME/bin/mysqlbinlog --stop-datetime="2020-10-10 20:32:18" --stop-datetime="2020-10-15 20:32:18" --database=hello $MYSQLDATA_HOME/mysql-bin.000006 | $MYSQL_HOME/bin/mysql -uroot -p dbName -v
2.10 binlog恢复数据 —— 节点方面
reset master;
参考文章:
1、mysqldump文件中有SET @@SESSION.SQL_LOG_BIN= 0;解决方法 —— 遗失的曾经!