博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于docker的mysql主从复制
阅读量:5154 次
发布时间:2019-06-13

本文共 4654 字,大约阅读时间需要 15 分钟。

一、下载官方的mysql镜像,我用的https://dashboard.daocloud.io/orgs/zuikc/packages/explore国内的加速镜像,一般国外的比较慢

1. 在 terminal 中登录 docker login daocloud.io2. 输入 docker pull 并复制粘贴以下镜像地址daocloud.io/library/mysql:latest
 

下载完成后查看镜像:

 

二、生成容器 

生成容器时,调用的启动脚本是/entrypoint.sh;通过查看/entrypoint.sh脚本内容,总结参数如下

mysqld #启动mysql服务,必须使用MYSQL_ROOT_PASSWORD #设置mysql的root密码,必须使用#以下二个参数添加除root之外的用户并设置密码,可选。MYSQL_USER MYSQL_PASSWORD#设置生成容器时需要新建的数据库,可选 MYSQL_DATABASE #容器的mysql数据库默认的保存路径是: /var/lib/mysql #容器的配置文件my.cnf的路径为: /etc/mysql/my.cnf

使用上要的参数生成新的容器:

docker run -d -p 3307:3306 --name mysql  -P  -e mysqld -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_USER=yope -e MYSQL_PASSWORD=yope -e MYSQL_DATABASE=testDb -v /mysql_data:/var/lib/mysql  daocloud.io/library/mysql

查看容器:

docker ps -a

 

重要参数说明:

 --name mysql

指定容器名称为 mysql;

-p 3307:3306

指定映射端口 将宿主机端口3307映射到容器3306端口;

-v /mysql_data:/var/lib/mysql

映射数据库存放位置。将宿主机的目录“/mysql_data”映射到容器的“/var/lib/mysql”目录;这是因为默认情况下数据库的数据库文件和日志文件都会存放于容器的AUFS文件层,这不仅不使得容器变得越来越臃肿,不便于迁移、备份等管理,而且数据库的性能也会受到影响。因此建议挂载到宿主机的目录到容器内。

查看本地的mysql_data是否生成容器内的数据库:

[root@localhost /]# ll /mysql_data/总用量 188452 -rw-r----- 1 systemd-bus-proxy ssh_keys 56 8月 20 22:25 auto.cnf -rw-r----- 1 systemd-bus-proxy ssh_keys 1329 8月 20 22:25 ib_buffer_pool -rw-r----- 1 systemd-bus-proxy ssh_keys 79691776 8月 20 22:25 ibdata1 -rw-r----- 1 systemd-bus-proxy ssh_keys 50331648 8月 20 22:25 ib_logfile0 -rw-r----- 1 systemd-bus-proxy ssh_keys 50331648 8月 20 22:25 ib_logfile1 -rw-r----- 1 systemd-bus-proxy ssh_keys 12582912 8月 20 22:25 ibtmp1 drwxr-x--- 2 systemd-bus-proxy ssh_keys 4096 8月 20 22:25 mysql drwxr-x--- 2 systemd-bus-proxy ssh_keys 8192 8月 20 22:25 performance_schema drwxr-x--- 2 systemd-bus-proxy ssh_keys 8192 8月 20 22:25 sys drwxr-x--- 2 systemd-bus-proxy ssh_keys 19 8月 20 22:25 testDb [root@localhost /]#

已经生成相关的文件和默认数据库,同时也新建了"testDb"数据库.

测试:

在宿主机上通过端口访问容器中的mysql服务

测试登录:

mysql -u root -p123456 -h docker宿主机ip -P 3307
Enter password: Welcome to the MariaDB monitor.  Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.13 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>

 

三、进入到新生成的容器 (名为mysql的容器)

使用exec进入容器,同时进行相关操作: 

[root@localhost /]# docker exec -it mysql /bin/bash

查看进程:

