MySQL基于GTID主从复制入门

mysql复制架构的详细配置和设置过程如下:

MySQL基于GTID主从复制入门

Master节点配置与初始化:

Master节点的配置文件如下:

[client]port = 3306socket = /tmp/master-mysql.sock

[mysql]no-auto-rehash

[mysqld]sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESuser = mysqlport = 3306socket = /tmp/master-mysql.sockserver-id=1port=3306datadir=/data1/mysql/master/datalog_error=/data1/mysql/master/log/master.logpid_file=/data1/mysql/master/data/mysql.pidserver_id=101gtid_mode=onenforce_gtid_consistency=onlog_bin=master-binloglog-slave-updates=1binlog_format=rowskip_slave_start=1max_connect_errors=1000

Master节点的数据库初始化命令:

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data1/mysql/master/data

Master节点数据库启动命令:

nohup mysqld_safe --defaults-file=/data1/my-master.cnf > master.log 2>&1 &

Slave节点配置与初始化:

Slave节点的配置文件如下:

[mysqld]sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESuser = mysqlport = 3307socket  = /tmp/slave-mysql.sockdatadir=/data1/mysql/slave/datalog-error = /data1/mysql/slave/log/slave.logpid-file = /data1/mysql/slave/data/slave.pidmax_connect_errors=1000gtid_mode=onenforce_gtid_consistency=onserver_id=102log-bin=slave-binloglog-slave-updates=1binlog_format=rowskip_slave_start=1

Slave数据库初始化命令:

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data1/mysql/slave/data

Slave节点数据库启动命令:

小门道AI 小门道AI

小门道AI是一个提供AI服务的网站

小门道AI 117 查看详情 小门道AI

nohup mysqld_safe --defaults-file=/data1/my-slave.cnf > slave.log 2>&1 &

MySQL基于GTID主从复制入门

主从节点创建超级用户:

在Master节点上创建超级用户:

[perrynzhou@debian /data1]$ mysql -uroot -P 3306 -S /tmp/master-mysql.sockmysql> create user 'admin'@'%' identified by 'admin';mysql> grant all privileges on . to 'admin'@'%';mysql> flush privileges;

GTID复制配置:

在主节点上创建复制用户:

[perrynzhou@debian /data1]$ mysql -uroot -P 3306 -S /tmp/master-mysql.sockmysql> create user 'repl'@'%' identified by 'repl';mysql> grant replication slave,replication client on . to 'repl'@'%';mysql> flush privileges;

在Slave节点上验证Master节点的复制用户:

mysql -urepl -prepl -h127.0.0.1 -P 3306

在Slave节点上配置主从复制:

[perrynzhou@debian /data1]$ mysql -uroot -S /tmp/slave-mysql.sock -P 3307 -pmysql> change master to master_host='127.0.0.1', master_user='repl', master_password='repl', master_port=3306, master_auto_position=1;mysql> start slave;

查看Slave节点的复制状态:

mysql> show slave statusG 1. row Slave_IO_State: Waiting for master to send eventMaster_Host: 127.0.0.1Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: master-binlog.000007Read_Master_Log_Pos: 3452Relay_Log_File: debian-relay-bin.000006Relay_Log_Pos: 470Relay_Master_Log_File: master-binlog.000007Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 3452Relay_Log_Space: 994Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 101Master_UUID: 6443e6e9-bb9c-11eb-bee9-001c420bbbe1Master_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind:Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp:Master_SSL_Crl:Master_SSL_Crlpath:Retrieved_Gtid_Set: 6443e6e9-bb9c-11eb-bee9-001c420bbbe1:1-13Executed_Gtid_Set: 6443e6e9-bb9c-11eb-bee9-001c420bbbe1:1-13,77c34ad3-bb9e-11eb-b695-001c420bbbe1:1-17Auto_Position: 1Replicate_Rewrite_DB:Channel_Name:Master_TLS_Version:Master_public_key_path:Get_master_public_key: 0Network_Namespace:1 row in set, 1 warning (0.02 sec)

以上就是MySQL基于GTID主从复制入门的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/459047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 02:42:18
下一篇 2025年11月8日 02:45:53

