Mysql 主从复制

2023-11-05

简述

start slave;
show slave status\G
stop slave;
reset slave; # delete relay log, create relay log.
reset master; # delete bin log, restart.

单表超过 500 万行 或 容量超过 2GB, 才推荐分库分表. 如果预计三年后的数据量根本达不到这个级别, 请不要在创建表时就分库分表

vim /pivot/mysql/master/conf/my.cnf
[mysqld]
# 服务器唯一id,默认值1
server-id=1
# 设置日志格式,默认值ROW
binlog_format=STATEMENT
# 二进制日志名,默认binlog
# log-bin=binlog
# 设置需要复制的数据库,默认复制全部数据库
#binlog-do-db=mytestdb
# 设置不需要复制的数据库
#binlog-ignore-db=mysql
#binlog-ignore-db=infomation_schema
  • binlog_format=STATEMENT:日志记录的是主机数据库的 写指令,性能高,但是 now() 之类的函数以及获取系统参数的操作会出现主从数据不同步的问题。
  • binlog_format=ROW(默认):日志记录的是主机数据库的 写后的数据,批量操作时性能较差,解决 now() 或者 user() 或者 @@hostname 等操作在主从机器上不一致的问题。
  • binlog_format=MIXED:是以上两种 level 的 混合使用,有函数用 ROW,没函数用 STATEMENT,但是无法识别系统变量

binlog-do-db 优先 binlog-ignore-db

#修改默认密码校验方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

主机中创建 slave 用户:

-- 创建slave用户
CREATE USER 'pivot_slave'@'%';
-- 设置密码
ALTER USER 'pivot_slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
-- 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'pivot_slave'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

主机中查询master状态:
执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

SHOW MASTER STATUS;

记下 FilePosition 的值

ps: 刷新 FLUSH LOGS;

-- 在主机查看mater状态
SHOW MASTER STATUS;
-- 在主机刷新日志
FLUSH LOGS;
-- 再次在主机查看mater状态(会发现File和Position发生了变化)
SHOW MASTER STATUS;
-- 修改从机连接主机的SQL,并重新连接即可

[mysqld]
# 服务器唯一id,每台服务器的id必须不同,如果配置其他从机,注意修改id
server-id=2
# 中继日志名,默认xxxxxxxxxxxx-relay-bin
#relay-log=relay-bin
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

在从机上配置主从关系:
在从机上执行以下SQL操作

CHANGE MASTER TO MASTER_HOST='192.168.100.201', MASTER_USER='pivot_slave',
MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='binlog.000003',
MASTER_LOG_POS=1357; 

启动主从同步
启动从机的复制功能,执行SQL:

START SLAVE;
-- 查看状态(不需要分号)
SHOW SLAVE STATUS\G

停止和重置

-- 在从机上执行。功能说明:停止I/O 线程和SQL线程的操作。
STOP SLAVE;
-- 在从机上执行。功能说明:用于删除SLAVE数据库的relaylog日志文件,并重新启用新的relaylog文件。
RESET SLAVE;
-- 在主机上执行。功能说明:删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件。
-- 用于第一次进行搭建主从库时,进行主库binlog初始化工作;
RESET MASTER;

我的 docker-compose 配置 (环境配置)

version: "3.6"
services:
  mysql0:
    image: mysql:8.0.29
    container_name: mysql0
    ports:
      - '33060:3306'
    environment:
      - MYSQL_ROOT_PASSWORD=123456
#      - MYSQL_DATABASE=sharding
    volumes:
      - '/d/Pivot/mysql/primary/conf:/etc/mysql/conf.d'
      - '/d/Pivot/mysql/primary/data:/var/lib/mysql'
  mysql1:
    image: mysql:8.0.29
    container_name: mysql1
    ports:
      - '33061:3306'
    environment:
      - MYSQL_ROOT_PASSWORD=123456
#      - MYSQL_DATABASE=sharding
    volumes:
      - '/d/Pivot/mysql/replica0/conf:/etc/mysql/conf.d'
      - '/d/Pivot/mysql/replica0/data:/var/lib/mysql'
  mysql2:
    image: mysql:8.0.29
    container_name: mysql2
    ports:
      - '33062:3306'
    environment:
      - MYSQL_ROOT_PASSWORD=123456
#      - MYSQL_DATABASE=sharding
    volumes:
      - '/d/Pivot/mysql/replica1/conf:/etc/mysql/conf.d'
      - '/d/Pivot/mysql/replica1/data:/var/lib/mysql'
