mysql_docker主从复制_实战_binlog混合模式_天座著

news2024/10/7 16:26:38

步骤1:拉取镜像

docker pull mariadb:latest

步骤2.1:创建两个文件夹用于放置挂载mysql的my.cnf

/tianzuomysqlconf/master

/tianzuomysqlconf/slave

mkdir /tianzuomysqlconf

cd  /tianzuomysqlconf

mkdir master

mkdir slave

步骤2.2:创建一份my.cnf到步骤2中的文件夹。

#创建一个自定义的 my.cnf 文件:在本地主机上创建一个新的 my.cnf 文件,你可以使用任何文本编辑器进行编辑。确保按照 MariaDB 文档提供的配置选项进行修改

# 新的my.cnf文件内容可以为空。在MySQL中,my.cnf是配置文件,用于配置数据库服务器的各种参数和设置。如果你没有特定的需求或者不需要修改任何配置参数,那么新的my.cnf文件可以保持为空。在这种情况下,MySQL将使用默认的配置参数来启动和运行。但请注意,如果你需要自定义配置,确保将所需的配置项添加到my.cnf文件中,以便按照你的要求进行设置。

cd  /tianzuomysqlconf/master

touch my.cnf

cp my.cnf /tianzuomysqlconf/slave

步骤3:创建两个mysql容器,并使用/etc/mysql/conf.d/ 目录挂载my.cnf文件。

#分号可一起执行。

docker run -p 3309:3306 --name tianzuo_mysql_test_master -d -e MARIADB_ROOT_PASSWORD=STZ1024 -v /tianzuomysqlconf/master/my.cnf:/etc/mysql/conf.d/my.cnf mariadb;docker run -p 3310:3306 --name tianzuo_mysql_test_slave -d -e MARIADB_ROOT_PASSWORD=STZ1024 -v /tianzuomysqlconf/slave/my.cnf:/etc/mysql/conf.d/my.cnf mariadb

步骤3-error:如果过程中有操作失误,想要删除容器。

docker rm -f tianzuo_mysql_test_master;docker rm -f tianzuo_mysql_test_slave

步骤4:开始配置MySQL主从复制(binlog混合模式)

步骤4-1:配置主数据库(Master):

打开主数据库的配置文件my.cnf(/tianzuomysqlconf/master/my.cnf)。

vi /tianzuomysqlconf/master/my.cnf

按下键盘字母:i键

添加以下配置项:

[mysqld]

server-id = 1

log_bin = mysql-bin

binlog_format = MIXED

esc :wq

保存并关闭配置文件。

重启主数据库。

docker restart  tianzuo_mysql_test_master

步骤4-2:配置从数据库(Slave):

打开从数据库的配置文件my.cnf(/tianzuomysqlconf/slave/my.cnf)。

vi /tianzuomysqlconf/slave/my.cnf

按下键盘字母:i键

添加以下配置项:

[mysqld] 

server-id = 2

relay_log = relay-log

log_slave_updates = 1

保存并关闭配置文件。

重启从数据库。

docker restart  tianzuo_mysql_test_slave

步骤4-3:在主数据库中创建用于复制的账户

登录主数据库的命令行或图形化界面。

docker exec -it tianzuo_mysql_test_master bash

mysql -h localhost -P 3306 -u root -p"STZ1024"

执行以下SQL语句:

CREATE USER 'replication'@'%' IDENTIFIED BY 'STZ1024';GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

FLUSH PRIVILEGES;

步骤4-4:获取主数据库的二进制日志位置

在主数据库的命令行或图形化界面执行以下SQL语句:

SHOW MASTER STATUS;

记下输出结果中的File和Position字段的值,将其用于后续步骤。

步骤4-5:配置从数据库的复制信息

登录从数据库的命令行或图形化界面。

docker exec -it tianzuo_mysql_test_slave bash

mysql -h localhost -P 3306 -u root -p"STZ1024"

执行以下SQL语句,将主数据库的信息配置到从数据库:

CHANGE MASTER TO

MASTER_HOST = '172.17.0.1',  

MASTER_PORT = 3309,

MASTER_USER = 'replication',

MASTER_PASSWORD = 'STZ1024',

MASTER_LOG_FILE = 'mysql-bin.000001',

