前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 搭建mysql5.7

Docker 搭建mysql5.7

作者头像
用户5760343
发布2019-10-30 11:03:56
9130
发布2019-10-30 11:03:56
举报
文章被收录于专栏:sktjsktj

1、 docker pull mysql:5.7 mkdir -p /mysql/data mkdir -p /mysql/conf mkdir -p /mysql/log chmod 777 -R /mysql/log chmod 777 -R /mysql/data

2、vi /mysql/conf/mysqld.cnf [client]

该目录下的内容常用来进行localhost登陆,一般不需要修改

port = 3306 # 端口号 socket =/var/log/mysql/mysql.sock # 套接字文件(localhost登陆会自动生成)

[mysql]

包含一些客户端mysql命令行的配置

auto-rehash # 默认不自动补全 auto-rehash自动补全

[mysqld]

mysql优化的配置目录,除硬件和环境配置外,全部优化在此配置,

一般服务器安装只有此配置目录

user = mysql #默认启动用户,一般不需要修改,可能出现启动不成功 port = 3306 #端口号 socket = /var/log/mysql/mysql.sock #套接字文件 (套接字方式登陆比TCP/IP方式连接快) character-set-server = utf8 #设置数据库服务器默认编码 utf-8 datadir =/var/lib/mysql #数据库目录,数据库目录切换时需要用到 pid-file =/var/log/mysql/mysqld.pid #mysql进程文件,可指定自己的进程文件 external-locking = FALSE #外部锁定(非多服务器可不设置该选项,默认skip-external-locking) skip-external-locking #跳过外部锁定 (避免多进程环境下的external locking--锁机制) skip-name-resolve #跳过主机名解析,直接IP访问,可提升访问速度 log-error =/var/log/mysql/mysqld.log #错误日志文件 log-warnings #默认为1,表示启用警告信息记录日志,不需要置0即可,大于1时表示将错误或者失败连接记录日志 open_files_limit = 10240 #全局只读变量,文件描述符限制 注:上限其实为OS文件描述符上限,小于OS上限时生效 可用lsof查看限制并修改相应配置

以下配置较为重要

back_log = 600 #在MYSQL暂时停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中。不超过TCP/IP监听队列,建议512倍数

如果系统在短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的监听队列的大小。默认值50。

max_connections = 5000 #MySQL允许最大的进程连接数,如果经常出现Too Many Connections的错误提示,则需要增大此值 max_connect_errors = 6000 #设置每个主机的连接请求异常中断的最大次数,当超过该次数,MYSQL服务器将禁止host的连接请求,

直到mysql服务器重启或通过flush hosts命令清空此host的相关信息

max_allowed_packet = 32M #限制接收数据包的大小,单条数据超过该值时插入或更新失败,

show VARIABLES like '%max_allowed_packet%'; 查看当前限制大小

sort_buffer_size = 8M #每个连接独享,用于优化不能通过sql或者索引优化的group和order等,设置的值应适中

比如:500个连接,500*8 = 4G,将消耗4G内存

join_buffer_size = 8M #用于表间关联缓存的大小,每个连接独享

thread_concurrency = 16 #应设为CPU核数的2倍.

thread_cache_size = 600 #线程缓存变量,减少连接的创建,一般设置规则

1G->8;2G->16;3G->32;根据实际情况可适当加大(个人:2^(n+2))

thread_stack = 1024K #设置MYSQL每个线程的堆栈大小,可设置范围为128K至4GB,默认足够大,一般不用修改 query_cache_size = 128M #查询缓存,设置不宜过大,主要是因为缓存越大,设置失效时间越长。如果高并发写,可以禁用该功能 query_cache_limit = 2M #指定单个查询能够使用的缓冲区大小,默认为1M query_cache_min_res_unit = 4k #大数据查询4k,小数据查询2k,目的是提高缓存命中率

数据库引擎相关参数