networks: # 虚拟网络
  default:
    name: my-network
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql 主从复制 的相关文章

  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • 映射 mysql 中同一个表的多个值

    您好 我必须使用另一个表中的值 id 获取文本值 表 1 包含值 ID 表 2 包含名称和值 ID 表 1 SEVERITY OCCURENCE DETECTABILITY 2 3 4 表 2 id name value 1 Very Hi
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • 显示标准化数据

    跟进问题 添加 2 个不同表的总和 https stackoverflow com questions 39717541 adding sum from 2 different tables 我创建了3个表 members videos v
  • MySQL 和 Hibernate 之间的主键自增由谁负责?

    MySQL CREATE TABLE role id role INT 11 unsigned NOT NULL AUTO INCREMENT PRIMARY KEY id role AUTO INCREMENT 1 休眠 Entity p
  • covertJSONtoSQL 在 NiFi 中返回空值

    我正在设计一项工作 使用以下命令将数据从 MySQL 中的数据库转移到另一个数据库 MySQL 执行SQL处理器随后将Avro转换为Json then 将Json转换为SQL then PutSQL如下流程图所示 将JSON转换为SQL返回
  • MySQL 通过 current_timestamp 选择上个月的数据

    直到今天 当我使用 MySQL 并需要对日期 时间执行操作时 我使用带有 unix 时间戳的 int 列 没有出现任何问题 但今天在阅读了一些指南后 我决定默认使用 current timestamp 测试时间戳列 所以我感兴趣如何按列选择
  • 不带 GROUP BY 的聚合查询

    这个查询似乎在我的旧机器上完美运行 但是 在我的 MySQL 5 7 14 和 PHP 5 6 25 的新机器上 它会抛出错误 致命错误 未捕获异常 PDOException 并带有消息 SQLSTATE 42000 语法错误或访问冲突 1
  • mysql转储到derby

    我正在使用 derby 在 eclipse 中进行开发 是否可以从 MySQL 转储表并以某种方式将其用于 derby 我知道 ddl 和 dml 对于两个 dbms 来说是不同的 但我正在寻找一种除了转储 导出之外的合适方法 我可以找到两
  • libmysqlclient.a 和 libmysqlclient_r.a 有什么区别?

    我应该使用哪个来链接 mysqlclient 库 它们之间有什么区别 我似乎找不到答案 谢谢 较新版本的 MySQL 客户端发行版不包含 r 版本 有些可能有从 libmyqslclient r a 到 libmyqslclient a 的
  • PHP PDO 使用 bindParam 第一个参数(不带冒号)[重复]

    这个问题在这里已经有答案了 请检查这个 user id int GET user id sql DELETE FROM users WHERE user id user id query db gt prepare sql query gt
  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • 将庞大数据库从亚马逊RDS导出到本地mysql

    我在 Amazon RDS 上有一个 mysql 数据库 大约 600GB 数据 我需要将其移回本地专用服务器 但我不知道从哪里开始 每次我尝试初始化 sqldump 时它都会冻结 有没有办法将其移至 S3 甚至可能在开始下载之前将其分成更
  • 删除行导致锁超时

    当我尝试从表中删除行时 我不断收到这些错误 这里的特殊情况是我可能同时运行5个进程 该表本身是一个 Innodb 表 约有 450 万行 我的 WHERE 子句中使用的列没有索引 其他指数按预期运行 这是在事务中完成的 首先删除记录 然后插
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • MySQL 转储未知选项“-no-beep”

    在旧服务器上我使用了mysql转储命令来备份 MySQL 数据库 在新服务器上 MySQL 版本为 5 6 相同的命令给出了错误 unknown option no beep 无论它插入什么 我也在互联网上搜索过 但找不到任何帮助 在 my