root@492ffa26d865:/# ps -auxUSER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDmysql         1  0.2  9.7 1262696 182200 ? Ssl 14:52 0:00 mysqld root 127 0.2 0.1 20216 1884 ? Ss 14:57 0:00 /bin/bash root 133 0.0 0.0 17492 1148 ? R+ 14:58 0:00 ps -aux

查看数据库所在的文件夹:

root@492ffa26d865:/# ls -l /var/lib/mysql/total 188452-rw-r----- 1 mysql mysql       56 Aug 20 14:52 auto.cnf -rw-r----- 1 mysql mysql 1329 Aug 20 14:52 ib_buffer_pool -rw-r----- 1 mysql mysql 50331648 Aug 20 14:52 ib_logfile0 -rw-r----- 1 mysql mysql 50331648 Aug 20 14:52 ib_logfile1 -rw-r----- 1 mysql mysql 79691776 Aug 20 14:52 ibdata1 -rw-r----- 1 mysql mysql 12582912 Aug 20 14:52 ibtmp1 drwxr-x--- 2 mysql mysql 4096 Aug 20 14:52 mysql drwxr-x--- 2 mysql mysql 8192 Aug 20 14:52 performance_schema drwxr-x--- 2 mysql mysql 8192 Aug 20 14:52 sys drwxr-x--- 2 mysql mysql 19 Aug 20 14:52 testDb

进入mysql:

root@492ffa26d865:/# mysql -u root -pEnter password: Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.13 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

 

四、修改容器中mysql的配置文件 

默认镜像中并没有安装vi或者vim,需要手工安装

root@492ffa26d865:/# apt-get update && apt-get -yq install vim

然后就可以使用vim 来修改mysql的配置文件:

root@492ffa26d865:/# vim /etc/mysql/my.cnf

vim编辑器在此不做详述。

如果已经有一个比较成熟的my.cnf的配置方案,可以在宿主机上新建一个文件夹将已经设置好的my.cnf和conf.d这二个文件放到里面,

然后在新建容器的时候,直接使用参数”-v” 将这个文件夹映射到容器的”/etc/mysql”目录上即可。

 ***************************************************************************12-04************************************************

修改数据的登录密码

 

alter user root@localhost identified by 'password'  代表本地登录用户

alter user root@% identified by 'password'  代表所有链接到root的主机

 

*****************************************************************2018-12-08更新*****************************

有时候用官方镜像创建挂在目录的时候失败,是因为权限的问题,默认镜像是一mysql用户组运行,而挂在的宿主机的目录是root或者别的组的权限,所以不对应,造成权限问题

这时候需要添加用户组,并修改用户组的权限

1,groupadd mysql
2,useradd -r -g mysql -s /bin/false mysql
3,chown -R mysql:mysql /mysql_data

 

这个时候再挂在目录就可以了

 

转载于:https://www.cnblogs.com/albertzhangyu/p/10055818.html

你可能感兴趣的文章
跨域问题整理
查看>>
[Linux]文件浏览
查看>>
64位主机64位oracle下装32位客户端ODAC(NFPACS版)
查看>>
获取国内随机IP的函数
查看>>
今天第一次写博客
查看>>
江城子·己亥年戊辰月丁丑日话凄凉
查看>>
IP V4 和 IP V6 初识
查看>>
Spring Mvc模式下Jquery Ajax 与后台交互操作
查看>>
(转)matlab练习程序(HOG方向梯度直方图)
查看>>
『Raid 平面最近点对』
查看>>
【ADO.NET基础-数据加密】第一篇(加密解密篇)
查看>>
C语言基础小结(一)
查看>>
STL中的优先级队列priority_queue
查看>>
UE4 使用UGM制作血条
查看>>
浏览器对属性兼容性支持力度查询网址
查看>>
OO学习总结与体会
查看>>
虚拟机长时间不关造成的问题
查看>>
校门外的树2 contest 树状数组练习 T4
查看>>
面试整理:Python基础
查看>>
Python核心编程——多线程threading和队列
查看>>