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

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

步骤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.lryc.cn/news/123391.html

相关文章:

  • 鸿蒙开发学习笔记1——真机运行hello world
  • Java数组,简简单单信手沾来~
  • 认识SourceTree
  • python之列表推导式
  • selenium自动化测试之搭建测试环境
  • 模拟实现消息队列(以 RabbitMQ 为蓝本)
  • WordPress更换域名后-后台无法进入,网站模版错乱,css失效,网页中图片不显示。完整解决方案(含宝塔设置)
  • 无法正确识别车牌(Python、OpenCv、Tesseract)
  • VSCODE[配置ssh免密远程登录]
  • Multi-object navigation in real environments using hybrid policies 论文阅读
  • 初始多线程
  • 论坛项目day3|开发社区首页
  • Server - 文字转语音 (Text to Speech) 的在线服务 TTSMaker
  • Python学习笔记_基础篇_数据类型之字符串
  • (二分查找) 11. 旋转数组的最小数字 ——【Leetcode每日一题】
  • docker 制作tomcat镜像
  • 年之年的选择,组装版
  • 英语词法——代词
  • 1475.商品折扣后的最终价格
  • php、 go 语言怎么结合构建高性能高并发商城。
  • ubuntu 部署 ChatGLM-6B 完整流程 模型量化 Nvidia
  • 【数据分享】2001-2022年我国省市县镇四级的逐月最高气温数据(无需转发/Shp/Excel格式)
  • 线段树-模板-区间查询-区间修改
  • 微服务架构和分布式架构的区别
  • Ajax-概念、Http协议、Ajax请求及其常见问题
  • react 09之状态管理工具1 redux+ react-thunk的使用实现跨组件状态管理与异步操作
  • opencv实战项目 手势识别-实现尺寸缩放效果
  • Netty对HPACK头部压缩的支持
  • C++:替换string中的字符
  • 【ChatGPT】自我救赎