Docker搭建MySQL主从服务器

server/2025/3/19 19:36:57/

一、在主机上创建MySQL配置文件——my.cnf

master服务器配置文件路径:/data/docker/containers/mysql-cluster-master/conf.d/my.cnf

slave服务器配置文件路径: /data/docker/containers/mysql-cluster-master/conf.d/my.cnf

master服务配置文件内容

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in Redirect Notice

lower_case_table_names=1

default-time_zone='+8:00'

max_connections=1000

# open federated engine

federated

# [必须]启用二进制日志

log-bin=mysql-bin

# [必须]服务器唯一ID,默认是1,一般取IP最后一段,这里看情况分配

server-id=1

[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid

#

# include all files from the config directory

#

!includedir /etc/my.cnf.d

slave服务配置文件内容

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in Redirect Notice

lower_case_table_names=1

default-time_zone='+8:00'

max_connections=1000

# open federated engine

federated

# [必须]启用二进制日志

log-bin=mysql-bin

# [必须]服务器唯一ID,默认是1,一般取IP最后一段,这里看情况分配

server-id=2

[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid

#

# include all files from the config directory

#

!includedir /etc/my.cnf.d

二、从docker拉取mysql镜像,创建并启动MySQL主、从容器

master服务

docker run --name mysql-cluster-master \

               --restart always \

               -v /mnt/app/docker/containers/mysql-cluster-master/conf.d:/etc/mysql/conf.d \

               -p 3307:3306 \

               -e MYSQL_ROOT_PASSWORD=123456 \

               -d mysql

slave服务

docker run --name mysql-cluster-slave \

              --restart always \

              -v /mnt/app/docker/containers/mysql-cluster-slave/conf.d:/etc/mysql/conf.d \

              -p 3308:3306 \

              -e MYSQL_ROOT_PASSWORD=123456 \

              -d mysql

三、配置主服务器

1、使用mysql命令登录主服务器(可以有多种办法,此处使用docker exec命名方式)

1)进入主服务器所在的docker容器。在主机控制台执行以下命令:

      docker exec -it mysql-master bash

2)在主服务器docker容器bash执行以下命令:

       mysql -u root -p

        在提示符后输入密码

2、创建用户名、密码,并授权

      GRANT REPLICATION SLAVE ON *.* to 'bkuser'@'%' identified by ‘123456’;

3、查看主服务器状态,并记录下mysql-bin和pos的值

      执行命令:show master status;

      将显示如下界面:

四、配置从服务器

1、使用mysql命令登录从服务器(可以有多种办法,此处使用docker exec命名方式)

1)进入从服务器所在的docker容器。在主机控制台执行以下命令:

      docker exec -it mysql-master bash

2)在从服务器docker容器bash执行以下命令:

       mysql -u root -p

        在提示符后输入密码

2、执行以下MySQL命令(具体值根据实际情况而定)

change master to

       master_host='192.168.84.246',

       master_user='bkuser',

       master_log_file='mysql-bin.000003',

       master_log_pos=2487,

       master_port=3307,

       master_password='123456';

master_host:填写主机的IP(不可使用127.0.0.1或localhost)

master_user:三.2中新建的MySQL主服务器的用户

master_log_file:三.3中File的值

master_log_pos:三.3中Position的值

master_port:MySQL主服务器的端口号

master_password:三.2中新建的MySQL主服务器用户的密码

3、启动MySQL从服务器

      执行MySQL命令:

      start slave;

4、查看从服务器状态

      执行MySQL命令:

      show slave status\G

      如果看以下三项的值与表中一致,则说明已经成功。

……

Slave_IO_State: Waiting for master to send event

Slave_IO_Running: Yes    //此状态必须YES

Slave_SQL_Running: Yes     //此状态必须YES

…...

五、测试

      在主服务器上创建一个新库(Database or Schema),然后进入该库创建一张新表,然后,进入从服务器查看是否存在新库和新表。


http://www.ppmy.cn/server/176329.html

相关文章

面试提问:数仓设计不分层可以吗?

目录 一、数据仓库分层的目的 二、不分层的适用场景 1. 小型团队或简单业务 2. 实时数据流处理 3. 探索性分析或临时需求 4. 现代架构的演进 三、不分层的潜在问题 1. 数据冗余与一致性 2. 维护复杂度 3. 性能瓶颈 4. 数据质量风险 四、折中方案:轻量级分…

【html中文本超出元素的宽度后显示省略号...】

在html中设置元素的宽度&#xff0c;然后元素中的文本不允许换行&#xff0c;超出元素宽度后强制显示省略号 <div class"item">91HTTP企业增值税专用发票&#xff08;电子发票&#xff09;开具教程 </div><style> .item { width: 290px;overflow:…

AI小白的第六天:必要的数学知识(一)

在学习的过程中&#xff0c;不管是上代码还是理论学习&#xff0c;其中都掺杂了一些数学知识。俗话说“磨刀不误砍柴工”&#xff0c;而我已经“误了砍柴功”了&#xff0c;现在变成了“亡羊补牢&#xff0c;为时不晚”。 线性代数 线性代数是数学的一个分支&#xff0c;主要…

【原创】使用ElasticSearch存储向量实现大模型RAG

一、概述 检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;RAG&#xff09;已成为大型语言模型&#xff08;LLM&#xff09;应用的重要架构&#xff0c;通过结合外部知识库来增强模型的回答能力&#xff0c;特别是在处理专业领域知识、最新信息或企业私有数…

【源码阅读】olmocr中的prompts

目录 一、PDF转换为训练数据二、使用微调模型三、比较差异总结 一、PDF转换为训练数据 让 ChatGPT-4 将文档&#xff08;如 PDF 文件&#xff09;转换为结构化的“银级”训练数据&#xff08;silver training data&#xff09; # This is the prompt we use for getting chat …

宇树科技纯技能要求总结

一、嵌入式开发与硬件设计 核心技能 嵌入式开发&#xff1a; 精通C/C&#xff0c;熟悉STM32、ARM开发熟悉Linux BSP开发及驱动框架&#xff08;SPI/UART/USB/FLASH/Camera/GPS/LCD&#xff09;掌握主流平台&#xff08;英伟达、全志、瑞芯微等&#xff09; 硬件设计&#xff1a…

C# 建造者模式(Builder Pattern)详细讲解

一、什么是建造者模式&#xff1f; 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它通过将一个复杂对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。这个模式主要应用于那些构建过程复杂且涉及多个步骤的…

【数据结构】二叉搜索树、平衡搜索树、红黑树

二叉搜索树&#xff08;Binary Search Tree&#xff09; 二叉搜索树是一种特殊的二叉树&#xff0c;它用来快速搜索某个值&#xff0c;对于每个节点都应该满足以下条件&#xff1a; 若该节点有左子树&#xff0c;那么左子树中所有节点的值都应该小于该节点的值。若该节点有右…