当前位置:网站首页>docker-mysql8-主从
docker-mysql8-主从
2022-06-24 19:41:00 【王道长的编程之路】
一、准备官方镜像
官方docker 镜像 https://hub.docker.com/_/mysql
docker pull mysql:latest
# 创建mysql网络
docker network create mysql-net --subnet 172.1.2.0/24
docker volume rm $(docker volume list |awk '{if(NR>0) print $2}')
主从规划
| role | ip | port | 复制账号 | password |
|---|---|---|---|---|
| master | 172.1.2.2 | 3306 | Slave | slave |
| slave | 172.1.2.3 | 3307 | - | - |
二、准备配置文件
cd ~
mkdir mysql mysql/master mysql/slave
cd mysql
# master 配置文件
echo "[mysqld] server-id=1 log-bin=mysql-bin" >> master/mysql.cnf
# slave 配置文件
echo "[mysqld] server-id=2 relay_log = /usr/local/mysql/data/mysql-relay-bin relay_log-index = /usr/local/mysql/data/mysql-relay-bin.index log_slave_updates = 1 read_only=1" >> slave/mysql.cnf
三、主从配置
步骤:
- 修改主从的mysql.cnf配置文件
- 主从mysql服务重启
- 主从机防火墙关闭
- 主机上建立授权的slave登陆账号
- 从机上配置master的信息
3.1 maste 配置
docker run --network mysql-net --name master -p 3306:3306 --ip 172.1.2.3 -e MYSQL_ROOT_PASSWORD=mysecret -d mysql:latest
# 创建slave用户,并配置权限
CREATE USER 'slave'@'172.1.2.%' IDENTIFIED WITH mysql_native_password BY 'slave';
select user,host,plugin from mysql.user;
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'172.1.2.%';
# mysql master配置 mysql.cnf
docker cp master/mysql.cnf master:/etc/mysql/conf.d/mysql.cnf
# 修改配置之后,一定要重启
docker restart master
# 验证binlog文件是否开启
show global variables like '%log_bin%';
备注:
[mysqld]
server-id= 1 -- 主服务器的唯一id
log-bin=mysql-bin --启动二进制日志文件
binlog-ignore-db=mysql --设置忽略的数据库(可设置多个)
binlog-do-db=dbname --需要复制的主数据库名
binlog_format=STATEMENT -- 设置binlog的日志格式
建立slave节点的登陆账号权限
--在主机MySQL里执行授权命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123123';
--查询master的状态
show master status;
--记录下file和position值,并停止master的对外服务,防止主服务器状态值发生变化
3.2 slave 配置
docker run --network mysql-net --name slave -p 3307:3306 --ip 172.1.2.4 -e MYSQL_ROOT_PASSWORD=mysecret -d mysql:latest
# mysql slave配置 mysql.cnf
docker cp slave/mysql.cnf slave:/etc/mysql/conf.d/mysql.cnf
# 修改配置之后,一定要重启
docker restart slave
# 指定主节点ip,端口,用户,并配置主从
change master to master_host='172.1.2.3',master_port=3306,master_user='slave',master_password='slave';
# 或部分复制
change master to master_host='192.168.81.132',master_port=3306,master_user='slave',master_password='slave',master_log_file='mysql- bin.000002',master_log_pos=155;
start slave;
#检测
show slave status;
备注:
[mysqld]
server-id=2 -- 从服务器的唯一id
relay-log=mysql-replay -- 启用中继日志
从机配置主机节点信息
change master to master_host="主机ip地址“;
master_user="slave"
master_password="123123"
master_log_file="mysql-bin.具体数字"
master_log_pos="具体值“;
--启动从服务器的复制功能
start slave;
--查看从服务器状态
show slave status\G;
--只有slave_io_running和slave_sql_running同为yes才表示配置成功
额外信息:
--停止从服务器复制功能
stop slave;
--重新配置主从
reset master;
四、双主配置
4.1 master配置
4.1.1 master1配置
#vim /etc/my.cnf
server-id=1 #主服务器唯一ID
log-bin=mysql-bin #启用二进制日志
binlog-ignore-db=mysql # 设置不要复制的数据库(可设多个)
binlog-ignore-db=information_schema
binlog-do-db=需复制的数据库名 #设置需要复制的数据库
binlog_format=STATEMENT #设置logbin格式
# 作为从数据库时,写操作也要更新二进制日志文件
log-slave-updates #表自增长字段每次递增的量,指自增字段起始值,默认值1,取值范围是1..65535
auto-increment-increment=2
# 表自增长字段从哪个数开始,指字段一次递增多少,取值范围是1..65535
auto-increment-offset=1
4.1.2 master2配置
#vim /etc/my.cnf
server-id=3 #主服务器唯一ID
log-bin=mysql-bin #启用二进制日志
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema #设置需要复制的数据库
binlog-do-db=需复制的主库名 #设置logbin格式
binlog_format=STATEMENT
# 在作为从数据库时,有写入操作也要更新二进制日志文件
log-slave-updates #表自增字段每次递增的量,指自增字段的起始值,默认1,取值范围是1..65535
auto-increment-increment=2
# 表自增长字段从哪个数开始,指字段一次递增多少,取值范围是1..65535
auto-increment-offset=2
4.2 双从配置
4.2.1 slave1配置
#vim /etc/my.cnf
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
双主机、双从机重启 mysql 服务
主机从机都关闭防火墙
在两台主机上建立帐户并授权 slave
4.3 主从授权
4.3.1 双主授权
-- 在主机MySQL里执行授权命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123123'; -- 查询Master1的状态
show master status;
-- 查询Master2的状态 show master status;
-- 分别记录下File和Position的值
-- 执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
4.3.2 双从授权
Slava1 复制 Master1,Slava2 复制 Master2
-- slave1、slave2
CHANGE MASTER TO MASTER_HOST='主机的IP', MASTER_USER='slave',
MASTER_PASSWORD='123123', MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值;
-- 启动两台从机的复制功能
start slave;
-- 查看从服务器状态
show slave status\G;
#Slava1的复制Master1
#下面两个参数都是Yes,则说明主从配置成功!
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
4.4 主主复制
-- master1、master2
CHANGE MASTER TO MASTER_HOST='主机2的IP',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值;
-- master2
CHANGE MASTER TO MASTER_HOST='主机1的IP',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.具体数字',
MASTER_LOG_POS=具体值;
fen分别启动两台主服务器复制功能
start slave;
-- 查看备库状态
show slave status \G;
#下面两个参数都是Yes,则说明主从配置成功!
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
边栏推荐
- Research and investment strategy report on China's nano silver wire conductive film industry (2022 Edition)
- China solar window market trend report, technical dynamic innovation and market forecast
- Second IPO of Huafang group: grown up in Zanthoxylum bungeanum, trapped in Zanthoxylum bungeanum
- 2022年高处安装、维护、拆除考试模拟100题及模拟考试
- How to integrate Huawei cloud function services in fluent
- O (n) complexity hand tear sorting interview questions | an article will help you understand counting sorting
- Analyze the implementation process of oauth2 distributed authentication and authorization based on the source code
- Memory alignment of structures
- Docker installation redis- simple without pit
- EPICS记录参考2--EPICS过程数据库概念
猜你喜欢

