Docker部署mysql5.7.28与数据持久化

140 篇文章 1 订阅
44 篇文章 1 订阅

思路: docker容器部署mysql5.7.28,mysql配置文件挂载宿主机(方便修改),mysql数据库文件与log写入到宿主机目录(数据持久化)

下载mysql镜像

进入mysql镜像库选择5.7.28的镜像,并下载

docker pull mysql:5.7.28

准备挂载目录与文件

1. 宿主机下新建数据库文件目录

sudo mkdir -p /home/docker_mysql/datadir

2. 宿主机下新建数据库的log文件夹

sudo mkdir -p /home/docker_mysql/logs

3. 新建mysql的配置文件mysqld.cnf

sudo vim /home/docker_mysql/mysql.conf.d/mysqld.cnf

配置文件信息为:

    [mysqld_safe]
    socket          = /var/run/mysqld/mysqld.sock
     
    [mysqld]
    user            = mysql
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    port            = 3306                  # 端口
    basedir         = /usr
    datadir         = /var/lib/mysql        # 数据库文件路径
    tmpdir          = /tmp
    lc-messages-dir = /usr/share/mysql
    skip-external-locking
     
    # bind-address          = 127.0.0.1     # 访问权限按自己需求设置
     
    key_buffer_size         = 16M
    max_allowed_packet      = 16M
    thread_stack            = 192K
    thread_cache_size       = 8
     
    myisam-recover-options  = BACKUP
    query_cache_limit       = 1M
    query_cache_size        = 16M
     
    log_error = /var/log/mysql/error.log    # log文件路径(只保留异常日志)
     
    expire_logs_days  = 10
    max_binlog_size   = 100M

4. 修改logs文件的所有者权限为700

sudo chown 700 /home/docker_mysql/logs

docker启动mysql容器

1. 启动mysql容器并挂载对应文件

docker run --name mysql_5.7.28 -d -e MYSQL_ROOT_PASSWORD=123456 -v /home/docker_mysql/datadir:/var/lib/mysql -v /home/docker_mysql/logs:/var/log/mysql -v /home/docker_mysql/mysql.conf.d:/etc/mysql/mysql.conf.d -p 3307:3306 mysql:5.7.28

run:启动容器的命令

--name:并容器的命名

-d:让容器后台运行(其他对应参数:-i交互式操作,-t开启一个伪终端)

-e MYSQL_ROOT_PASSWORD:初始化root用户的密码为123456

-v:  将宿主机目录挂载到容器(-v /home/docker_mysql/datadir:/var/lib/mysql 将宿主机的/home/docker_mysql/datadir挂载到容器的/var/lib/mysql目录,-v 参数可重复多次, 每次挂载一个目录到容器)

-p:将容器的3306端口映射到主机的3307端口

mysql:5.7.28:mysql镜像的仓库名与标签,也可直接通过镜像id启动

2. 查看docker容器

docker ps -a

3. docker日志查看启动情况

docker logs -t -f --tail=10 mysql_5.7.28

Options:
        --details        显示更多的信息
    -f, --follow         跟踪实时日志
        --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
        --tail string    从日志末尾显示多少行日志, 默认是all
    -t, --timestamps     显示时间戳
        --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

例子:

查看指定时间后的日志,只显示最后100行:

$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID

查看最近30分钟的日志:

$ docker logs --since 30m CONTAINER_ID

查看某时间之后的日志:

$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID

查看某时间段日志:

$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID

注:若logs文件的所有者权限未正确设置会启动失败并报权限不足(如下图):

4. navicat连接成功并新建个数据库-test_2019

或者直接服务器命令行连接

    mysql -h 127.0.0.1 -uroot -p123456 -P3307
    或者:mysql -h mysql容器IP -uroot -p123456 -P3306

注:-h 指定ip -u指定用户名 -p指定密码 -P指定端口号

查看容器IP方法

    方法一  docker inspect 容器的id或者容器名 | grep IPAddress
    方法二  sudo docker inspect -f='{{.NetworkSettings.IPAddress}}' $(sudo docker ps -a -q)
    方法三  ps -aux | grep 3306

5. 查看数据库文件夹datadir中多了个数据库文件-test_2019,至此mysql部署完成

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值