安装docker MySQL

安装docker 

参考我的博客:centos7安装docker

安装docker MySQL

查看本地镜像

docker images

查看运行的容器

docker ps

 

 查看关于MySQL的镜像 

docker search mysql
全部输出 ,如果输出过长也会输出
docker search   --no-trunc mysql

本地没有MySQL的镜像 则

docker从仓库中拉取最新版的mysql镜像,如果没加标签的话,默认获取最新的版本latest。这里下载5.7版本

docker pull mysql:5.7

 现在已经有MySQL5.7的镜像了

 启动容器 

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7

参数解析 

--restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次

–name:给新创建的容器命名

-d 后台运行容器 并返回容器ID

 -p 3306:3306 端口映射 ,前面是容器内端口,后面是服务器上端口 

-e MYSQL_ROOT_PASSWORD=root 初始化MySQL root账号密码

 mysql:5.7 镜像名称 ,可以通过 docker images 查看

-v 和 --mount区别 http://einverne.github.io/post/2018/03/docker-v-and-mount.html

使用-v /tmp/a:/var/a 时。如果宿主机上没有这个文件/tmp/a,也会自动创建,

但是如果使用mount时,宿主机中没有这个文件会报错找不到这个文件,并创建失败

 

docker ps 

查看容器启动状况

进入容器 查看配置文件路径 以及数据文件路径

docker exec -it mysql bash

 

停止容器

 docker stop mysql

删除容器 
docker rm  mysql

docker run  --name mysql \
-d -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
--restart=on-failure:3 \
-v /server/docker/mysql/data:/var/lib/mysql \
-v /server/docker/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d\mysqld.cnf \
mysql:5.7

查看目录映射 

docker inspect mysql | grep Mounts -A 20

仅仅安装MySQL客户端 

# 添加rpm源
[root@k8s-master ~]# rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
[root@test1 ~]#
# 通过yum搜索
[root@test1 ~]# yum search mysql-community
[root@test1 ~]#
# 安装x64位的 mysql客户端
[root@test1 ~]# yum install mysql-community-client.x86_64

 


搭建docker MySQL主从

主要解决的问题 ,配置文件不生效 ,新部署的从库网络有问题 

以下为测试环境部署从库:


docker run -p 3307:3306 --name mysql-slave  --net  net_sandbox  --ip 172.16.0.214 -v /server/sandbox/mysql/conf3307:/etc/mysql/mysql.conf.d  -v /server/sandbox/mysql/data3307:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root@2017 -d mysql:5.7

修改server_id
配置文件中加入以下参数

gtid-mode=on
enforce-gtid-consistency=1
log-slave-updates=1

重启MySQL容器生效 
docker restart mtsql

找到主从库的ip

docker inspect mysql |grep IP
172.16.0.114
docker inspect mysql-slave |grep IP

创建复制账号 
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'%' identified by 'repl';

 ? change master to

CHANGE MASTER TO
  MASTER_HOST='172.16.0.114',
  MASTER_USER='repl',
  MASTER_PASSWORD='repl',
  MASTER_PORT=3306,
  master_auto_position=1,
  MASTER_CONNECT_RETRY=10;
  
部署主从网络一直不通  根据原来的脚本内容 
 --net  net_sandbox  --ip 172.16.0.214 在创建mysql-slave 时添加一下参数  ,再次启动就可以了 
  
  
 脚本内容
 cat /server/sandbox/mysql/conf/my.cnf


docker stop  mysql-slave;docker rm  mysql-slave;docker run --name mysql-slave -p 3307:3306  --restart always --net  net_sandbox  --ip 172.16.0.214 -v /etc/hosts:/etc/hosts -v /etc/localtime:/etc/localtime -v /server/sandbox/mysql/data3307:/var/lib/mysql -v /server/sandbox/mysql/conf3307/my.cnf:/etc/my.cnf -v /etc/resolv.conf:/etc/resolv.conf  -e MYSQL_ROOT_PASSWORD=root@2017 -d mysql:5.7


wait for 10 sec
/usr/bin/mysql -uroot -proot@2017  -P3307 -h127.0.0.1 -e"set global super_read_only=OFF;show variables like 'super_read_only';"

Variable_name    Value
super_read_only    OFF


/usr/bin/mysql -uroot -proot@2017  -P3306 -h10.238.160.60 -e"grant all privileges on *.* to 'repl'@'%' identified by 'repl';"
/usr/bin/mysql -uroot -proot@2017  -P3307 -h10.238.160.60 -e"stop slave" 

/usr/bin/mysqldump -uroot -proot@2017 -P3306  -h127.0.0.1 --master-data=1 --force --all-databases > /root/dump.sql 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DBA之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值