基于docker环境搭建Mysql主从

news2024/11/26 5:25:33

文章目录

  • Mysql主从搭建
    • 1.1 Master搭建
    • 1.2 Slave搭建
    • 1.3 主从复制
  • 1.4 验证

Mysql主从搭建

​ mysql主从复制的原理将主数据库的增删改查等操作记录到二进制日志文件中,从库接收主库日志文件,根据最后一次更新的

起始位置,同步复制到从数据库中,使得主从数据库保持一致。

在这里插入图片描述

Binary log:主数据库的二进制日志;Relay log:从服务器的中继日志。

复制过程:

1,主数据库在每次事务完成前,将该操作记录到binlog日志文件中;

2,从数据库中有一个I/O线程,负责连接主数据库服务,并读取binlog日志变化,如果发现有新的变动,则将变动写入到relay-log,否则进入休眠状态;

3,从数据库中的SQL Thread读取中继日志,并串行执行SQL事件,使得从数据库与主数据库始,终保持一致。注意事项:涉及时间函数时,会出现数据不一致。原因是,复制过程的两次IO操作和网络、磁盘效率等问题势必导致时间戳不一致;涉及系统函数时,会出现不一致。

准备两台机器:

ip作用
192.168.43.107master
192.168.43.108slave

1.1 Master搭建

​ 登录到192.168.43.107服务器,并执行下面指令:

[root@localhost ~]# mkdir -p /data/mysql/master
[root@localhost ~]# vim my.cnf
[root@localhost ~]# vim Dockerfile

​ my.cnf文件的内容如下:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
#collection-server=utf8_unicode_ci
collation-server=utf8_general_ci
skip-character-set-client-handshake
skip-name-resolve
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
#[必须]启用二进制日志
log-bin=mysql-bin
#[必须]服务器唯一ID一般取IP最后一段,这里看情况分配
server-id=107
~                   

​ Dockerfile文件的内容如下:

FROM mysql:5.7.31
# 作者信息 
MAINTAINER mysql from date UTC by Asia/Shanghai "dream21th@dream21th.com"
ENV TZ Asia/Shanghai
COPY my.cnf /etc/mysql/
~                            

​ 构建镜像:

[root@localhost ~]# docker build --rm -t dream21th/mysqlmaster:5.7.31 .

​ 启动容器:

[root@localhost mysql]# docker run -p 3306:3306 --name dream21th-mysql-master -v /data/mysql/logs:/logs -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='!QAZ@WSX#EDC' -d dream21th/mysqlmaster:5.7.31

1.2 Slave搭建

​ 将my.cnf,Dockerfile两个文件复制到108服务器:

[root@localhost master]# scp my.cnf Dockerfile root:192.168.43.108/data/mysql/slave

​ 编辑my.cnf,将server-id改成108,然后执行构建镜像和启动容器:

构建镜像:

[root@localhost ~]# docker build --rm -t dream21th/mysqlmaster:5.7.31 .

​ 启动容器:

[root@localhost mysql]# docker run -p 3306:3306 --name dream21th-mysql-slave -v /data/mysql/logs:/logs -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='!QAZ@WSX#EDC' -d dream21th/mysqlmaster:5.7.31

1.3 主从复制

​ 在107服务器上面执行下面指令进到容器:

[root@localhost master]# docker exec -it dream21th-mysql-master bash

​ 进入容器后通过下面指令登录mysql:

root@3c4f257fb608:/# mysql -uroot -p
#创建一个数据同步用户
mysql> create user 'admin'@'%' identified by 'admin';
Query OK, 0 rows affected (0.00 sec)
# 授权
mysql> grant replication slave on *.* to 'admin'@'%'; 
Query OK, 0 rows affected (0.00 sec)
# 刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 查看master状态 file和position在做slave同步时要使用
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      749 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#查看binlog的参数
mysql> show global variables like 'binlog%';
+--------------------------------------------+--------------+
| Variable_name                              | Value        |
+--------------------------------------------+--------------+
| binlog_cache_size                          | 32768        |
| binlog_checksum                            | CRC32        |
| binlog_direct_non_transactional_updates    | OFF          |
| binlog_error_action                        | ABORT_SERVER |
| binlog_format                              | ROW          |
| binlog_group_commit_sync_delay             | 0            |
| binlog_group_commit_sync_no_delay_count    | 0            |
| binlog_gtid_simple_recovery                | ON           |
| binlog_max_flush_queue_time                | 0            |
| binlog_order_commits                       | ON           |
| binlog_row_image                           | FULL         |
| binlog_rows_query_log_events               | OFF          |
| binlog_stmt_cache_size                     | 32768        |
| binlog_transaction_dependency_history_size | 25000        |
| binlog_transaction_dependency_tracking     | COMMIT_ORDER |
+--------------------------------------------+--------------+
15 rows in set (0.00 sec)
#查看服务的参数 107是我们设置的id
mysql> show global variables like 'server%';
+----------------+--------------------------------------+
| Variable_name  | Value                                |
+----------------+--------------------------------------+
| server_id      | 107                                  |
| server_id_bits | 32                                   |
| server_uuid    | 1547eebe-f676-11ec-81e0-0242ac110002 |
+----------------+--------------------------------------+
3 rows in set (0.00 sec)

