栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

docker安装mysql做主从复制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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


进入到mysql 命令show master status;查看部分信息。

File 和Position 后面做主从要用到

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

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


exit退出mysql,exit退出容器

docker exec -it 40a4f0d9abb7 /bin/bash
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 statusG


然后测试,navicat连接两个数据库,在主库创建表,从库是否会同步
测试成功

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/644819.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号