当前位置: 首页 > news >正文

Docker搭建MySQL主从服务器

一、在主机上创建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),然后进入该库创建一张新表,然后,进入从服务器查看是否存在新库和新表。

相关文章:

  • 电商无人直播防封指南:三要素构建智能防护(场景切换/实时互动/自动审核)
  • JavaScript日期区间计算
  • Docker换源加速(更换镜像源)详细教程(2025.3最新可用镜像,全网最详细)
  • Using SAP S4hana An Introduction for Business Users
  • 【机器学习-回归算法】
  • 宝石PDF,全新 PC 版本,全部免费
  • 本专栏开栏通知相关申明
  • 【电脑技巧】剪切板增强工具Ditto(详细介绍)
  • SvelteKit 最新中文文档教程(5)—— 页面选项
  • 在使用mybatis时遇到枚举的相关问题和解决
  • ngx_http_core_srv_conf_t
  • 详解c++的编译过程,如何从源文件到可执行文件到
  • 每天五分钟深度学习框架pytorch:基于pytorch搭建循环神经网络RNN
  • 自然梯度下降公式解析
  • java生成一个可以下载的word文件
  • 【Spring】循环依赖
  • 【最新版】智慧小区物业管理小程序源码+uniapp全开源
  • PLC控制柜在技术创新驱动中功能演进 尤劲恩科技
  • C++20 线程协调类:从入门到精通
  • 大模型知识补充
  • 成都警方通报:8岁男孩落水父母下水施救,父亲遇难
  • 2025上海科技节本周六启幕,机器人和科学家同走AI科学红毯
  • 撤制镇如何突破困境?欢迎订阅《澎湃城市报告》第23期
  • 巴西总统卢拉抵达北京
  • 东方红资管官宣:41岁原国信资管董事长成飞出任新总经理
  • 视频丨习近平同普京在主观礼台出席红场阅兵式