MASTER_LOG_POS = 771;

备注:172.17.0.1是宿主机的ip,各位看官自行替换。

步骤4-6:启动从数据库的复制进程:

在从库中执行以下SQL语句:

START SLAVE;

步骤4-7:检查主从复制状态

在从数据库的命令行或图形化界面执行以下SQL语句:

SHOW SLAVE STATUS\G;

检查输出结果中的Slave_IO_Running和Slave_SQL_Running字段是否都为"YES",表示主从复制已经成功建立。

Slave_IO_Running反映了复制进程中I/O线程的状态。当其值为"YES"时,表示I/O线程正在正常运行,能够从主数据库接收复制日志文件(binlog)。

Slave_SQL_Running反映了复制进程中SQL线程的状态。当其值为"YES"时,表示SQL线程正在正常运行,能够将接收到的复制日志应用到备份数据库。

步骤4-error:如果需要重新配置从数据的复制信息,先停止从数据库的复制进程:

在从库中执行以下SQL语句:

STOP SLAVE;

再进行授权

CHANGE MASTER TO

MASTER_HOST = '172.17.0.1',  

MASTER_PORT = 3309,

MASTER_USER = 'replication',

MASTER_PASSWORD = 'STZ1024',

MASTER_LOG_FILE = 'mysql-bin.000001',

MASTER_LOG_POS = 771;

再回到步骤4-6

START SLAVE;

步骤5-验证:

步骤5-1 利用navicat建立两个连接;

步骤5-2 尝试在主库中创建一个库,看看从库会不会自动生成。

重新建立3310连接后,从库同步成功。速度贼快。至此验证成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/848376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ssh 连接断开,正在执行的shell脚本也被中断了

背景 最近在训练chatGLM,一次训练经常要花掉近2个小时,但是由于网络不稳定,经常ssh莫名的断开,导致训练不得不重新开启,这就很浪费时间了 解决方案 下面教大家一种在后台执行命令的方案,即使你ssh连接断…

层状介质一维大地电磁数值模拟

层状介质一维大地电磁数值模拟 前言 大地电磁测深法( MT)是根据电磁感应原理研究天然场源在地下激励产生的交变电场或者磁场,通过地表观测到的电磁场或者通过电磁场计算出视电阻率或者相位等量来进行地下构造研究的一种电磁方法。由于它不需…

★动态规划(DP算法)详解

什么是动态规划:动态规划_百度百科 内容太多了不作介绍,重点部分是无后效性,重叠子问题,最优子结构。 问S->P1和S->P2有多少种路径数,毫无疑问可以先从S开始深搜两次,S->P1和S->P2找出所有路…

【Linux】深入理解进程概念

个人主页:🍝在肯德基吃麻辣烫 我的gitee:Linux仓库 个人专栏:Linux专栏 分享一句喜欢的话:热烈的火焰,冰封在最沉默的火山深处 文章目录 前言浅谈进程概念1. 进程和操作系统的联系2.描述进程的对象——PCB …

MongoDB:Linux环境全套安装指南

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: MongoDB:Linux环境全套安装指南 ⏱️ 创作时间&#xff1a…

Hybrid App 可以从哪些技术路径实现性能优化

说到 Hybrid App(混合应用)大家都不陌生,因为这种开发模式大行其道发展的这些年取代了很多原生和 Web 应用,为什么大家对这种「Native HTML5」的开发模式额外偏爱呢? 因为一方面在一定程度上兼顾了原生应用的优质体验…

compile_and_runtime_not_namespaced_r_class_jar\debug\R.jar: 另一个程序正在使用

