docker安装mysql做主从复制

1.下载最新的mysql安装包

docker pull mysql

下载最新的安装包
在这里插入图片描述
输入

docker images  --查看是否下载成功

2.创建文件目录,挂载mysql文件

创建文件夹:data、conf、logs用于mysql数据库文件和日志文件以及配置文件挂载。
建议master和slave分开的

mkdir -p /java/docker/mysql/master/data
mkdir -p /java/docker/mysql/master/conf
mkdir -p /java/docker/mysql/master/logs
mkdir -p /java/docker/mysql/slave/data
mkdir -p /java/docker/mysql/slave/conf
mkdir -p /java/docker/mysql/slave/logs

在这里插入图片描述

cd  /java/docker/mysql/master/conf 

在conf下创建master.cnf文件

# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 
#
# The MySQL Community Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
 
[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock
 
[mysqld_safe]
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
nice        = 0
 
[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
lc-messages-dir = /usr/share/mysql
explicit_defaults_for_timestamp
 
log-bin = mysql-bin 
server-id = 1 
 
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address   = 127.0.0.1
 
 
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
 
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
 
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

再创建slave.cnf文件,放在slave的conf目录下,注意server-id不能一样

3.挂载配置文件

docker run --name mastermysql -v /java/docker/mysql/master/data:/var/lib/mysql -v /java/docker/mysql/master/conf:/etc/mysql/conf.d -v /java/docker/mysql/master/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=admin -p 5306:3306 -d mysql

docker run --name slavemysql -v /java/docker/mysql/slave/data:/var/lib/mysql -v /java/docker/mysql/slave/conf:/etc/mysql/conf.d -v /java/docker/mysql/slave/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=admin -p 5307:3306 -d mysql

解释下:-d 是后台守护进程运行mysql -p 是外部访问映射的端口 3306是docker容器默认的端口。和服务器端口无关
在这里插入图片描述
创建成功
在这里插入图片描述

4.进入主库master

docker exec -it 6265c9f58177 /bin/bash

-it 容器id --使用docker ps -a 查看容器id

mysql -uroot -padmin

在这里插入图片描述

CREATE USER 'chase'@'%' IDENTIFIED BY '123456';  创建一个用户

在这里插入图片描述

GRANT ALL ON *.* TO 'chase'@'%'; 授权

在这里插入图片描述
进入到mysql 命令show master status;查看部分信息。
在这里插入图片描述
File 和Position 后面做主从要用到

exit退出mysql,exit退出容器

docker exec -it 40a4f0d9abb7 /bin/bash
mysql -uroot -padmin
change master to master_host='45.243.86.142', master_port=5306,master_user='chase',master_password='chase', master_log_file='binlog.000002',master_log_pos=156;

master_host:主库的IP地址/服务器地址

master_port:主库的端口

master_user:主库开放出来的用户

master_password:用户的密码

master_log_file:主库的日志文件,二进制日志文件,进行同步的。就是上面show master status 里面的File

master_log_pos:上面show master status 里面的Position
在这里插入图片描述

start slave;
show slave status\G

在这里插入图片描述
然后测试,navicat连接两个数据库,在主库创建表,从库是否会同步
测试成功

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值