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

在阿里云与腾讯云筹建传统主从复制环境_mysql

MySQL主从复制环境可以说是一切高可用的基础。它的原理也比较简单,下面我们先来了
文章目录[隐藏]
  • Master上设置
  • Slave操作
  • 验证

在阿里云与腾讯云搭建传统主从复制环境


mysql主从复制环境可以说是一切高可用的基础。它的原理也比较简单,下面我们先来了解下主从复制的原理:


在阿里云与腾讯云筹建传统主从复制环境_mysql
虽然图上一共有7步,可以简化一下帮助记忆和理解:




  1. Master上进行改、写操作;

  2. MySQL把修改数据写进binlog;

  3. Slave发起IO thread,把master上新的binlog拉取到本地中继日志中;

  4. 重放中继日志,让在master上面的修改、新增操作在Slave本机上重新运行一遍;

  5. Slave按照正常的操作也会把操作写进本地的binlog。


硬件环境


本人有阿里云、腾讯云各一台屌丝机,因此用来试验,为保护隐私,把ip已经替换了,但不影响操作。




























主机ip端口版本主从
阿里云192.168.1.1003306MySQL5.7.14Master
腾讯云192.168.1.2003306MySQL5.7.18Slave

Master上设置


开启binlog设置server-id


在/etc/my.cnf中的mysqld选项下编辑,然后重启


[mysqld] log-bin=mysql-bin server-id=1003306

/etc/init.d/mysql restart

创建复制专用账号


mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slave; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.200';

导出数据同步到腾讯云上面


使用mysqldump导出所有数据库数据,另外备份文件中会记录当前的binlog文件和position。


#防止DDL、写操作 mysql>FLUSH TABLES WITH READ LOCK; shell>mysqldump -uroot -p --single-transaction --master-data=2 -A>back.sql

也通过以下方式可以查看:


[email protected] [mysql]>show master status; +------------------+----------+--------------+------------------+-------------------+ | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000045 |      939 |              |                  |                   | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)

解锁表


mysql> UNLOCK TABLES;

远程传文件过去


如果数据文件偏大或者数据多,可以使用percona的xtrabackup进行备份压缩,再传过去。


rsync back.sql [email protected]:/root

Slave操作


开启binlog设置server-id


在/etc/my.cnf中的mysqld选项下编辑


[mysqld] log-bin=mysql-bin server-id=2003306

重启MySQL服务


导入数据


shell>mysqldump -uroot -p --databases t1 

指向Master


这里的MASTER_LOG_FILEMASTER_LOG_POS是刚才show master status的值,当然也可以使用more查看应该指定的位置。


CHANGE MASTER TO MASTER_HOST='192.168.1.200',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mysql-bin.000045',MASTER_LOG_POS=939;

这里的MASTER_LOG_FILEMASTER_LOG_POS是刚才show master status的值,当然也可以使用more查看应该指定的位置。


shell>more back.sql -- MySQL dump 10.13  Distrib 5.7.14, for linux-glibc2.5 (x86_64) -- -- Host: localhost    Database:  -- ------------------------------------------------------ -- Server version   5.7.14-log  /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_COnNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZOnE=@@TIME_ZONE */; /*!40103 SET TIME_ZOnE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;  -- -- Position to start replication or point-in-time recovery from --  CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000045', MASTER_LOG_POS=939;

启动slave


mysql>start slave; mysql>show slave status/G *************************** 1. row ***************************                Slave_IO_State: Waiting for master to send event                   Master_Host: 192.168.1.200                   Master_User: repl                   Master_Port: 3306                 Connect_Retry: 60               Master_Log_File: mysql-bin.000045           Read_Master_Log_Pos: 939                Relay_Log_File: relay-bin.000001                 Relay_Log_Pos: 4         Relay_Master_Log_File: mysql-bin.000045              Slave_IO_Running: Yes             Slave_SQL_Running: Yes               Replicate_Do_DB:            Replicate_Ignore_DB:             Replicate_Do_Table:         Replicate_Ignore_Table:        Replicate_Wild_Do_Table:    Replicate_Wild_Ignore_Table:                     Last_Errno: 0                    Last_Error:                   Skip_Counter: 0           Exec_Master_Log_Pos: 939               Relay_Log_Space: 154               Until_Condition: None                Until_Log_File:                  Until_Log_Pos: 0            Master_SSL_Allowed: No            Master_SSL_CA_File:             Master_SSL_CA_Path:                Master_SSL_Cert:              Master_SSL_Cipher:                 Master_SSL_Key:          Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No                 Last_IO_Errno: 0                 Last_IO_Error:                 Last_SQL_Errno: 0                Last_SQL_Error:    Replicate_Ignore_Server_Ids:               Master_Server_Id: 23306                   Master_UUID: 9a13d860-b55b-11e6-bf33-00163e054164              Master_Info_File: /data/mysql/mysql3306/data/master.info                     SQL_Delay: 0           SQL_Remaining_Delay: NULL       Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates            Master_Retry_Count: 86400                   Master_Bind:        Last_IO_Error_Timestamp:       Last_SQL_Error_Timestamp:                 Master_SSL_Crl:             Master_SSL_Crlpath:             Retrieved_Gtid_Set:              Executed_Gtid_Set: 3feb36dc-ef7e-11e6-a535-52540043f116:1-337886                 Auto_Position: 0          Replicate_Rewrite_DB:                   Channel_Name:             Master_TLS_Version:  1 row in set (0.00 sec)

这里看到Slave_IO_Running和Slave_SQL_Running双YES一般就没有问题了。


验证


现在可以在主上面进行一些新建数据库、新建数据表、插入输出等方式来验证是否主从生效。此步骤就大家自己随意发挥吧!


欢迎大家阅读《在阿里云与腾讯云筹建传统主从复制环境_mysql》,跪求各位点评,by




推荐阅读
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • MySQL 用户创建失败的解决方案
    本文详细介绍了在 MySQL 中遇到用户创建失败问题时的解决方法,包括如何正确配置环境、执行命令以及常见错误排查技巧。通过逐步指导,帮助用户顺利添加和管理 MySQL 用户。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
author-avatar
红红的累累vdHRC_958
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有