相关推荐

  • 介绍邱!

    我很高兴地宣布发布 qiu – 一个严肃的 sql 查询运行器,旨在让原始 sql 再次变得有趣。老实说,orm 有其用武之地,但当您只想编写简单的 sql 时,它们可能会有点让人不知所措。我一直很喜欢编写原始 sql 查询,但我意识到我需要练习——大量的练习。这就是qiu登场的地方。 有了 qiu…

    2025年12月19日
    000
  • 有关 SQL 基础知识的博客

    SQL 基础知识:基本介绍结构化查询语言(SQL)是管理和操作关系数据库的强大工具。如果您是 SQL 新手,了解其基础知识可以开启处理数据的无限可能。以下是您开始使用时需要了解的内容的快速概述。 什么是 SQL? SQL 是一种用于与关系数据库交互的标准化语言。它允许您执行各种操作,例如检索数据、添…

    2025年12月19日
    000
  • 庆祝开源贡献:成长与协作之旅

    我很高兴地宣布我已经达到了个人里程碑:完成了我的第 100 个开源贡献!这次旅程简直令人难以置信,我很荣幸能为一系列充满活力和多样化的项目做出贡献,这些项目不仅提高了我的技能,还让我能够回馈给了我如此多的社区。 我的第 100 个贡献 是对modular-forms 库做出的,这是一个考虑到性能、类…

    2025年12月19日
    000
  • Node.js 生态系统

    Node.js生态系统提供广泛的工具和资源,包括包管理器(npm、Yarn)、框架(Express、Koa、Sails.js)、数据库(MongoDB、PostgreSQL、MySQL)、云平台(AWS Lambda、Azure Functions、Google Cloud Functions)、工…

    2025年12月19日
    000
  • Node.js 生态系统的作用

    Node.js 生态系统关键作用:应用程序框架(Express、Fastify、Koa)提供结构化环境构建 Web 应用和 API;数据库连接(MongoDB、PostgreSQL、MySQL)支持数据驱动的应用程序;实时通信(Socket.IO、WebSocket)实现服务器和客户端之间的实时数据…

    2025年12月19日
    000
  • 从头开始构建 Web 应用程序:基本指南以及何时雇用 Magento 开发人员

    简介 Web 应用程序已成为现代商业的基石,提供动态和交互式平台,可提高用户参与度和运营效率。无论您是开发简单的内容管理系统还是复杂的电子商务平台,了解 Web 应用程序开发的基础知识都至关重要。本指南将引导您完成从头开始构建 Web 应用程序的过程,并解释何时以及为何应考虑雇用 Magento 开…

    2025年12月19日
    000
  • 如何将 PostgreSQL 与 Nodejs 和 Sequelize 连接

    在使用数据库时,开发人员经常面临选择是使用原始数据库查询还是利用抽象出一些复杂性的库。 sequelize 就是这样一个库——一种流行的 node.js orm(对象关系映射器),可与 postgresql、mysql 和其他关系数据库配合使用。在本教程中,我们将深入探讨如何在 node.js 上使…

    2025年12月19日
    000
  • C++的consteval和constinit是什么_C++20中真正的编译期常量初始化

    consteval 强制函数在编译期求值,如 consteval int square(int n) 只能接受编译期常量参数;constinit 确保变量以常量初始化,如 constinit static int x = 42 避免动态初始化,用于解决静态初始化顺序问题。两者分别强化了编译期计算和初…

    2025年12月19日
    000
  • C++ double转string_C++浮点数转换为字符串

    C++中double转字符串常用方法有四种:1. std::to_string最简单但精度固定为6位;2. std::ostringstream可配合setprecision和fixed精确控制格式;3. C++17的提供高性能无异常转换,适合底层应用;4. fmt库语法现代灵活,支持高精度格式化,…

    2025年12月19日
    000
  • C++如何创建一个静态库(.lib/.a)?(详细步骤)

    C++静态库是将编译后的目标文件(.obj/.o)打包成归档文件(Windows为.lib,Linux/macOS为.a),仅提供已编译符号定义;需分离头文件与实现、只编译不链接、再用ar/lib工具打包,最后在链接时指定头文件路径、库路径及库名。 在C++中创建静态库,本质是把编译后的目标文件(.…

    2025年12月19日
    000
  • c++的std::forward_list是什么 单向链表容器的使用【STL详解】

    std::forward_list 是 C++11 引入的单向无哨兵链表,内存更紧凑、头部操作高效,但不支持随机访问、反向迭代和 O(1) size()(C++17 起可选),适用于内存敏感、头部频繁增删且单向遍历的场景。 std::forward_list 是 C++11 引入的标准模板库(STL…

    2025年12月19日
    000
  • C++如何进行Base64编码和解码?(代码示例)

    Base64 编码解码在 C++ 中无标准库支持,但可使用纯 C++ 实现:编码将每 3 字节转为 4 字符(A–z、0–9、+、/),用 ‘=’ 填充;解码严格校验长度、填充及字符合法性,并支持含空字节和中文的任意二进制数据。 Base64 编码和解码在 C++ 中没有标准…

    2025年12月19日
    000
  • 如何为c++项目编写一个简单的Makefile g++编译自动化【入门教程】

    c++kquote>Makefile自动编译C++项目需定义目标、依赖和命令三部分,命令行以Tab开头;支持单文件编译、多文件分离编译链接、编译选项配置及clean清理规则,并可利用自动推导和变量简化维护。 用 Makefile 自动编译 C++ 项目,核心是告诉 make 哪些文件变了需要重…

    2025年12月19日
    000
  • 如何使用Bazel构建大型c++项目 Google的构建系统【工程化】

    Bazel构建大型C++项目的核心是模块化声明、显式依赖与可复现构建。通过BUILD文件明确定义目标源码、头文件、依赖及编译选项,划分职责清晰的包边界,用cc_library封装可复用组件,严格管控visibility与第三方依赖,并利用缓存、查询与调试工具提升效率。 用 Bazel 构建大型 C+…

    2025年12月19日
    000
  • C++中的iostream为什么慢?C++输入输出性能优化技巧【IO加速】

    关闭同步、解绑流缓冲、用getline和手动解析可大幅提升iostream性能。需禁用cin/scanf混用,拼接输出并用’n’替代endl。 因为 iostream 默认与 C 标准库的 stdio 同步,并且做了大量类型安全、格式化、异常处理等额外工作,导致它比裸 C 的…

    2025年12月19日
    000
  • c++如何使用Clang的静态分析器_c++ Scan-build发现潜在bug【代码质量】

    c++kquote>Clang 的 scan-build 是轻量易用的静态分析工具,可检测空指针解引用、内存泄漏等潜在 bug;无需修改代码或深度集成构建系统,支持 macOS/Xcode 自带及 Linux/WSL 安装,通过包裹编译命令生成 HTML 报告,并提供增强选项与误报处理机制。 …

    2025年12月19日
    000
  • C++如何手写一个智能指针?C++ RAII与引用计数实现【底层实践】

    智能指针核心是用RAII自动管理堆内存,避免裸指针的内存泄漏与崩溃;引用计数需独立分配内存并原子操作;拷贝/赋值需同步更新计数;重载*、->等运算符以支持指针式访问。 智能指针核心要解决什么问题 裸指针容易忘 delete、重复 delete、提前释放,导致内存泄漏或崩溃。手写智能指针本质是用…

    2025年12月19日
    000
  • C++如何解析命令行参数_C++ main函数argc与argv的处理方法

    答案是:main函数通过argc和argv接收命令行参数,argc为参数数量,argv存储各参数字符串,遍历argv可解析输入,如判断标志位或获取文件名。 在C++中,main函数接收命令行参数是程序与外部交互的基础方式之一。通过argc和argv,我们可以获取用户在启动程序时传入的参数,并据此控制…

    2025年12月19日
    000
  • C++如何测量程序运行时间_C++高精度计时器实现与性能分析

    使用 chrono 高精度时钟可准确测量 C++ 程序运行时间,推荐 std::chrono::high_resolution_clock 结合 duration_cast 获取微秒级耗时,注意关闭编译器优化、多次测量取平均值,并可用 RAII 封装自动计时,提升测试准确性与代码复用性。 在C++开…

    2025年12月19日
    000
  • C++如何检测内存泄漏_C++ Valgrind工具与CRT库的使用

    使用Valgrind和CRT调试堆库可有效检测C++内存泄漏:Valgrind在Linux下通过memcheck模块分析程序运行时内存错误,需编译时加-g选项并运行valgrind –leak-check=full命令,输出详细泄漏信息;Windows平台则利用Visual Studio…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信