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

文若3年前技术文章1299


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


相关文章

查看 Redis 不过期 key

查看 Redis 不过期 key

一、使用 Rdbtools 工具包使用 Rdbtools 工具包通过分析备份 rdb 文件,可以查看期间大 key 情况及过期时间情况。输出 csv 文档列信息情况详见下方附件--安装 rdb 工具包...

CDH实操--集群关闭Kerberos

CDH实操--集群关闭Kerberos

1、关掉整个集群2、zookeeper配置搜索kerberos,将enable Kerberos配置关掉3、hdfs配置在输入框中填入[hadoop.security.auth] 进行搜索将安全身份认...

MySQL 自增列使用上的一些 “坑”

MySQL 自增列使用上的一些 “坑”

前言MySQL 的规范中,一般都会建议表要有主键,常使用自增列作为主键字段,这和 MySQL 属于聚簇索引表有关,顺序增长的主键比较合适。最近有研发咨询,为什么有张表的自增主键变的非常大?而且偶尔还出...

SQL Server优化入门系列(四)——  找到Top SQL

SQL Server优化入门系列(四)—— 找到Top SQL

说明从会话信息中我们可以查看实例当前正在运行的SQL、当前被Block的SQL。但是如果要查看过去一段时间执行的SQL,我们有几个选择1、通过外部SQL审计平台记录所有SQL。2、通过SQL Serv...

如何卸载mysql

如何卸载mysql

1、查看安装的mysql,并停止mysqlps -ef|grep mysql #停止mysql  kill -9 pid2、卸载mysql安装...

手动模拟 flannel 的 vxlan 实现节点命名空间互通

手动模拟 flannel 的 vxlan 实现节点命名空间互通

在flannel网络插件中实现两个节点互通方式有host-gw vxlan ipip等方式,之前已经手动模拟过host-gw模式,此处再模拟一下vxlan模式点对点访问。手动实验两个命名空间通信Nod...

发表评论    

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