Docker学习之路【八】安装主从复制MYSQL8

2024-08-30 10:36

本文主要是介绍Docker学习之路【八】安装主从复制MYSQL8,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

拉取MySQL镜像

#拉取MySQL镜像
docker pull mysql:8.0.37

创建存储目录

#创建数据存储目录
mkdir -p /docker/mysql/master/data
#创建日志目录
mkdir -p /docker/mysql/master/logs
#创建配置文件目录
mkdir -p /docker/mysql/master/conf

运行容器

docker run -p 3340:3306 --name mysql_master --privileged=true \
-v /docker/mysql/master/conf:/etc/mysql/conf.d \
-v /docker/mysql/master/logs:/var/log/mysql \
-v /docker/mysql/master/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.37 --init-connect="SET collation_connection=utf8mb4_0900_ai_ci" --init-connect="SET NAMES utf8mb4" --skip-character-set-client-handshake 

进入容器

docker exec -it mysql_master /bin/bash
mysql -uroot -p
#输入密码123456
#创建用于同步的数据库
create database db01;

配置远程连接(对外连接的)

# 在MySQL下执行
use mysql;
# 创建对外访问的用户和权限
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'slave'@'%' WITH GRANT OPTION;
#修改认证方式
alter user 'slave'@'%' identified with mysql_native_password by '123456';
FLUSH PRIVILEGES;
# 退出
exit;

创建自定义的配置文件

cd /docker/mysql/master/conf
touch my.cnf
vim my.cnf

my.cnf文件内容

[client]
# mysql客户端默认字符集
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
# 跳过密码登录
#skip-grant-tables
#bind-address = 127.0.0.1
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
# mysql服务端默认字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake
# datadir=/var/lib/mysql  # 主服务器唯一ID
server-id=1
# 设置不要复制的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 设置需要复制的数据库(先创建好)
binlog-do-db=db01
# 启用二进制日志,日志的存放地址
log-bin=/var/lib/mysql/mysql-bin
# 主机,1 只读 0 读写(默认是0)
read-only=0
# 设置logbin格式 有3种格式 
# 默认 STATEMENT(函数支持不好) 默认的 ROW(行模式大量修改效率不行,但支持存储引擎) MIXED (综合,推荐)
binlog_format=mixed
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
# 二进制日志过期清理时间,默认是0(不自动清理)
expire_logs_days=7
# 单个二进制日志大小
max_binlog_size=200M
# 设置每隔多少次事务提交操作,将这些操作写入二进制日志文件
sync_binlog=1
# 使用mysql_native_password插件的认证
# default_authentication_plugin=mysql_native_password

重启容器

docker restart mysql_master
# 需要记录一下File、Position
show master status;
#查询结果
mysql> show master status;
+------------------+----------+--------------+---------------------------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                            | Executed_Gtid_Set |
+------------------+----------+--------------+---------------------------------------------+-------------------+
| mysql-bin.000002 |      730 | db01         | mysql,information_schema,performance_schema |                   |
+------------------+----------+--------------+---------------------------------------------+-------------------+
1 row in set (0.00 sec)

配置从数据库节点

#创建数据目录
mkdir -p /docker/mysql/slave/data
#创建日志目录
mkdir -p /docker/mysql/slave/logs
#创建配置文件目录
mkdir -p /docker/mysql/slave/conf
#创建自定义的配置文件
cd /docker/mysql/slave/conf
touch my.cnf
vim my.cnf

my.cnf文件内容

[client]
# mysql客户端默认字符集
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
# 跳过密码登录
#skip-grant-tables
#bind-address = 127.0.0.1
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
# mysql服务端默认字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake
# datadir=/var/lib/mysql  # 从服务器唯一ID
server-id = 2  
# 开启中继日志
relay-log=mysql-relay
# 从机,1 只读 0 读写(默认是0)
read-only=1
# 启用二进制日志,日志的存放地址,如果从机变成主机可以继续使用bin日志
# log-bin=mysql-slave-bin
# 使用mysql_native_password插件的认证
# default_authentiction_plugin=mysql_native_password

运行容器

docker run -p 3341:3306 --name mysql_slave --privileged=true \
-v /docker/mysql/slave/conf:/etc/mysql/conf.d \
-v /docker/mysql/slave/logs:/var/log/mysql \
-v /docker/mysql/slave/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.37 --init-connect="SET collation_connection=utf8mb4_0900_ai_ci" --init-connect="SET NAMES utf8mb4" --skip-character-set-client-handshake 

进入容器

docker ps -a
docker exec -it mysql_slave /bin/bash
# 打开MySQL,输入密码
mysql -uroot -p
# 创建数据库
create database db01;

设置同步信息

CHANGE MASTER TO MASTER_HOST='ip地址',
MASTER_PORT=3340,
MASTER_USER='slave',MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_CONNECT_RETRY=30,
MASTER_LOG_POS=730;

开始同步

start slave;
show slave status \G;  # 检查状态
# 如果结果下面的字段为Yes 代表配置成功
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes

这篇关于Docker学习之路【八】安装主从复制MYSQL8的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1120577

相关文章

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

如何在pycharm安装torch包

《如何在pycharm安装torch包》:本文主要介绍如何在pycharm安装torch包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录在pycharm安装torch包适http://www.chinasem.cn配于我电脑的指令为适用的torch包为总结在p

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文