2022 safety officer-a certificate examination questions and answers

shopee开店入驻流水如何提交?

大厂面试必问:如何解决TCP可靠传输问题?8张图带你详细学习

「ARM 架构」是一种怎样的处理器架构?

03_SpingBoot 核心配置文件

JMM 最最最核心的概念:Happens-before 原则

07_SpingBoot 实现 RESTful 风格

Spark 离线开发框架设计与实现

See how sparksql supports enterprise data warehouse

High level application of SQL statements in MySQL database (I)
随机推荐
vulnhub DC: 2
【ROS玩转Turtlesim小海龟】
[text data mining] Chinese named entity recognition: HMM model +bilstm_ CRF model (pytoch) [research and experimental analysis]
Leetcode: push domino (domino simulation)
上新了,华为云开天aPaaS
Cases of addition, deletion, modification and search of C # learning for two years and C # import and export (de duplication)
2022安全员-B证考试题库及答案
01_SpingBoot 框架入门
O (n) complexity hand tear sorting interview questions | an article will help you understand counting sorting
2022 safety officer-a certificate examination questions and answers
源码阅读 | OpenMesh读取文本格式stl的过程
【文本数据挖掘】中文命名实体识别:HMM模型+BiLSTM_CRF模型(Pytorch)【调研与实验分析】
大厂面试必问:如何解决TCP可靠传输问题?8张图带你详细学习
02_SpingBoot 入门案例
Cat write multiline content to file
[postgraduate entrance examination English] prepare for 2023, learn list8 words
[QT] QT event handling
Introduction to machine learning compilation course learning notes lesson 1 overview of machine learning compilation
03_SpingBoot 核心配置文件
Talk about GC mechanism often asked in interview