default-storage-engine = InnoDB #默认数据库引擎 innodb_data_file_path = ibdata1:1024M:autoextend #指定数据文件,初始大小,指定扩展大小 注意与数据库中初始文件大小保持一致

格式:size-allocation[:autoextend[:max-size-allocation]]

innodb_read_io_threads = 2 #read IO线程,根据cpu核心线程数量设置 innodb_write_io_threads = 2 #write IO线程,根据cpu核心线程数量设置 innodb_thread_concurrency = 4 #服务器有几个CPU就设置为几,建议用默认设置,一般为8 innodb_lock_wait_timeout = 120 #事务获取锁的最长等待时间,超时请求失败 innodb_buffer_pool_size = 10G #类似于myisam的key_pool_size 适当增加可提高命中率,专用服务器可设置为70-80%

innodb_flush_log_at_trx_commit = 2 #默认值1 每次提交日志记录磁盘 2 日志写入系统缓存 0 不提交也记录,不安全,不推荐

innodb_flush_method = O_DIRECT #控制着innodb数据文件及redo log的打开、刷写模式

fdatasync(默认),调用fsync()去刷数据文件与redo log的buffer

O_DSYNC,innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件

O_DIRECT,innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log

fsync() 作用:数作用是flush时将与fd文件描述符所指文件有关的buffer刷写到磁盘

innodb_log_files_in_group = 2 #以循环方式将日志文件写到多个文件,默认2 innodb_log_file_size = 4G #数据日志文件大小,较大可提升性能, innodb_log_buffer_size = 512M #日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据(开发人员推荐1-8M---不知道为什么)

innodb_file_per_table = 1 #独立表空间 innodb 默认一个表空间

innodb_autoinc_lock_mode = 2 #主要作用于自增列

0 这个表示tradition 传统 得到语句级别的锁,具有连续性和重复性,但影响并发的插入

#1 这个表示consecutive 连续 根据一次性插入的数量生成连续的值,

auto_inc锁不需要一直保持到语句的结束,语句得到了相应的值后就可以提前释放锁

#2 这个表示interleaved 交错 没有auto_inc锁,auto_incremant值可能不是连续的

3、 sudo docker run -p 3306:3306 --name mysql -v /mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /mysql/log:/var/log/mysql -v /mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql123 -itd mysql:5.7

4、 firewall-cmd --add-port=3306/tcp --permanent firewall-cmd --reload

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.10.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 该目录下的内容常用来进行localhost登陆,一般不需要修改
  • 包含一些客户端mysql命令行的配置
  • mysql优化的配置目录,除硬件和环境配置外,全部优化在此配置,
  • 一般服务器安装只有此配置目录
  • 以下配置较为重要
  • 如果系统在短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的监听队列的大小。默认值50。
  • 直到mysql服务器重启或通过flush hosts命令清空此host的相关信息
  • show VARIABLES like '%max_allowed_packet%'; 查看当前限制大小
  • 比如:500个连接,500*8 = 4G,将消耗4G内存
  • thread_concurrency = 16 #应设为CPU核数的2倍.
  • 1G->8;2G->16;3G->32;根据实际情况可适当加大(个人:2^(n+2))
  • 数据库引擎相关参数
  • 格式:size-allocation[:autoextend[:max-size-allocation]]
  • innodb_flush_log_at_trx_commit = 2 #默认值1 每次提交日志记录磁盘 2 日志写入系统缓存 0 不提交也记录,不安全,不推荐
  • fdatasync(默认),调用fsync()去刷数据文件与redo log的buffer
  • O_DSYNC,innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件
  • O_DIRECT,innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log
  • fsync() 作用:数作用是flush时将与fd文件描述符所指文件有关的buffer刷写到磁盘
  • innodb_file_per_table = 1 #独立表空间 innodb 默认一个表空间
  • 0 这个表示tradition 传统 得到语句级别的锁,具有连续性和重复性,但影响并发的插入
  • auto_inc锁不需要一直保持到语句的结束,语句得到了相应的值后就可以提前释放锁
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档