美文网首页
Docker 安装 mysql

Docker 安装 mysql

作者: 俊果果 | 来源:发表于2019-09-28 14:51 被阅读0次

一、直接安装mysql

参见文章CentOS 安装 mysql


下面介绍使用docker安装mysql

二、 docker

1、安装docker

  • 安装前置的工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 添加软件源信息:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新 yum 缓存:
sudo yum makecache fast
  • 安装 Docker-ce:
sudo yum -y install docker-ce
  • 启动 Docker 后台服务
sudo systemctl start docker

2、配置网络镜像加速

  • 新建配置文件
vi /etc/docker/daemon.json
  • 添加内容并保存
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

3、配置docker开机自启

systemctl  enable docker.service

三、 安装 mysql

1、 拉取最新版镜像

docker pull mysql

2、新建目录,用作mysql的存储映射

mkdir /var/lib/mysql

3、 创建并启动容器

docker run \
--name mysql \
-p 3306:3306 \
--restart=always \
-e MYSQL_ROOT_PASSWORD=root \
-v /var/lib/mysql/data:/var/lib/mysql/ \
-d mysql \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

参数说明:

  • -p: 映射本地端口3306
  • --restart-always: docker服务启动时,自动启动容器,并且当容器停止时,尝试重启容器
  • -e MYSQL_ROOT_PASSWORD:设置root初始化密码为root,第一次设置才有小,后面重启以修改的密码为准
  • -v : 将本地目录和docker虚拟机内的目录做映射
  • -d: 后台运行容器,并返回容器ID
  • mysql8.0安装默认编码为utf8mb4,所以可以不需要参数--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

执行后可以看到返回了容器id


image.png

4、查看运行情况

  • docker ps


    image.png
  • 复制文件
docker cp mysql:/var/lib/mysql ./
  • 查看运行日志
docker logs --tail 50 --follow --timestamps mysql
image.png
  • 进入容器
 docker exec -it mysql /bin/bash
  • 登录mysql
mysql -u root -p
  • 查看 mysql 时区
select timediff(now(),convert_tz(now(),@@session.time_zone,'+00:00')); 
或
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP); 
或
 show variables like '%time_zone%';
--查看系统当前时间
select now();
image.png
image.png
图示表示使用的是 UTC 时区,当前本机时间为 9 点,服务器中为 1点,差了八个小时


后续就是常规的 mysql 初始化操作,此处不赘述

  • 例如,新增用户并启用远程连接
CREATE USER 'mysqluser'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'mysqluser'@'%';

四、 配置一个简单的主从示例

1、按照上述方法配置一个新的虚拟机和mysql docker

2、主mysql设置

  • 拷贝一份MySQL配置文件
docker cp mysql:/etc/mysql/my.cnf ./my.cnf
  • 编辑文件内容
    在 [mysqld] 节点最后加上后保存
log-bin=mysql-bin
server-id=1

server-id=1 唯一服务器ID,非0整数,不能和其他服务器的server-id重复

  • 将修改后的文件覆盖docker中mysql中的配置文件
docker cp ./my.cnf mysql:/etc/mysql/my.cnf
  • 重启 mysql 的docker , 让配置生效
 docker restart mysql
  • 创建备份用户
CREATE USER 'backup'@'%' IDENTIFIED WITH mysql_native_password BY 'backup';
grant replication slave on *.* to 'backup'@'%' ;
show grants for 'backup'@'%';
image.png

3、从mysql设置

  • 按照上述方法,修改配置文件
    内容如下
log-bin=mysql-bin
server-id=2

4、从库配置

运行SQL语句

CHANGE MASTER TO 
MASTER_HOST='ip',
MASTER_PORT=3306,
MASTER_USER='backup',
MASTER_PASSWORD='backup';

START SLAVE;

可看到如下结果:


image.png
  • 若报错Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work
    进入从库data目录,修改auto.cnf
vi /var/lib/mysql/data/auto.cnf

将其中的uuid改为与主库不同即可

5、测试

主库中表新增记录,再去从库查询,会发现记录已经自动同步了过去
Ok!

相关文章

网友评论

      本文标题:Docker 安装 mysql

      本文链接:https://www.haomeiwen.com/subject/vezzuctx.html