​ 执行完成上述的操作之后,在108服务器上进入到容器操作:

[root@localhost slave]# docker exec -it dream21th-mysql-slave bash
root@1da4bb80398e:/# mysql -uroot -p
# 设置同步数据
mysql> CHANGE MASTER TO master_host='192.168.43.107', master_user='admin', master_password='admin', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=749;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

#开启slave
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

# 查看slave的状态
mysql> show slave status;

1.4 验证

​ 用navicat登录107在上面建一个库和一张表,并插入一条数据:

在这里插入图片描述

​ 登录108,找到一样的数据,代表主从成功:

在这里插入图片描述

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

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

相关文章

简单的excel填充

简单的excel填充 先导入相关依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.16</version></dependency><dependency><groupId>org.apache.poi</groupId><…

UE5 使用代码开发UE设置,以及创建基于类的蓝图

此文章用于记录当前学习的重要的点。 基础设置 首先设置项目的偏好向&#xff0c;方便后续开发。 打开编辑器偏好设置 设置使用的代码编辑器 关闭实时代码编写功能。 关闭自动编译新添C类&#xff0c;我们直接在代码编辑器内编译 修改版权声明 修改打开资产时&#xff0…

【AI视野·今日Robot 机器人论文速览 第七十一期】Fri, 5 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Fri, 5 Jan 2024 Totally 11 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Machine Learning in Robotic Ultrasound Imaging: Challenges and Perspectives Authors Yuan Bi, Zhongliang Jiang, Felix D…

第2章 JavaScript基本语法

学习目标 了解什么是变量&#xff0c;能够说出变量的概念 掌握变量的命名规则&#xff0c;能够为变量命名 掌握变量的声明与赋值&#xff0c;能够声明变量并为其赋值 熟悉数据类型的分类&#xff0c;能够说出JavaScript中有哪些数据类型 掌握常用的基本数据类型&#xff0c…

Probabilistic Forecasting with Temporal Convolutional Neural Network

Abstract 我们提出了一种基于卷积神经网络&#xff08;CNN&#xff09;的概率预测框架&#xff0c;用于多个相关时间序列预测。该框架可用于估计参数和非参数设置下的概率密度。更具体地说&#xff0c;构建基于扩张因果卷积网络的堆叠残差块来捕获序列的时间依赖性。与表示学习…

用免费敏捷工具Leangoo领歌做敏捷需求管理

传统的瀑布工作模式使用详细的需求说明书来表达需求&#xff0c;需求人员负责做需求调研&#xff0c;根据调研情况编制详细的需求说明书&#xff0c;进行需求评审&#xff0c;评审之后签字确认交给研发团队设计开发。在这样的环境下&#xff0c;需求文档是信息传递的主体&#…

【C语言】一种状态超时阻塞循环查询的办法

