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 主从复制 的相关文章

随机推荐

  • 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