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

文若3年前技术文章1293


全新初始化(新环境,无数据)搭建 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. 该方案适合于数据库无任何业务数据的情况下,并且搭建过程中没有任何业务使用。


相关文章

K8s数据持久化

K8s数据持久化

一、为什么需要持久化为了解决pod里面的容器被删除后数据不丢失,则引入了存储类型,类似于docker中的数据卷。在kubernetes集群中,其是支持多种存储类型,包括但不限于emptyDir,Hos...

Kubernetes源码解读(五)--Reflector源码分析

Reflector 的任务就是向 apiserver watch 特定类型的资源,拿到变更通知后将其丢到 DeltaFIFO 队列中。1、Reflector的启动过程Reflector定义在k8s.i...

idea打包java可执行jar包

idea打包java可执行jar包

1,在项目上鼠标右键 --> Open Module SettingsArtifacts --> + --> JAR --> From modules with depende...

将Nexus作为容器镜像仓库的配置过程

将Nexus作为容器镜像仓库的配置过程

Docker,Helm和Kubernetes的简化容器管理Nexus Repository建立在广泛的企业存储功能之上,是适用于所有Docker镜像和Helm Chart存储库的强大的注册表。Nexu...

MySQL 闪回技术总结

MySQL 闪回技术总结

一、闪回技术汇总1. 第一类为以 patch 形式集成到官方工具 mysqlbinlog 中,阿里彭立勋 2012 年曾提交过相关工具;2. 第二类是独立工具,通过伪装 Slave 拉取 Binlog...

Ambari开启kerberos+安全方案

Ambari开启kerberos+安全方案

安装Kerberosserver节点安装kerberos相关软件yum install -y krb5-server krb5-workstation krb5-libsclient节点安装yum i...

发表评论    

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