MySQL 复制-无数据环境搭建异步复制

文若2年前技术文章492


全新初始化(新环境,无数据)搭建 MySQL 异步复制 & GTID 复制标准文档。

一、前言

  • 环境说明:操作系统 CentOS 7  & 数据库版本 5.7.32

  • 参数要求:主库必须开启 binlog 日志,用于数据同步,相关参数👇

# 设置 server-id
server-id=1
# binlog 存储路径
log-bin=/var/log/binlogs/mysql-bin
# binlog 刷写策略,双一安全参数之一
sync-binlog=1
# binlog 刷写格式,row 为最安全和严谨的格式,当然也是存储内容较多的格式
binlog-format=row
# binlog 文件存储大小,存满 1G 后会自动置换下一个文件
max_binlog_size=1G
# binlog 自动清理,设置为 10 会自动清理 10 天前的 binlog 日志,避免日志占用空间较大
expire_logs_days=10

二、操作过程

  1. 单实例初始化安装:
    忽略

  2. 配置主从复制关系:

    1. 主从实例各自初始化时,会产生自己的二进制位置信息,建议全新环境搭建主从时,先清理各自的 binlog 日志:

-- 主从都需要执行
RESET MASTER;

    1. 主库上创建专用的复制用户:

-- 密码安装需求修改
grant replication slave on *.* to repl@'%' identified by 'YouPassword';

    1. 从库使用 change master to 语句将复制配置指向主库:

CHANGE MASTER TO
	MASTER_HOST='主库 id 地址',
	MASTER_USER='复制用户',
	MASTER_PASSWORD='password',
	MASTER_PORT=3306,
	MASTER_LOG_FILE='mysql-bin.000001',
	MASTER_LOG_POS=0,
 	MASTER_CONNECT_RETRY=10;

    1. 从库启动复制线程:

start slave;

    1. 检查复制线程状态:

show slave status\G


截屏2023-02-20 上午10.43.33.png

  1. 主库造些测试数据,在从库查询是否同步正常:

create database rep_test;
use rep_test;
create table rep_test_table(id int);
insert into rep_test_table values(1),(2),(3);

到此为止,全新环境下的 MySQL 异步复制已经搭建完成。

三、GTID 复制搭建

  1. 单实例初始化安装:
    安装两台 MySQL 可以参考:MySQL 自动化部署 快速完成 MySQL 搭建 👍

  2. GTID 复制相关参数:

# 在开启 binlog 基础上添加👇参数主从都需要配置
gtid_mode = on
enforce_gtid_consistency = 1
  1. 配置主从复制关系:

    1. 主从实例各自初始化时,会产生自己的二进制位置信息,建议全新环境搭建主从时,先清理各自的 binlog 日志:

-- 主从都需要执行
RESET MASTER;

    1. 主库上创建专用的复制用户:

-- 密码安装需求修改
grant replication slave on *.* to repl@'%' identified by 'YouPassword';
    1. 从库使用 change master to 语句将复制配置指向主库:

# 这个使用 MASTER_AUTO_POSITION 替代了 MASTER_LOG_FILE 和 MASTER_LOG_POS
CHANGE MASTER TO
	MASTER_HOST='主库 id 地址',
	MASTER_USER='复制用户',
	MASTER_PASSWORD='password',
	MASTER_PORT=3306,
	MASTER_AUTO_POSITION=1;

    1. 从库启动复制线程:

start slave;

    1. 检查复制线程状态:

show slave status\G


截屏2023-02-20 上午10.43.55.png

  1. 主库造些测试数据,在从库查询是否同步正常:

create database rep_test;
use rep_test;
create table rep_test_table(id int);
insert into rep_test_table values(1),(2),(3);

到此为止,全新环境下的 MySQL GTID 复制已经搭建完成。

四、注意事项

  1. 生产环境建议设置 expire_logs_days 参数,如果实例增删改频繁的话,它会在你不知不觉中消耗更多的磁盘空间。该参数 8.0 版本设置为 binlog_expire_logs_seconds 单位为 ;

  2. MySQL 8.0 中用户必须先创建再授权:

create user repl'%' identified by 'YouPassword';
grant replication slave on *.* to repl@'%';
  1. 该方案适合于数据库无任何业务数据的情况下,并且搭建过程中没有任何业务使用。


相关文章

oracle压测

一、oracle自带压测存储过程: link:https://blog.csdn.net/xiaofan23z/article/details/79789981、首先确定通过运行以下查询,确保为数据文...

kafka常见配置参数解析

broker.idbroker 的全局唯一编号,不能重复,只能是数字num.network.threads=3处理网络请求的线程数量num.io.threads=8用来处理磁盘 IO 的线程数量soc...

CDH配置impala自动同步HMS元数据

CDH配置impala自动同步HMS元数据

1、进入CM界面 > Hive > 配置 > 搜索 启用数据库中的存储通知(英文界面搜索:Enable Stored Notifications in Database),并且勾选,...

数仓主流架构简介之三

数仓主流架构简介之三

一、数仓架构经历过程随着数据量的暴增和数据实时性要求越来越高,以及大数据技术的发展驱动企业不断升级迭代,数据仓库架构方面也在不断演进,分别经历了以下过程:早期经典数仓架构 > 离线大数据架构 &...

MySQL优化器特性(七)成本估算常数

成本估算常数表示执行一些MySQL基础操作时的成本,如读取一个页面,创建一个临时表,比较一条记录,解析一行记录等操作。mysql.engine_cost和mysql.server_cost表分别记录存...

HDFS FQA-Active Namenode does not exit SafeMode with error :"Protocol message was too large.

1、背景重新启动 Active Namenode 时,它卡在安全模式并报告以下错误:Caused by: java.lang.IllegalStateException: ...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。