社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
# 拉取镜像5.7版本
$ docker pull mysql:5.7
# 新建需要挂载的文件夹或文件,docker中的mysql 中的数据存放目录可以去docker hub中搜索mysql,文档寻找
cd /usr/local
mkdir mysql
cd mysql
mkdir data
# 设置端口映射
$ vi /etc/sysconfig/iptables
# 添加3306端口
-A INPUT -p tcp --dport 3306 -j ACCEPT
# 重启iptables
$ systemctl restart iptables.service
# 启动(第一次)
# --name 设置名称
# -v 设置挂载
# -e 设置环境变量,MYSQL_ROOT_PASSWORD--设置密码
# --restart=on-failure:3 设置重启策略,这里设置的是非正常退出下,尝试重启3次
# -p 设置端口映射
# -d 后台运行
# 最后是image_name:image_tag
$ docker run --name myMysql -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --restart=on-failure:3 -p 3306:3306 -d mysql:5.7
# 以后启动
$ docker start CONTAINER_ID
# 结束
支持方式
作用
原理
必要条件
mysql主从复制存在的问题:
解决方法:
# 创建主库与从库,并将相应文件夹(配置文件所在的文件夹与data)挂载到宿主机上,分别对应宿主机的3306,3307端口
# 创建主库(mysql-master)
$ docker run --name mysql-master -v /usr/local/masterMysql/data:/var/lib/mysql -v /usr/local/masterMysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root --restart=on-failure:3 -p 3306:3306 -d mysql:5.7
# 创建从库(mysql-slave)
docker run --name mysql-slave -v /usr/local/slaveMysql/data:/var/lib/mysql -v /usr/local/slaveMysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root --restart=on-failure:3 -p 3307:3306 -d mysql:5.7
# 配置主库
# 进入主库所在的docker
$ docker exec -it CONTAINER_ID /bin/bash
# 安装vim
$ apt-get update
$ apt-get install vim
# 编辑my.cnf,如果不存在就新建一个
$ vim /etc/mysql/my.cnf
# 添加以下内容
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
# 重启mysql服务和其所在的容器
$ service mysql restart
$ docker start CONTAINER_ID
# 添加同步用户(在主库的命令行界面执行)
$ CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
$ GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
# 配置从库
# 进入从库所在的docker
$ docker exec -it CONTAINER_ID /bin/bash
# 安装vim
$ apt-get update
$ apt-get install vim
# 编辑my.cnf,如果不存在就新建一个
$ vim /etc/mysql/my.cnf
# 添加以下内容
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
# 重启mysql服务和其所在的容器
$ service mysql restart
$ docker start CONTAINER_ID
# 结束
# Master
# 进入master数据库的命令行界面,执行:
$ show master status;
显示如下内容:
File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master库不能做任何操作,否则将会引起状态变化,File和Position字段的值变化。
# Slave
# 进入slave数据库的命令行界面,执行:
$ change master to master_host='172.17.0.6', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000004', master_log_pos=609, master_connect_retry=30;
# 开启同步配置
$ start slave;
# 查看状态,查看SlaveIORunning 和 SlaveSQLRunning 是否都是yes,都是yes表明配置成功
$ show slave status;
#
在主库新建一个库,查看从库是否同步
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!