docker hub mysql主从_Docker配置MySQL主从复制

Docker及MySQL配置

yum update

yum install docker -y

# 修改国内镜像仓库

vi /etc/docker/daemon.json

# 加 "registry-mirrors": ["http://hub-mirror.c.163.com"]

#启动

systemctl start docker

# 查看mysql 版本 https://hub.docker.com/_/mysql?tab=tags

docker search mysql

docker pull mysql:8.0.21

# 查看镜像

docker images

# 删除镜像

# docker rmi mysql:8.0.21

#生成容器

# --name mysql_master mysql_master就是容器的命名

#-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。

# 1234556是密码

docker run -itd --name mysql_master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

#查看容器

docker ps

#进入容器

docker exec -it mysql_master bash

# 基础操作 登陆mysql

mysql -uroot -p

# 退出容器

exit

主从复制

#先把上面mysql容器删除 再来一遍练练手

docker rm -f mysql_master

# 主从复制 配置文件目录

mkdir -p /docker/mysql/master/data

mkdir -p /docker/mysql/slave/data

vi /docker/mysql/master/my.cnf

[mysqld]

server-id=1   #任意自然数n,只要保证两台MySQL主机不重复就可以了。

log-bin=mysql-bin   #开启二进制日志 从服务根据日志同步

#auto_increment_increment=2   #步进值auto_imcrement。一般有n台主MySQL就填n

#auto_increment_offset=1   #起始值。一般填第n台主MySQL。此时为第一台主MySQL

#binlog-ignore=mysql   #忽略mysql库【我一般都不写】

#binlog-ignore=information_schema   #忽略information_schema库【我一般都不写】

#replicate-do-db=aa   #要同步的数据库,默认所有库

vi /docker/mysql/slave/my.cnf

[mysqld]

server-id=2   #任意自然数n,只要保证两台MySQL主机不重复就可以了。

桥连网络

# 为mysql容器创建专有桥接网络,以便固定mysql容器ip

docker network create --driver bridge --subnet 172.25.0.0/16 mysql_net

# 查看网络

docker network ls

0eea5c50a840efafdd0aab0f72e361a8.png

启动master

docker create --privileged=true --name mysql_master -v /docker/mysql/master/data:/var/lib/mysql -v /docker/mysql/master/my.cnf:/etc/mysql/conf.d/my.cnf -e MYSQL_ROOT_PASSWORD=root -e TZ=Asia/Shanghai --net mysql_net --ip 172.25.0.3 -p 3306:3306 mysql:8.0.21

docker create

--privileged=true #为容器挂载目录添加权限

--name mysql_master #容器名为mysqlmaster

-v /docker/mysql/master/data:/var/lib/mysql #集群配置集中/data/master 挂载到容器/var/lib/mysql

-v /docker/mysql/master/my.cnf:/etc/mysql/conf.d #配置集中/master 中master.cnf 挂载到 /etc/mysql/conf.d中设置启动

-e MYSQL_ROOT_PASSWORD=root #设置启动密码

--net mysql_net #指定容器连接网络

--ip 172.25.0.3 #指定容器使用ip

-p 3306:3306 mysql:8.0.12 #指定主机映射到容器端口, 即主机访问3306,容器端口为3306

启动slave

docker create --privileged=true --name mysql_slave -v /docker/mysql/slave/data:/var/lib/mysql -v /docker/mysql/slave/my.cnf:/etc/mysql/conf.d/my.cnf -e MYSQL_ROOT_PASSWORD=root -e TZ=Asia/Shanghai --net mysql_net --ip 172.25.0.4 -p 3307:3306 mysql:8.0.21

# 查看启动容器

docker ps -a

# 查看容器桥连

docker network inspect mysql_net

99f93567e56c4000daa6ea9f33e3b55b.png

登陆容器

# 到主

docker exec -it mysql_master /bin/bash

mysql -uroot -p

#查询master 的日志文件 以及位置

show master status;

085ba5163851ab0f18153899f4cc7dea.png

# 到从数据库 配置主

change master to

master_host='172.25.0.3', --master的ip 不能为127.0.0.1

master_user='root', --master的帐号密码

master_password='root',

master_log_file='mysql-bin.000003', --master 查询的file名 注意上面!

master_port=3306, --master 端口 坑!为容器端口 不是主机端口

master_log_pos=438; --日志文件位置 注意上面!

start slave;

show slave status;

3d42b60b837aa740c7b28584737890da.png

如此显示即为成功...

创建数据库 测试一下

4ec8bf98794e09f79ac89fb99b5f1377.png

恢复备份

# 恢复mysql备份 需要先将备份文件 放入容器.

# 备份命令 mysqldump -uroot -p123 ddd > /usr/app/ddd.sql

docker cp /path/back.tar.gz mysql_master:/back.tar.gz

docker exec -it mysql_master bash

tar xzvf /back.tar.gz

mysql -uroot -p

# 创建数据库 导入数据

create database ddd;

use ddd;

# 导入解压文件

source /back.mysql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值