MySQL配置文件:
开启了日志,配置数据存储位置,日志记录位置,为宿主机到docker文件挂载准备;也是在网上找的,具体配置解释随意在简书搜索。
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
event_scheduler = 1
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
max_connections = 10000
interactive_timeout = 1800
wait_timeout = 1800
max_allowed_packet = 128M
# 全局动态变量,默认3,范围:1~3
# 表示错误日志记录的信息,1:只记录error信息;2:记录error和warnings信息;3:记录error、warnings和普通的notes信息。
log_error_verbosity = 2
# 错误日志文件地址
log_error = /var/log/mysql-error.log
# 开启慢查询
slow_query_log = 1
# 开启慢查询时间,此处为1秒,达到此值才记录数据
long_query_time = 3
# 检索行数达到此数值,才记录慢查询日志中
min_examined_row_limit = 100
# mysql 5.6.5新增,用来表示每分钟允许记录到slow log的且未使用索引的SQL语句次数,默认值为0,不限制。
log_throttle_queries_not_using_indexes = 0
# 慢查询日志文件地址
slow_query_log_file = /var/log/mysql-slow.log
# 开启记录没有使用索引查询语句
log-queries-not-using-indexes = 1
# 开启二进制日志
log_bin = /var/log/mysql-bin.log
# mysql清除过期日志的时间,默认值0,不自动清理,而是使用滚动循环的方式。
expire_logs_days = 0
# 如果二进制日志写入的内容超出给定值,日志就会发生滚动。你不能将该变量设置为大于1GB或小于4096字节。 默认值是1GB。
max_binlog_size = 1000M
# binlog的格式也有三种:STATEMENT,ROW,MIXED。mysql 5.7.7后,默认值从 MIXED 改为 ROW
# 关于binlog日志格式问题,请查阅网络资料
binlog_format = row
# 默认值N=1,使binlog在每N次binlog写入后与硬盘同步,ps:1最慢
sync_binlog = 10
在宿主机创建文件夹:
/home/mysql/data -- 宿主机数据存储位置
/home/mysql/logs --宿主机日志存储位置
创建文件:
/etc/mysql/my.cnf --宿主机数据库配置文件
/home/mysql/logs/mysql-slow.log --宿主机慢查询日志
/home/mysql/logs/mysql-error.log --宿主机错误日志
/home/mysql/logs/mysql-bin.log --宿主机二进制日志
修改文件夹权限:
启动时遇到过权限问题,没有权限写日志(我这个配置可能有些过,权限问题困扰了半个晚上,反正这样能跑起来,简单方法谁有谁分享一下)
chmod 777 /home/mysql/data
chmod 777 /home/mysql/logs
chmod 777 /home/mysql/logs/*.log
运行Docker
docker run -- 运行
-p 3306:3306 -- 端口映射
-v /home/mysql/data:/var/lib/mysql --数据存储映射
-v /home/mysql/logs:/var/log --日志存储映射
-v /etc/mysql/my.cnf:/etc/mysql/my.cnf --配置文件映射
-v /etc/localtime:/etc/localtime --时区映射(不知道起没起作用,网上抄的)
--name mysql1-0 --容器名字
--privileged=true --权限
-e MYSQL_ROOT_PASSWORD="3point1415926" --设置密码
-d --后台运行
mysql --镜像名称
注:对宿主机映射到容器的文件,改权限就直接改宿主机文件权限