热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GTID方式构建MySQL主从环境并排障

GTID方式构建My


点击上方【运愁维卧】关注,回复消息“0101”,获取职场N多简历模板、面试经验以及IT资料包~

前期环境说明

  • 10.233采用的cmake编译(参考下文)

使用cmake方式编译安装MySQL5.7.33

    [root@ansible_nfs ~]# more etc/my.cnf
    [mysqld]
    user=mysql
    basedir=/usr/local/mysql/
    datadir=/usr/local/mysql/data
    socket=/tmp/mysql.sock
    server_id=6
    port=3306


    [client]
    socket=/tmp/mysql.sock
    [root@ansible_nfs ~]#

    • 10.234采用的二进制部署(参考下文)

    使用二进制方式部署MySQL5.7.33

      [mysqld]
      user=mysql
      basedir=/application/mysql/
      datadir=/mysqldata/mysql/data
      socket=/tmp/mysql.sock
      server_id=6
      port=3306


      [client]
      socket=/tmp/mysql.sock
      [root@web etc]#

      构建主从

      • 主库10.234,修改配置文件如下

        [root@web etc]# cat etc/my.cnf
        [mysqld]
        user=mysql
        basedir=/application/mysql/
        datadir=/mysqldata/mysql/data
        socket=/tmp/mysql.sock
        server_id=6
        port=3306
        secure-file-priv=/tmp
        autocommit=0
        log_bin=/mysqldata/binlog/mysql-bin
        binlog_format=row
        gtid-mode=on
        enforce-gtid-cOnsistency=true
        log-slave-updates=1


        [client]
        socket=/tmp/mysql.sock
        prompt=db01 [\\d]>
        [root@web etc]#

        创建binlog目录并授权,重启服务

          [root@web etc]# mkdir mysqldata/binlog
          [root@web etc]# chown -R mysql.mysql mysqldata/*
          [root@web etc]# systemctl restart mysqld

          • 从库10.233,修改配置文件如下

            [root@ansible_nfs ~]# cat etc/my.cnf
            [mysqld]
            user=mysql
            basedir=/usr/local/mysql/
            datadir=/usr/local/mysql/data
            socket=/tmp/mysql.sock
            server_id=66
            port=3306
            secure-file-priv=/tmp
            autocommit=0
            log_bin=/usr/local/mysql/data/binlog/mysql-bin
            binlog_format=row
            gtid-mode=on
            enforce-gtid-cOnsistency=true
            log-slave-updates=1


            [client]
            socket=/tmp/mysql.sock
            prompt=db02 [\\d]>
            [root@ansible_nfs ~]#

            创建binlog目录并授权,重启服务

              [root@ansible_nfs ]# mkdir usr/local/mysql/data/binlog/
              [root@ansible_nfs ]# chown -R mysql.mysql /usr/local/mysql/*
              [root@ansible_nfs ]# systemctl start mysqld

              在主库10.234中创建用于主从复制的专用用户

                db01 [(none)]>grant replication slave on *.* to sync@'192.168.10.%' identified by 'sync123';

                在从库10.233配置主库信息

                  db02 [(none)]>change master to
                  -> master_host='192.168.10.234',
                  -> master_user='sync',
                  -> master_password='sync123' ,
                  -> MASTER_AUTO_POSITION=1;
                  Query OK, 0 rows affected, 2 warnings (0.01 sec)


                  db02 [(none)]>start slave;
                  Query OK, 0 rows affected (0.01 sec)


                  db02 [(none)]>show slave status \G
                  *************************** 1. row ***************************
                  Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.10.234
                  Master_User: sync
                  Master_Port: 3306
                  Connect_Retry: 60
                  Master_Log_File: mysql-bin.000001
                  Read_Master_Log_Pos: 448
                  Relay_Log_File: ansible_nfs-relay-bin.000002
                  Relay_Log_Pos: 661
                  Relay_Master_Log_File: mysql-bin.000001
                  Slave_IO_Running: Yes
                  Slave_SQL_Running: Yes
                  Replicate_Do_DB:
                  Replicate_Ignore_DB:
                  ……


                  至此采用GTID方式的主从环境就构建完成了。

                  故障排查

                  构建主从完成后,手误将从库上的一个数据库wuxi给删除了,导致了主从不同了,查看状态报错如下

                  主要就是无法再删除数据库wuxi了

                    Slave_SQL_Running: No
                    Last_Error: Error 'Can't drop database 'wuxi'; database doesn't exist' on query. Default database: 'wuxi'. Query: 'drop database wuxi'
                    Last_SQL_Error: Error 'Can't drop database 'wuxi'; database doesn't exist' on query. Default database: 'wuxi'. Query: 'drop database wuxi'

                    为了重新恢复主从同步,尝试将主库的wuxi也删除,并在从库stop slave及reset slave all后,重新start slave均没解决。既然从库已经删除了,提示无法删除wuxi这个库了。那么就stop slave后,再将wuxi这个库创建上,最后在start slave,那么在同步时候会自动将新建的wuxi这个库给删除了。

                      db02 [(none)]>stop slave;
                      Query OK, 0 rows affected (0.00 sec)


                      db02 [(none)]>create database wuxi;
                      Query OK, 1 row affected (0.01 sec)


                      db02 [(none)]>start slave;
                      Query OK, 0 rows affected (0.01 sec)


                      db02 [(none)]>show slave status \G
                      *************************** 1. row ***************************
                      Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.10.234
                      Master_User: sync
                      Master_Port: 3306
                      Connect_Retry: 60
                      Master_Log_File: mysql-bin.000001
                      Read_Master_Log_Pos: 1066
                      Relay_Log_File: ansible_nfs-relay-bin.000005
                      Relay_Log_Pos: 454
                      Relay_Master_Log_File: mysql-bin.000001
                      Slave_IO_Running: Yes
                      Slave_SQL_Running: Yes
                      Replicate_Do_DB:
                      ……

                      此时故障解决,恢复主从复制。

                      在主库创建tianyi库

                      到从库上查看,OK!

                      往期回顾 点击即可阅读
                      每日10句超实用日常英语口语
                      ★Full Stack 运 维 从 0 到 1

                      收藏 | 《实战网络设计手写笔记》

                      收藏 | 《Linux基础入门手写笔记》

                      MySQL多实例配置

                      MySQL主从复制搭建

                      延时从库的配置及删库恢复案例

                      收藏 | 常用正则表达式速查手册

                      收藏 | 运维常见故障及分析处理28计

                      ★收藏 | 网络设备巡检命令整理

                      基本/高级ACL实验配置

                      理论+实验详解NAT技术

                      SAN存储网络交换机系列之初始化

                      华为 | GRE over IPSec的组网

                      IPSecVPN介绍 & IPSecVPN实验演示

                      JumpServer堡垒机,预防飞来之“锅”



                      推荐阅读
                      • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
                      • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
                      • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
                        本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
                      • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
                        本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
                      • Nginx使用AWStats日志分析的步骤及注意事项
                        本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
                      • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
                        本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
                      • VScode格式化文档换行或不换行的设置方法
                        本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
                      • 向QTextEdit拖放文件的方法及实现步骤
                        本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
                      • Linux重启网络命令实例及关机和重启示例教程
                        本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
                      • Metasploit攻击渗透实践
                        本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
                      • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
                      • 在使用Visual Studio 2019评估Blazor时,将taghelper添加到剃刀文件时会出现错误。错误信息是"标记助手:@addTagHelper *,BlazorPOC.Validations"。需要在文件顶部添加@using语句"@using BlazorPOC.Validations"来解决这个问题。 ... [详细]
                      • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
                      • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
                      • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
                      author-avatar
                      此人已死689
                      这个家伙很懒,什么也没留下!
                      PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
                      Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有