随机推荐

  • jQuery 改变样式

    1 要先引入jQuery js jQuery JavaScript Library v1 4 4 http jquery com Copyright 2010 John Resig Dual licensed under the MIT o
  • 参数非空校验

    参数非空校验 全为空返回true 否则返回false function checkParam var argLengthInit arguments length var argLength argLengthInit var count
  • Visual Studio 2019的安装教程

    注意 部分内容只面向学习C语言的同学 1 打开浏览器搜索 Microsoft官网 2 进入网站 3 点击右上角的 所有Microsoft 4 找到 开发人员与IT 一列中的 Visual Studio 并点击进入 5 点击下载 Visual
  • Linux之Docker环境搭建

    Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 然后发布到任何流行的 Linux或Windows 机器上 也可以实现虚拟化 容器是完全使用沙箱机制 相互之间不会有任何接口 搭建开始 官方网址
  • 微信小程序隐私指引完整填写范本(开发者收集你选中的照片或视频信息,用于?)

    为了分辨用户 开发者将在获取你的明示同意后 收集你的微信昵称 头像 为了显示距离 开发者将在获取你的明示同意后 收集你的位置信息 开发者收集你的地址 用于获取位置信息 开发者收集你的发票信息 用于维护消费功能 为了用户互动 开发者将在获取你
  • TCP报文格式详解

    TCP报文由俩部分组成 TCP报头和TCP数据 TCP报文是TCP传输的数据单元 端口号 用来标识一台主机的不同进程 1 源端端口号 源端口和IP层解析出来的IP地址标识报文的发送地 同时也确定了报文的返回地址 2 对端端口号 表明了该数据
  • 《移动浪潮》读书笔记

    移动浪潮 一书深入浅出地解读了信息革命第五次浪潮即将为人们生活带来的巨变 首先论述移动的力量 它是一股无法阻挡的浪潮 将引发颠覆性的革命 随后从电脑逐渐小型化 纸张的消失 娱乐的自由 钱包 社交网络 医疗 教育乃至工农业等方方面面论述移动互
  • 线程池参数

    一 ThreadPoolExecutor核心参数说明 1 corePoolSize 核心线程数 核心线程会一直存活 及时没有任务需要执行 当线程数小于核心线程数时 即使有线程空闲 线程池也会优先创建新线程处理 设置allowCoreThre
  • shell判断一个变量是否为空

    shell判断一个变量是否为空 author 润明 2012 2 1 QQ 226399587 http blog csdn net runming918 判断一个变量是否为空 1 变量通过 引号引起来 如下所示 可以得到结果为 IS NU
  • 数据库管理系统

    1 数据库 DB 指长期保存在计算机的存储设备上 按照一定规则组织起来 可以被各种用户或应用共享的数据集合 2 数据库管理系统 DBMS 指一种操作和管理数据库的大型软件 用于建立 使用和维护数据库 对数据库进行统一的管理和控制 以保证数据
  • 工具使用 [ idea远程服务断点调试 ]

    目录 1 概述 1 1 远程代码调试 1 1 1 idea配置 1 1 2 准备HTTP接口 1 1 3 启动远程服务 1 概述 在开发的过程当中 断点调试是我们比较常用的操作 不管是用来解析代码流程 还是用来排查程序错误 都会去使用到断点
  • 高校俱乐部审核期长安大学星辰同学参观CSDN总部

    7月15日早上北京大雨瓢泼 一大早就接到长安大学星辰同学的消息 要来CSDN与我们交流学习 星辰同学填完加入高校俱乐部申请信息后 我们是通过电话和qq与他联系的 据他所说是他的家人推荐他申请加入CSDN高校俱乐部 并且能够增加经验和锻炼能力
  • echarts饼图,自定义legend,解决legend字数太多和太长的问题,翻页处理

    echarts饼图 自定义legend 解决legend字数太多和太长的问题 翻页处理 https blog csdn net weixin 43899935 article details 107185591 版权 tooltip tri
  • 测试中遇到的问题总结

    一 后端问题 数据库存储相关 1 做更新操作后 发现数据没更新 根因 先读取后更新 解决方案 更新再读取 2 缓存数据未及时更新 导致操作不成功 及时更新缓存数据 正常情况在 一分钟内会将数据库数据同步到缓存 如果用户在一分钟之内同时操作了
  • mmdetection 环境配置mmcv和pytorch对照

    版本一 old mmdetection v1 1 0 python 3 7 9 Driver Version 440 33 01 CUDA Version 10 2 mmcv 0 4 3 mmdet 1 1 0 51df8a9 root d
  • IntelliJ IDEA 详细使用教程 – 主题,字体,类和方法注释设置

    IDEA是Java开发者最喜爱的开发工具之一 高端大气 智能化 个性化 每个开发者都喜欢设置自己喜欢的主题 字体 打造一个属于自己的IDE 本次介绍在IDEA中 如何设置主题 字体等样式 和添加类 方法注释 Windows用户直接点击菜单看
  • python接口自动化测试 ( 第三章)

    如果你不太明白这篇文章是做什么的 点击下方进入介绍篇 点击跳转到介绍篇 你可以知道自己能收获什么 和将要做的功能点和是否值得学习 别再迷茫了 不日进 则日退 学习才是你应该做的事情 进入介绍篇了解你将要走的路 python接口自动化测试 第
  • abapdata定义方法_ABAP中types与data,type与like的区别

    1 types与data区别 types是用来自定义某种类型的 需要data实例化才能使用 data是用来声明基本类型数据对象 也就是实例变量 对于用data直接定义的结构体对象 不参照其它结构类型 参照自定义类型生成新数据语法格式 TYP
  • 快速记忆电阻器色环值

    快速记忆电阻器色环值 觉得有用麻烦点个赞哦 开始正文 最近准备电设 看到电阻器11种色环 实在难记 因此花了我整整5 分钟 想出了一个快速记忆的方法 直接上图 上图是标准色环和阻值对应表 下面是我的简记方法 1 谐音组词记忆yyds 2 简
  • Mysql 主从复制

    简述 start slave show slave status G stop slave reset slave delete relay log create relay log reset master delete bin log