在Docker中安装并修改MySQL中的 my.cnf 配置文件
来源:SegmentFault
时间:2023-02-16 15:36:50 252浏览 收藏
IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《在Docker中安装并修改MySQL中的 my.cnf 配置文件》,聊聊MySQL、docker,我们一起来看看吧!
一、Docker安装MySQL
查看mysql镜像 sudo docker search mysql 拉取mysql sudo docker pull mysql #默认最新版(可自定义5.7) 创建容器,并测试,参考链接 sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
二、连接MySQL
docker中进入mysql容器的方法 1)sudo docker exec -it 容器名称 bash 2)mysql -uroot -p 3)use mysql 4)select host, user from user;查看root用户 判断root是否存在一个,如果有两个先删除delete from user where host="%" and user="root"; 再修改 update user set host = '%' where user = 'root'; 刷新权限 FLUSH PRIVILEGES; 授予远程权限 alter user 'root'@'%' identified with mysql_native_password by '123456';
三、修改配置文件参数
1.下载完成之后 ,输入 docker ps 查看镜像
2.启动容器:
docker run -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql,
docker ps可以查看状态
3.进入MySQL容器内:
docker exec -it 容器名 /bin/bash(PS:其实这个跟Linux修改文件一样,有好多方法,我用的是最笨的一种。)将本地文件替换容器文件
4.我这里要修改的是MySQL里面的
my.cnf文件。可先用 ls查看目录文件(PS: ls 命令显示当前目录的内容)
5.
tail my.cnf(PS:tail 命令可用于查看文件的内容)
6.运行 vim 代码
vim /etc/mysql/my.cnf
7.运行上述 vim 代码之后可能会发现没有执行成功,因为docker容器中没有 vim 编辑器,所以要自己安装 vim编辑器(vim 安装方法详情可见文章末尾附录)
8.进入 my.cnf 文件
9.根据自己的需求进行配置增加或者修改,我修改的配置如下(可供参考)
10.附上MySQL数据库性能优化的部分关键参数
关键参数一:back_log
要求 MySQL 能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。
back_log 值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。 试图设定back_log高于你的操作系统的限制将是无效的。
当你观察你的主机进程列表,发现大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待连接进程时,就要加大 back_log 的值了。默认数值是50,我把它改为500。
关键参数二:interactive_timeout
服务器在关闭它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对 mysql_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。 默认数值是28800,我把它改为7200。
关键参数三:key_buffer_size
索引块是缓冲的并且被所有的线程共享。key_buffer_size是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重 写),到你 能负担得起那样多。如果你使它太大,系统将开始换页并且真的变慢了。默认数值是8388600(8M),我的MySQL主机有2GB内存,所以我把它改为 402649088(400MB)。
关键参数四:max_connections
允许的同时客户的数量。增加该值增加 mysqld 要求的文件描述符的数量。这个数字应该增加,否则,你将经常看到 Too many connections 错误。 默认数值是100,我把它改为1024 。
关键参数五:record_buffer
每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。如果你做很多顺序扫描,你可能想要增加该值。默认数值是 131072(128K),我把它改为16773120 (16M)
关键参数六:sort_buffer
每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。默认数值是2097144(2M),我把它改为 16777208 (16M)。
关键参数七:table_cache
为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。MySQL对每个唯一打开的表需要2个文件描述符。默认数值是64, 我把它改为512。
关键参数八:thread_cache_size
可以复用的保存在中的线程的数量。如果有,新的线程从缓存中取得,当断开连接的时候如果有空间,客户的线置在缓存中。如果有很多新的线程,为了提高 性能可 以这个变量值。通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。我把它设置为 80。
关键参数九:wait_timeout
服务器在关闭它之前在一个连接上等待行动的秒数。 默认数值是28800,我把它改为7200。
注:参数的调整可以通过修改 /etc/my.cnf 文件并重启 MySQL 实现。这是一个比较谨慎的工作,上面的结果也仅仅是我的一些看法,你可以根据你自己主机的硬件情况(特别是内存大小)进一步修改。
11.修改完成之后使用 :wq 进行保存
12.重新使用 tail 进行查看文件是否正确修改
tail /etc/mysql/my.cnf
13.配置文件修改成功后,就可以尽情地使用MySQL啦!(PS:关系型数据库由于被创造设计初衷的限制,在海量数据处理以及多表函数查询时会遇到 I/O 性能瓶颈。因此具备分布式、高性能、高可靠等特性的非关系型数据库(NoSQL)逐渐被人们所了解并使用,弥补了关系型数据库性能方面的先天性不足,在存储非结构化数据时有巨大优势。主流NoSQL数据库有:Redis、MongoDB和HBase等)
附录
vim 编辑器的下载与安装
在使用 docker容器时,有时候里边没有安装vim,运行vim命令时提示说:vim: command not found,这个时候就需要安装vim,当运行以下安装命令时:
apt-get install vim
Error报错提示:
Reading package lists… Done Building dependency tree Reading state information… Done E: Unable to locate package vim
根据 apt 命令下载并安装软件的惯例,我们需要对 apt进行更新!!!
apt-get update
上述命令是为了同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
等更新完毕以后再运行命令:
apt-get install vim
vim /etc/mysql/mysql.conf.d/mysqld.cnf
1.apt-get install vim
2.apt-get update
3.完成 vim 编辑器安装
今天关于《在Docker中安装并修改MySQL中的 my.cnf 配置文件》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于mysql的内容请关注golang学习网公众号!
-
499 收藏
-
160 收藏
-
105 收藏
-
244 收藏
-
235 收藏
-
208 收藏
-
174 收藏
-
317 收藏
-
371 收藏
-
244 收藏
-
288 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
-
- 温暖的书包
- 这篇文章真是及时雨啊,太全面了,太给力了,已加入收藏夹了,关注大佬了!希望大佬能多写数据库相关的文章。
- 2023-04-01 04:53:48
-
- 发嗲的咖啡
- 很好,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢师傅分享文章!
- 2023-03-29 18:58:08
-
- 笑点低的狗
- 这篇文章内容真是及时雨啊,太全面了,写的不错,mark,关注作者大大了!希望作者大大能多写数据库相关的文章。
- 2023-03-21 18:50:52
-
- 稳重的鸡翅
- 细节满满,已收藏,感谢老哥的这篇技术贴,我会继续支持!
- 2023-03-21 08:44:39
-
- 高挑的项链
- 写的不错,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢博主分享文章内容!
- 2023-03-01 16:18:58
-
- 啊啊啊啊
- 这篇文章内容真及时,楼主加油!
- 2023-02-25 01:28:51