本地Mysql和RDS搭建主从环境

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 和RDS-Mysql配置主从复制,实现本地的数据备份。

上一篇文章中已经结合官方文档,说明了如何将RDS-Mysql物理备份恢复到本地,这篇文章是关于如何搭建和RDS—Mysql主从配置的步骤。本篇文章以5.7为例。

但是有一些需要注意的地方:

  1. 使用这个方法搭建的主从环境,容易受到一些因素的影响,比方本地网络或者RDS本身出现的一些问题(binlog被删除),那么主从的搭建可能会中断。
  2. 所以如果想要搭建比较稳定的环境,在阿里云上可以参考使用DTS进行配置。

前提条件:

本地已经将RDS的物理文件进行了成功恢复。参考:https://yq.aliyun.com/articles/692056?spm=a2c4e.11155435.0.0.608333123an7eS

第一步

关于本地mysql的cnf文件内容,可以参考下面的格式:

#innodb_checksum_algorithm=crc32
#innodb_log_checksum_algorithm=strict_crc32
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1048576000
#innodb_fast_checksum=false
#innodb_page_size=16384
#innodb_log_block_size=512
#innodb_undo_directory=./
#innodb_undo_tablespaces=0
server_id=197
#redo_log_version=1
#server_uuid=e4323bd1-072f-11e9-97a1-7cd30ad32d28
#master_key_id=0
binlog_format=ROW
master-info-repository=file
relay-log-info-repository=file
gtid_mode=on
enforce-gtid-consistency=true
#skip-grant-tables

第二步

打开备份解压文件可以看到文件xtrabackup_slave_info,其中第一行就是需要在本地MySQL执行的命令,它表示在备份结束时刻RDS当前GTID值’

image

下面执行的命令,请参考:

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed, 1 warning
mysql> truncate table  slave_relay_log_info;
Query OK, 0 rows affected (0.02 sec)

mysql> truncate table  mysql.slave_master_info;
Query OK, 0 rows affected (0.01 sec)

mysql> truncate table  mysql.slave_worker_info;
Query OK, 0 rows affected (0.00 sec)

mysql> reset slave;
Query OK, 0 rows affected (0.01 sec)

mysql> reset master;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL gtid_purged='6032a4a0-f50e-11e8-b374-7cd30a5a30b4:1-260056, 97e5b5fb-367d-11e9-af9e-7cd30aeb45ba:1-54309, bfe3ada0-1f7a-11e9-acd2-58605f589df3:1-161356, cf84fc60-072f-11e9-b0f9-7cd30ab8f5b0:1-310126, e4323bd1-072f-11e9-97a1-7cd30ad32d28:1-219582';
Query OK, 0 rows affected (0.01 sec)

mysql> change master to master_host='rm-2zeu5m7c190y65ppxx.mysql.rds.aliyuncs.com',master_user='ali',master_port=3306,master_password='xxx',master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

第三步

进行验证:

然后执行 show slave status 就能够看到下面的结果了。 Slave_IO_Running: Yes Slave_SQL_Running: Yes
然后 Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates 说明主从现在的数据是一致的了。

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: rm-2zeu5m7c190y65ppglo.mysql.rds.aliyuncs.com
                  Master_User: ali
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000033
          Read_Master_Log_Pos: 192183
               Relay_Log_File: jun-relay-bin.000002
                Relay_Log_Pos: 108422
        Relay_Master_Log_File: mysql-bin.000033
             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: 192183
              Relay_Log_Space: 108627
              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: 1441442229
                  Master_UUID: 97e5b5fb-367d-11e9-af9e-7cd30aeb45ba
             Master_Info_File: /home/mysql/aliyun-mysql57/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: 97e5b5fb-367d-11e9-af9e-7cd30aeb45ba:54310-54677
            Executed_Gtid_Set: 6032a4a0-f50e-11e8-b374-7cd30a5a30b4:1-260056,
97e5b5fb-367d-11e9-af9e-7cd30aeb45ba:1-54677,
bfe3ada0-1f7a-11e9-acd2-58605f589df3:1-161356,
cf84fc60-072f-11e9-b0f9-7cd30ab8f5b0:1-310126,
e4323bd1-072f-11e9-97a1-7cd30ad32d28:1-219582
                Auto_Position: 1
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
1 row in set (0.00 sec)

ERROR:
No query specified

mysql>

在rds上创建新表,插入数据。
image

查看本地数据:
image

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
13天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
32 3
|
13天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
27 3
|
20天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
36 1
|
23天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
72 2
|
2月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
416 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
1月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
65 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
1月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
28 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
1月前
|
Oracle 关系型数据库 MySQL
Mysql(1)—简介及Windows环境下载安装
MySQL 是一个流行的关系型数据库管理系统(RDBMS),基于 SQL 进行操作。它由瑞典 MySQL AB 公司开发,后被 Sun Microsystems 收购,现为 Oracle 产品。MySQL 是最广泛使用的开源数据库之一,适用于 Web 应用程序、数据仓库和企业应用。
55 2
|
1月前
|
弹性计算 JSON 关系型数据库
使用ROS模板基于ECS和RDS创建WordPress环境
使用ROS模板基于ECS和RDS创建WordPress环境
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo