Sign inSign up

luode0320/mysql

By luode0320

•Updated 6 months ago

这是一个MySQL

Image
0

249

luode0320/mysql repository overview

⁠推荐使用MySQL 8.1

  1. 配置my.cnf:
mkdir -p /apps/mysql8.1/conf/
touch /apps/mysql8.1/conf/my.cnf
vi /apps/mysql8.1/conf/my.cnf
#
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.1/en/server-configuration-defaults.html

[mysqld]
# 禁用MySQL的主机缓存, 提高连接速度。
skip-host-cache

# 忽略分组严格模式
sql_mode=NO_ENGINE_SUBSTITUTION

# 禁用MySQL的名称解析功能, 提高连接速度,尤其是当有大量连接请求时。
skip-name-resolve

# 设置mysql数据库的数据的存放目录
datadir=/var/lib/mysql

# 套接字文件用于本地连接,它允许客户端和服务器在同一台机器上进行通信。
socket=/var/run/mysqld/mysqld.sock

# MySQL服务器允许从这个配置中加载或保存数据文件的目录。
secure-file-priv=/var/lib/mysql-files

# 默认情况下,MySQL使用mysql用户来运行
user=mysql

# 通用日志
general_log_file = /logs/log.log

# 慢日志
slow_query_log = 1
slow_query_log_file = /logs/slow.log
long_query_time = 2
#将没有使用索引的语句记录到慢查询日志  
log_queries_not_using_indexes = 0
#对于查询扫描行数小于此参数的SQL,将不会记录到慢查询日志中
min_examined_row_limit = 5000
#记录执行缓慢的管理SQL,如alter table,analyze table, check table, create index, drop index, optimize table, repair table等。  
log_slow_admin_statements = 0
#作为从库时生效, 从库复制中有慢sql也将被记录
#对于ROW格式binlog,不管执行时间有没有超过阈值,都不会写入到从库的慢查询日志
log_slow_slave_statements = 1

# 错误日志
log_error = /logs/error.log

# 指定了MySQL服务器进程的PID文件路径。PID文件用于存储MySQL服务器进程的进程ID。
pid-file = /logs/mysqld.pid

# 允许最大连接数
max_connections=1000

# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100

# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
# 设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证, 使用用户名密码登录
default_authentication_plugin=mysql_native_password

#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1

#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800

#Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6
#执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
lock_wait_timeout = 3600

#内部内存临时表的最大值。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 64M
max_heap_table_size = 64M

# 每个线程的堆栈大小 如果线程堆栈太小,则会限制执行复杂SQL语句
thread_stack = 512K

#记录系统时区
log_timestamps = SYSTEM


[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4

2.1 直接启动:

docker run -p 3306:3306 --name mysql --privileged=true --restart=always -v /apps/mysql8.1/conf:/etc/mysql/conf.d -v /apps/mysql8.1/logs:/logs -v /apps/mysql8.1/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=root -d docker.io/luode0320/mysql:8.1 

2.2 脚本启动

vim /usr/local/src/mysql.sh
#!/bin/sh
docker run \
-p 3306:3306 \
--name mysql \
--privileged=true \
--restart=always  \
-v /apps/mysql8.1/conf:/etc/mysql/conf.d \
-v /apps/mysql8.1/logs:/logs \
-v /apps/mysql8.1/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=root \
-d docker.io/luode0320/mysql:8.1

Tag summary

Content type

Image

Digest

sha256:986e8aa79…

Size

159.3 MB

Last updated

6 months ago

docker pull luode0320/mysql:8.1