专栏首页python3docker封装mysql镜像

docker封装mysql镜像

一、概述

直接使用官方的镜像

docker pull mysql:5.7

但是mysqld.cnf并没有优化,还是默认的。

二、封装镜像

创建目录

# dockerfile目录
mkdir -p /opt/dockerfile/mysql
# 持久化目录
mkdir -p /data/mysql/data

/opt/dockerfile/mysql 目录结构如下:

./
├── dockerfile
├── mysqld.cnf
└── run.sh

dockerfile

FROM mysql:5.7
ADD mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf

mysqld.cnf

[client]
port=3306
socket = /var/run/mysqld/mysqld.sock
[mysql]
no-auto-rehash
auto-rehash
default-character-set=utf8mb4
[mysqld]
###basic settings
server-id = 2
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
datadir        = /var/lib/mysql
#log-error    = /var/lib/mysql/error.log
# By default we only accept connections from localhost
#bind-address    = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server = utf8mb4
sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
default-storage-engine=INNODB
transaction_isolation = READ-COMMITTED
auto_increment_offset = 1
connect_timeout = 20
max_connections = 3500
wait_timeout=86400
interactive_timeout=86400
interactive_timeout = 7200
log_bin_trust_function_creators = 1
wait_timeout = 7200
sort_buffer_size = 32M
join_buffer_size = 128M
max_allowed_packet = 1024M
tmp_table_size = 2097152
explicit_defaults_for_timestamp = 1
read_buffer_size = 16M
read_rnd_buffer_size = 32M
query_cache_type = 1
query_cache_size = 2M
table_open_cache = 1500
table_definition_cache = 1000
thread_cache_size = 768
back_log = 3000
open_files_limit = 65536
skip-name-resolve
########log settings########
log-output=FILE
general_log = ON
general_log_file=/var/lib/mysql/general.log
slow_query_log = ON
slow_query_log_file=/var/lib/mysql/slowquery.log
long_query_time=10
#log-error=/var/lib/mysql/error.log
log_queries_not_using_indexes = OFF
log_throttle_queries_not_using_indexes = 0
#expire_logs_days = 120
min_examined_row_limit = 100
########innodb settings########
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_buffer_pool_size = 6144M
innodb_file_per_table = on
innodb_buffer_pool_instances = 20
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_log_file_size = 300M
innodb_log_files_in_group = 2 
innodb_log_buffer_size = 16M
innodb_undo_logs = 128
#innodb_undo_tablespaces = 3
#innodb_undo_log_truncate = 1
#innodb_max_undo_log_size = 2G
innodb_flush_method = O_DIRECT
innodb_flush_neighbors = 1
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_thread_concurrency = 64
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 64M
innodb_flush_log_at_trx_commit=1
innodb_autoextend_increment=64
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=65536
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
#innodb_data_file_path=ibdata1:60M;ibdata2:60M;autoextend:max:1G
innodb_data_file_path = ibdata1:12M:autoextend
#innodb_temp_data_file_path = ibtmp1:500M:autoextend:max:20G
#innodb_buffer_pool_dump_pct = 40
#innodb_page_cleaners = 4
#innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
#log_timestamps=system
##############
delayed_insert_limit = 100
delayed_insert_timeout = 300
delayed_queue_size = 1000
delay_key_write = ON
disconnect_on_expired_password = ON
div_precision_increment = 4
end_markers_in_json = OFF
eq_range_index_dive_limit = 10
innodb_adaptive_flushing = ON
innodb_adaptive_hash_index = ON
innodb_adaptive_max_sleep_delay = 150000
#innodb_additional_mem_pool_size = 2097152
innodb_autoextend_increment = 64
innodb_autoinc_lock_mode = 1

run.sh

#!/bin/bash
docker run -d --name mysqld_prod --restart=always -e MYSQL_ROOT_PASSWORD=123456  -p 3306:3306 -v /data/mysql/data:/var/lib/mysql mysqld_prod:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

生成镜像

cd /opt/dockerfile/mysql
docker build -t mysqld_prod:5.7 .

启动镜像

bash run.sh

三、测试连接

连接测试

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python代码覆盖率工具——cover

    今天发现了一个好用的python代码覆盖率检查工具:coverage, 可以高亮显示代码中哪些语句未被执行,哪些执行了,方便单测。

    py3study
  • docker mysql初始化多个sql脚本

    现有一台服务器,需要部署mysql。其中mysql容器,需要在第一次启动时,执行多个sql文件。

    py3study
  • Python爬虫爬数据写入到EXCEL中

    Python抓数据写到EXCEL中。以前都是写到txt中然后再导入到excel。现在直接写到excel中。

    py3study
  • # client配置项

    MySQL配置参数多达数百个,不过常用的并不多,很多配置我们不需要关心,只要掌握一些必要的配置项就能解决99%的问题,当遇见了那1%的问题时mysql可能已经不...

    用户1175783
  • Innodb相关的一些参数

    这个值一般设置为8M或者16M,我们只需要保证每秒产生的事务量在这个大小之内即可,因为每一秒种innodb会将重做日志缓冲刷新到日志文件中。

    AsiaYe
  • MySQL技术内幕:InnoDB存储引擎(第2版) (数据库技术丛书) - 姜承尧.mobi

    本书是国内目前唯一的一本关于innodb的著作,由资深mysql专家亲自执笔,中外数据库专家联袂推荐,权威性毋庸置疑。

    用户3157710
  • Percona server与腾讯云cdb热点更新性能压测

    鉴于有赞业务迅速发展,对于秒杀场景有比较强烈的需求,当前我们的自建数据库使用Percona Server 5.7.22 版本,在应对快手直播以及秒杀场景下,单行...

    用户1278550
  • mysql5.5与mysq 5.6中禁用innodb引擎的方法

    今天发现有一个备份的mysql数据文件夹异常变大,一查发现是多了三个文件:ibdata1 ib_logfile0 ib_logfile1,前者18m,后两个各5...

    学到老
  • mysql5.5与mysq 5.6中禁用innodb引擎的方法

    今天发现有一个备份的mysql数据文件夹异常变大,一查发现是多了三个文件:ibdata1 ib_logfile0 ib_logfile1,前者18m,后两个各5...

    学到老
  • MySQL 性能:使用 MySQL 5.7 实现每秒 50 万查询

    使用UNIX socket来运行Point-Selects测试的Sysbench命令如下(在parallel中启动8个进程):

    zhangdd

扫码关注云+社区

领取腾讯云代金券