问题情况: run App的时候,提示该文件被占用 想要clean Project,还是提示该文件被占用,这个文件和连带的文件夹都无法被删除。 方法1: AndroidStudio下方的terminal(没有这个窗口的话,从上面的…

Java源码-Context源码解析

您好,我们来一起了解一下Java源码中的Context源码解析。 Context是Android中的一个重要的概念,在Android开发中可以用来获取应用程序的各种信息,如Activity、Service、Application等等。在Android中,Context是一个抽象类&#xf…

虚拟机centos7配置网络

虚拟机centos7配置网络 centos7克隆之后需要配置网络才能联网。 实验环境: VMware Workstation Pro 16CentOS 7系统虚拟机主机Windows 11系统 1.VMware网络模式设置为NAT模式 虚拟机–设置–网络适配器– ​​ ‍ 2.查看虚拟机 子网IP和网关IP 编辑–虚拟网…

AcWing 129:火车进栈 ← DFS

【题目来源】https://www.acwing.com/problem/content/131/【题目描述】 这里有 n 列火车将要进站再出站,但是,每列火车只有 1 节,那就是车头。 这 n 列火车按 1 到 n 的顺序从东方左转进站,这个车站是南北方向的,它虽…

【vue3】基础知识点-组合式api-recative和ref函数

学习vue3,都会从基础知识点学起。了解setup函数,ref,recative,watch、computed、pinia等如何使用 今天说vue3组合式api,响应式函数recative和ref函数 recative函数:接收对象类型数据的参数传入&#xff0…

激光雷达测距和摄像头联合棋盘格反射率标定板

目前,激光雷达不仅在军事上起到了重要的作用,而且发挥其测程大、精度高、反应速度快、可靠性高等优点,在商业领域应用越来越广,发展越来越迅速,具有较高的实用价值和商业价值。车载三维成像激光雷达采用脉冲式测量原理…

【PCL-6】PCL基于凹凸型的分割算法

凹凸型分割算法适用于颜色类似、棱角分明的物体场景分割。 算法流程&#xff1a; 1、基于超体聚类的过分割&#xff1b; 2、在超体聚类的基础上再聚类。 示例代码&#xff1a; //超体聚类LCCP //#include "stdafx.h"#include <stdlib.h> #include <cm…

Linux 安装软件的几种方式

哈喽大家好&#xff0c;我是咸鱼 相信小伙伴们都知道在 Linux 中&#xff0c;安装软件一般有三种方式 yum 安装rpm 安装源码编译安装 咸鱼平时三种安装方式都会用&#xff0c;但是具体原理和区别却没有去深入了解过 结果上周部门刚来的新人问我这几种安装方式的时候&#x…

连续四年入选!三项荣耀!博云科技强势上榜Gartner ICT技术成熟度曲线

日&#xff0c;全球知名咨询公司Gartner发布了2023年度的《中国ICT技术成熟度曲线》&#xff08;《Hype Cycle for ICT in China, 2023》&#xff0c;以下简称“报告”&#xff09;。令人瞩目的是&#xff0c;博云科技在报告中荣获三项殊荣&#xff0c;入选云原生计算&#xff…

【linux-keepalive】keepalive避免单点故障,高可用配置

keepalive: [rootproxy ~]# yum install -y keepalived [rootproxy ~]# vim /etc/keepalived/keepalived.conf global_defs {router_id proxy1 //设置路由ID号vrrp_iptables //不添加任何防火墙规则 } vrrp_instance V…

HTTP Status 404 – 未找到

这HTTP Status 404 – 未找到 我的问题就是啥呢 这里已经提示了原因有两个&#xff1a; ①&#xff1a;找不到 ②&#xff1a;资源被占用 我的问题就是找不到&#xff0c;找不到的问题也就说可能是文件路径不对&#xff0c;也可能是文件名不对&#xff0c;仔细检查两遍 apac…

Visual Studio实用调试技巧---让你成为高端的程序员

​ &#x1f341; 博客主页:江池俊的博客 &#x1f4a1;代码仓库&#xff1a;江池俊的代码仓库 &#x1f3aa; 社区&#xff1a;GeekHub &#x1f341; 如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏&#x1f31f; 三连支持一下博主&#x1f49e; 文章目录…

链式二叉树统计结点个数的方法和bug

方法一&#xff1a; 分治&#xff1a;分而治之 int BTreeSize1(BTNode* root) {if (root NULL) return 0;else return BTreeSize(root->left)BTreeSize(root->right)1; } 方法二&#xff1a; 遍历计数&#xff1a;设置一个计数器&#xff0c;对二叉树正常访问&#…

Spring 是如何解决循环依赖问题的?

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 例如&#xff1a;项目场景&#xff1a;示例:通过蓝牙芯片(HC-05)与手机 APP 通信&#xff0c;每隔 5s 传输一批传感器数据(不是很大) 问题描述 我们都知道&#xff0c;如果在代码中&#xff0c;将两个…