记录一次docker容器内修改my.cnf配置文件max_allowed_packet参数的过程
1. 问题背景
在一次新版本功能开发完毕,配合测试的过程中,测试反馈某个XxlJob定时任务一直执行失败,在分析了日志之后,找到了报错的原因:
Packet for query is too large (7251422 > 4194304). You can change this value
是因为在程序中做了批量INSERT,而一次插入的数据量太大,超过了MySQL服务器的配置,导致插入失败。所以,我们只需要将这个配置改大一点就行。
2. 解决方案确定
经过搜索,发现决定单次插入数据量的配置是配置文件中的max_allowed_packet字段,我们使用的MySQL服务是用docker容器启动的。所以配置文件的位置为/etc/mysql/my.cnf。
首先,查看当前的配置,可以使用SQL查询得知。
show VARIABLES like '%max_allowed_packet%';
查询结果max_allowed_packet=4194304,即:4M。
进入docker容器内查看配置文件,发现配置文件内没有什么配置。
-- 查看所有的docker容器
docker ps -a
-- 进入容器
docker exec -it 容器名or容器ID bash
-- 进入文件目录
cd /etc/mysql
-- 安装vim(有的话不用安装)
apt-get update
apt-get install vim
-- 修改配置为1G
[mysqld]
max_allowed_packet=1073741824
-- 重启MySQL服务(先退出来到linux)
docker restart 容器名or容器ID
3. 小插曲
最开始,使用的设置临时参数,但是没有起作用。
set global max_allowed_packet = 2*1024*1024*10
在首次修改配置文件的时候,没有加[mysqld]这个分组,导致mysql重启失败,然后也没法进入容器了,只能采用把容器内的配置文件复制出来,修改完再覆盖回去的方法来修改配置。
-- 复制出来
docker cp 容器名or容器ID:/etc/mysql/my.cnf /home/my.cnf
-- 覆盖回去
docker cp /home/my.cnf 容器名or容器ID:/etc/mysql/my.cnf
这里有点奇怪,从容器中复制my.cnf出来显示没有这个文件,然后,用mysql.cnf是可以的,但其实复制的是my.cnf。
另外,查看docker启动日志可以使用
docker -f logs
记录一次docker容器内修改my.cnf配置文件max_allowed_packet参数的过程的更多相关文章
- docker容器内修改文件
1.找到容器对应的ID 使用docker ps命令找到对应的镜像id 2.根据容器id进入到对应文件夹 执行命令:docker exec -it 镜像id /bin/bash 3.进入对应目录(以My ...
- Docker容器内连接宿主机即CentOS的Mysql服务器
docker的宿主机是虚拟机下的CentOS 博主最近遇到一种情况,从服务器拷贝了一份数据库在宿主机Mysql服务器上,想要用本地的数据库测试自己的代码正确性,但是项目程序都是靠docker一键部署的 ...
- Jenkins(Docker容器内)使用宿主机的docker命令
1.Jenkins镜像 Docker容器内的Jenkins使用容器外宿主机的Docker(即DooD,还有另外的情况就是DioD),google一下有几种说法,但是都没试成功(试过一种就是修改宿主机/ ...
- Docker容器内中文乱码
Docker容器内中文乱码 一.通过Dockerfile解决中文乱码问题 方式二: 二.临时解决 方式二: 三.修改jre/lib/fonts下的字体 CSDN:黑猫_:Dockerfile 创建容器 ...
- Docker容器内Mysql大小写敏感方案解决
Docker容器内Mysql大小写敏感方案解决 一.(lower_case_table_names)参数说明 二.Docker 部署 MySql 并修改为大小写不敏感 2.1直接在Docker启动的时 ...
- centos:解决docker容器内挂载目录无权限 ls: cannot open directory .: Permission denied
docker运行一个容器后,将主机中当前目录下的文件夹挂载到容器的文件夹后 进入到docker容器内对应的挂载目录中,运行命令ls后提示: ls: cannot open directory .: P ...
- Flume+Kafka收集Docker容器内分布式日志应用实践
1 背景和问题 随着云计算.PaaS平台的普及,虚拟化.容器化等技术的应用,例如Docker等技术,越来越多的服务会部署在云端.通常,我们需要需要获取日志,来进行监控.分析.预测.统计等工作,但是云端 ...
- [笔记]使用Go语言Redigo包在Docker容器内连接Redis容器的方法
Docker容器之间的连接可以带来不少方便,下面记录下如何在自己容器内通过环境变量连接与之连接的Redis容器的方法. 先起一个Redis的Docker容器,命名为 redis,再起一个自己的Dock ...
- [转]Docker容器内不能联网的6种解决方案
注: 下面的方法是在容器内能ping通公网IP的解决方案,如果连公网IP都ping不通,那主机可能也上不了网(尝试ping 8.8.8.8) 1.使用--net:host选项 sudo docker ...
随机推荐
- git clone 命令
感谢原文作者:寻芝彬 原文链接:https://www.jianshu.com/p/c992c799f2dd 描述 拷贝一个 Git 仓库到本地 实例 拷贝一个 Git 仓库到本地,本地目录名称与Gi ...
- Xcode 官方下载地址 https://developer.apple.com/downloads/
Xcode 官方下载地址 https://developer.apple.com/downloads/
- Android的基本资源引用(字符串、颜色、尺寸、数组)【转】
感谢大佬:https://blog.csdn.net/wenge1477/article/details/81295763 Android的基本资源引用(字符串.颜色.尺寸.数组)[转] 一.Andr ...
- jdk1.5新特性之------->可变参数
/* jdk1.5新特性之------->可变参数 需求: 定义一个函数做加法功能(函数做几个数据 的加法功能是不确定). 可变参数的格式: 数据类型... 变量名 可变参数要 注意的细节: 1 ...
- Codeforces Round #756 (Div. 3)
本场战绩:+451 题目如下: A. Make Even time limit per test 1 second memory limit per test 256 megabytes input ...
- netty系列之:让TCP连接快一点,再快一点
简介 经典的TCP三次握手大家应该很熟悉了,三次握手按道理说应该是最优的方案了,当然这是对于通用的情况来说的.那么在某些特殊的情况下是不是可以提升TCP建立连接的速度呢? 答案是肯定的,这就是今天我们 ...
- 基于Oracle数据库登陆界面及功能实现 Java版
首先要在Oracle数据库创建表文件,包括建立表头以及关键字(唯一标识符),此次程序所用的表名称为SW_USER_INFO,表头有UNAME.UKEY.USEX等,关键字为UCC,然后添加一条记录,用 ...
- 01网络编程(基础知识+OSI七层协议+TCP与UDP)
目录 01 网络编程 一.软件开发架构 1.1 CS架构 1.2 BS架构 二.网络理论前戏 2.1 简介 2.2 常见硬件 三.OSI七层协议(五层) 3.1 七层协议 3.2 五层协议 3.3 知 ...
- yum 搭建私有仓库
今日内容 Linux 中安装软件的三种方法 yum 私有仓库 selinux 和 firewalld (iprables) 解决系统乱码 内容详细 一.Linux 安装软件的三种方法 rpm安装.yu ...
- IDEA 2021 没有Allow parallel run
IDEA 2021 没有Allow parallel run 尝试运行多个客户端. 新版IDEA找不到Allow parallel run