docker入门 —— 构建 mysql 数据库
挂载文件,实现容器和数据分离
优点:由于 docker 容器的独立性,在容器删除时,mysql 的文件也会删除。为了解决这个问题,我们在启动 docker 时,需要将 mysql 的数据文件目录映射到宿主机,这样只即使 docker 删除了,只要不删除宿主机的文件,数据文件会一直保留,下次要使用时,只须重新运行一个 docker 容器,将 mysql 的数据文件目录映射到宿主机的相应目录即可。
创建挂载目录
/data/mysql 目录下创建 conf、data、log 文件夹
新建配置文件(待挂载)
conf 文件夹下新建 my.cnf,加入如下内容(记得第一行必须是[mysqld])
[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/
#default_authentication_plugin= mysql_native_password
日志配置
- 修改配置,增加如下内容(vi my.cnf)
#########################日志配置############################
log-error=/var/log/mysql/error.log
#log=/var/log/mysql/mysql.log
slow_query_log =ON
slow_query_log_file=/var/log/mysql/slowquery.log
long_query_time=3
log-queries-not-using-indexes=/var/log/mysql/nouseindex.log
#########################日志配置############################
权限变更
- 变更挂载目录及所有子目录的用户权限
- 执行
chown -R 999:999 /data/mysql/
- 结果如下:
drwxr-xr-x 6 polkitd ssh_keys 4096 Aug 1 05:34 mysql
构建和启动
- 执行如下命令构建并启动容器:
docker run -p 3306:3306 --name mysql8 -v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /data/mysql/log:/var/log/mysql -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=XXX@123456 -d mysql
- 如果是 centos7 以上,可能需要加参数:
- --privileged=true