前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Docker中安装MySQL并修改 my.cnf 配置文件

在Docker中安装MySQL并修改 my.cnf 配置文件

原创
作者头像
全栈开发Dream
修改2021-06-03 10:10:55
19.1K0
修改2021-06-03 10:10:55
举报
文章被收录于专栏:全栈开发Dream

前言

前期经过MySQL主从复制之后,发现数据库的读写非常慢,而且经常发生MySQL连接数过小,导致整个数据库崩溃的情况。通过修改MySQL中的 my.cnf 配置文件参数,以达到MySQL关系型数据库最大性能的合理利用。

本文共分为三个方面进行讲述:

一、Docker安装MySQL

代码语言:txt
复制
查看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

代码语言:txt
复制
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 mysqldocker ps 可以查看状态

3.进入MySQL容器内:docker exec -it 容器名 /bin/bash (PS:其实这个跟Linux修改文件一样,有好多方法,我用的是最笨的一种。)将本地文件替换容器文件

4.我这里要修改的是MySQL里面的my.cnf 文件。可先用 ls查看目录文件(PS: ls 命令显示当前目录的内容)

5.tail my.cnfPS:tail 命令可用于查看文件的内容)

6.运行 vim 代码

代码语言:txt
复制
    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 进行查看文件是否正确修改

代码语言:txt
复制
tail /etc/mysql/my.cnf 

13.配置文件修改成功后,就可以尽情地使用MySQL啦!(PS:关系型数据库由于被创造设计初衷的限制,在海量数据处理以及多表函数查询时会遇到 I/O 性能瓶颈。因此具备分布式、高性能、高可靠等特性的非关系型数据库(NoSQL)逐渐被人们所了解并使用,弥补了关系型数据库性能方面的先天性不足,在存储非结构化数据时有巨大优势。主流NoSQL数据库有:Redis、MongoDB和HBase等)

附录

vim 编辑器的下载与安装

在使用 docker容器时,有时候里边没有安装vim,运行vim命令时提示说:vim: command not found,这个时候就需要安装vim,当运行以下安装命令时:

代码语言:txt
复制
apt-get install vim 

Error报错提示:

代码语言:txt
复制
Reading package lists… Done 
Building dependency tree 
Reading state information… Done
E: Unable to locate package vim 

根据 apt 命令下载并安装软件的惯例,我们需要对 apt进行更新!!!

代码语言:txt
复制
apt-get update 

上述命令是为了同步  /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。

等更新完毕以后再运行命令:

代码语言:txt
复制
apt-get install vim 
代码语言:txt
复制
vim /etc/mysql/mysql.conf.d/mysqld.cnf 

1.apt-get install vim

2.apt-get update

3.完成 vim 编辑器安装

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、Docker安装MySQL
  • 二、连接MySQL
  • 三、修改配置文件参数
  • 附录
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档