查看mysql data的挂载目录
docker inspect mysql | grep Mounts -A 20
进入mysql容器
docker exec -it mysql bash
进入到mysql binlog所在目录
cd /var/lib/mysql
备份
mysqlbinlog --no-defaults --database=数据库名称 --base64-output=DECODE-ROWS --start-datetime="2023-11-28 00:00:00" --stop-datetime="2024-01-04 12:59:59" mysql_bin.000664 -v > 20240104.sql
参数解释
–no-defaults 可以避免 my.cnf 里配了 [client] 某些 mysqlbinlog 没有的参数导致 mysqlbinlog 失败
–database 指定数据库名称
–base64-output 不显示行格式,如果同时加 -v 参数,可以从行格式中解码为带注释的伪SQL
–start-datetime 指定开始时间
–stop-datetime 指定结束时间
mysql_bin.000661 指定binlog文件名称
-v
不加,只显示行格式(即那一串字符串),无法得到伪SQL
加-v,从行格式中重建伪SQL(带注释),不显示 binlog_rows_query_log_events 参数效果
–skip-gtids 不保留 GTID 事件信息,这样回放 binlog 时会跟执行新事物一样,生成新的 GTID。