赞
踩
没有 mysqlbinlog 命令
sh: mysqlbinlog: command not found
(tips: MySQL的工具在/usr/bin下)
ls -l /usr/bin/my*
思路:
(可以省略第一步、第二步,直接下载我复制存储在gitee的mysqlbinlog文件,点击跳转)
tips:mysql一些容器版本有自带mysqlbinlog ,一些没有,随手测试了一些版本,如下:
mysql 5.7
有的:
mysql:5.7.10(强烈推荐),mysql:5.7.31,mysql:5.7.32
没有的:
mysql:5.7.38,mysql:5.7.40,mysql:5.7.42
mysql 8 的好像要debian后缀的才有mysqlbinlog
只测试了一个 mysql:8.0.32-debian(有的)
### 第一步 # 5.7版本 docker run -d --name=del_mysql -e MYSQL_ROOT_PASSWORD=123 mysql:5.7.10 # 8.0版本 docker run d --name=del_mysql -e MYSQL_ROOT_PASSWORD=123 mysql:8.0.32-debian ### 第二步 # 随便找个本机地址存放,这里写 / (linux)或者 C:\(windows) docker cp del_mysql:/usr/bin/mysqlbinlog C:\ # or docker cp del_mysql:/usr/bin/mysqlbinlog / ### 第三步 #复制到你的mysql容器 docker cp c:\mysqlbinlog 你的mysql容器id或者名字:/usr/bin/ # or docker cp /mysqlbinlog 你的mysql容器id或者名字:/usr/bin/
# 进入你的容器
docker exec -it 你的容器名 /bin/bash
# 调用mysqlbinlog
mysqlbinlog
#或者不进入,单纯验证
docker exec -it 你的容器名 mysqlbinlog
成功的显示信息:
mysqlbinlog Ver 8.0.30 for Linux on x86_64 (MySQL Community Server - GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Dumps a MySQL binary log in a format usable for viewing or for piping to
the mysql command line client.
Usage: mysqlbinlog [options] log-files
-?, --help Display this help and exit.
....(略)
# 删除没必要的容器 docker rm -f del_mysql #删除没必要的镜像 docker rmi mysql:5.7.10 # or docker rmi mysql:8.0.32-debian #之后删除本机的文件即可 rm -f /mysqlbinlog #或者windows(慎重,最好窗口手动删除,而不是命令行,可以两次ctrl c取消执行中的命令) del C:\mysqlbinlog # 坑!!! windows的del # del C:\mysqlbinlog 和del C:/mysqlbinlog完全不同! # # 坑1:del 找不到文件有一定可能会推荐你删除其他文件!!!不细看就会误删 # # 神坑2:特别是正反斜杠!!!正确的是反斜杠(\) # 正确:del C:\mysqlbinlog # 错误,神坑: del C:/mysqlbinlog 只要是正斜杠(/),他直接识别为*,即是目录下全删除,这时会有个是否全删除的提示: # C:\*, 是否确认(Y/N)?
# 编辑配置文件
vim /etc/my.cnf
# 如果没有vim,直接docker cp出来改,再cp回去
# 添加下面几行,(我按照mysql 8的默认配置写的,开启binlog,路径,文件名,索引文件名)
server-id=1 # mysql集群分辨服务的id,必须集群内唯一
log-bin=/var/lib/mysql/binlog #如果你不是/var/lib/mysql/文件夹下的,你得确保你的文件夹是mysql群组,mysql用户具有必要的权限(chown chmod)
# 重启mysql容器
验证是否开启
# sql语句
show variables like '%log_bin%';
log_bin=ON :打开binlog日志
log_bin_basename=/var/lib/mysql/binlog : binlog日志的文件名前缀
log_bin_index=/var/lib/mysql/binlog.index; binlog文件的索引文件
容器内查看文件
ls -l /var/lib/mysql/bin*
关于mysql 5.7的binlog自定义文件夹位置(即自定义log-bin=/var/lib/mysql/binlog
),可以参考下这篇博客:开启mysql 5.7的binlog
mysqlbinlog: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory
!!!:但是,最大的可能是你找的mysqlbinlog版本过高!
#选择更低版本的mysql容器:如 mysql:5.7.10,之前选择mysql:5.7.31,导致出现libatomic版本和后续的glibc问题
docker run -d --name=del_mysql -e MYSQL_ROOT_PASSWORD=123 mysql:5.7.10
# 降低版本后,cp ,运行mysqlbinlog,完全无问题
yum install libautomic
你有一定几率获取 新bug: 容器的glibc版本过低
sh-4.2# mysqlbinlog
mysqlbinlog: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by mysqlbinlog)
mysqlbinlog: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by mysqlbinlog)
mysqlbinlog: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by mysqlbinlog)
此时你可以尝试以下2种方案:
包管理器更新glibc
yum update glibc
#查看更新后的glibc版本,第一次使用会下载点东西(60M左右)
yum info glibc
# 如果你发现版本没变,还是glibc 2.17,你可以再次挣扎下,更新yum的源缓存(基本无卵用),第一次使用会下载点东西(100M左右)
yum makecache
#再次更新,查看(基本可以恭喜你浪费了生命,喜提 2.17 版本信息),如果你升级到2.28以上,那么你没白费功夫
yum update glibc
yum info glibc | grep Version
手动更新glibc(头铁圣体)
请查看这篇文章,祝你好运,尝试解决Linux提示:/lib64/libc.so.6: version GLIBC_2.XX’ not found
看之前先过眼下惨烈案列,慎重
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。