【C语言】一种状态超时阻塞循环查询的办法 文章目录 【C语言】一种状态超时阻塞循环查询的办法1.方法12.方法21.方法1 static void wait_notify_async(notify_type_t notify_type) {static rt_tick_t exit_tick;exit_tick = rt_time_get_msec();lb_int32 notify_success = RT_F…

计算机网络实验(二):Wireshark网络协议分析

一、实验名称&#xff1a;Wireshark网络协议分析 二、实验原理 HTTP协议分析 1.超文本传输协议&#xff08;Hypertext Transfer Protocol, HTTP&#xff09;是万维网&#xff08;World Wide Web&#xff09;的传输机制&#xff0c;允许浏览器通过连接Web服务器浏览网页。目…

深入理解奥运会大数据架构方案

背景 某网作为某电视台在互联网上的大型门户入口&#xff0c;某一年成为某奥运会中国大陆地区的特权转播商&#xff0c;独家全程直播了某奥运会全部的赛事&#xff0c;积累了庞大稳定的用户群&#xff0c;这些用户在使用各类服务过程中产生了大量数据&#xff0c;对这些海量数…

CTF-PWN-沙箱逃脱-【seccomp和prtcl-2】

文章目录 沙箱逃脱prtcl题HITCON CTF 2017 Quals Impeccable Artifactflag文件对应prctl函数检查源码思路exp 沙箱逃脱prtcl题 HITCON CTF 2017 Quals Impeccable Artifact flag文件 此时的flag文件在本文件夹建一个即可 此时的我设置的flag为 对应prctl函数 第一条是禁止…

20240107查看Android11下移远的4G模块EC20在Firefly的AIO-3399J开发板跑通时的相关服务

20240107查看Android11下移远的4G模块EC20在Firefly的AIO-3399J开发板跑通时的相关服务 2024/1/7 11:24 缘起&#xff1a;友善之臂的SDK&#xff1a;rk3399-android-11-r20211216.tar.xz可以跑通EC20&#xff0c;但是Toybrick的不行&#xff01; 同样是Andrid11&#xff0c;因此…

Vue3-37-路由-组件内的路由守卫 onBeforeRouteLeave 和 onBeforeRouteUpdate

简介 组件内的路由守卫&#xff0c;实际上就是两个 API 方法。 他们与普通的守卫不同的是 &#xff1a; 他们是写在组件内的&#xff0c;在组件中监听路由的变化&#xff0c;不是全局的&#xff0c;比较灵活。 以下是两个 API 的功能说明&#xff1a;onBeforeRouteLeave() : 守…

centos7下升级openssh9.4p1及openssl1.1.1v版本

背景&#xff1a;客户服务器扫描出一些漏洞&#xff0c;发现和版本有关&#xff0c;漏洞最高的版本是9.3p2&#xff0c;所以我们安装一个openssh9.4p1版本及openssl1.1.1v版本 虽然我们进行了镜像备份&#xff0c;为了安全先安装telnet以防止升级失败无法通过ssh连接服务器 一…

LINE网页版使用方法(内含LINE网页版特点总结)

如果想要在电脑上使用LINE&#xff0c;但是又觉得下载客户端很累赘的话&#xff0c;LINE网页版是你最好的选择。但是LINE网页版相对于其他平台来说使用方式比较少。所以今天就来讲讲&#xff0c;我们有什么方式可以在电脑中使用LINE。 LINE网页版使用方法 1.需要使用Chrome浏览…

详细探讨mfc140.dll丢失的解决方法,并比较各种方法的优劣

mfc140.dll是Microsoft Foundation Class (MFC) 库中一个重要的DLL文件&#xff0c;它包含了多个执行程序使用的函数和资源。这个库通常用于开发Windows操作系统上的应用程序。但有时会发生mfc140.dll缺失或损坏的错误&#xff0c;导致一些依赖它的应用程序无法运行。今天的这篇…

Nginx 搭建可道云网盘

目录 1.安装php-fpm 2. 建站点根目录与配置 2.1 建站点根目录 2.2 配置 3. 搭建成功 1.安装php-fpm nginx 需要使用php 需要安装php-fpm yum install php-fpm php-mbstring php-mysqlnd php-gd -y 修改 www.conf 文件的配置29行和41行&#xff0c;将用户会让用户组改成n…

赋能直播平台:美颜SDK与动态贴纸技术详解

当下&#xff0c;美颜SDK与动态贴纸技术成为直播平台吸引用户、提升用户体验的关键利器。本文将深入探讨这两项技术在直播领域的应用&#xff0c;从技术原理到用户体验&#xff0c;为读者呈现一幅美颜与创意表情相结合的绚丽画面。 一、美颜SDK的技术原理与应用 美颜SDK作为直…

SSM框架学习笔记03 | AOP 事务

文章目录 一、AOP1.AOP简介2.AOP入门案例分析3.AOP工作流程4.AOP切入点表达式6.AOP通知获取数据 二、事务1. 事务简介2. 事务角色3. 事务相关配置4. 事务传播行为 一、AOP 1.AOP简介 AOP(Aspect Oriented Programming)面向切面编程&#xff0c;一种编程范式&#xff0c;指导开…

什么是SCADA?一文读懂SCADA系统

随着信息技术的高速发展&#xff0c;国产组态软件也迅速更新迭代&#xff0c;使得许多行业的过程控制都可以轻松使用SCADA系统的来管理和操作。SCADA系统对于工业组织至关重要&#xff0c;因为它们有助于提升生产效率&#xff0c;分析数据以做出更明智的决策&#xff0c;并传达…

【大数据】安装 Zookeeper 单机版

安装 Zookeeper 单机版 下面安装 Zookeeper&#xff0c;由于它是 Apache 的一个顶级项目&#xff0c;所以域名是 zookeeper.apache.org&#xff0c;所有 Apache 的顶级项目的官网都是以项目名 .apache.org 来命名的。 点击 Download 即可下载&#xff0c;这里我们选择的版本是 …