记一次阿里云EC服务器docker内 mysql 与RDS配置主从设置

本文详细介绍如何通过阿里云RDS服务将数据迁移到EC上的MySQL数据库,包括配置docker-compose.yaml,设置my.cnf参数,利用数据传输服务迁移数据,以及在从库上设置GTID等关键步骤。

1. 创建EC上的数据库

要安装RDS对应的版本,上RDS执行

select version(); -- 返回 8.0.16

这里贴我使用的 docker-compose.yaml

... ...
	mysql:
	    container_name: mysql
	    # 根据自己的版本
	    image: mysql:8.0.16
	    volumes:
	      - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
	      - ./mysql/data:/var/lib/mysql
	    environment:
	      - MYSQL_ROOT_PASSWORD=root
	    ports:
	      - 3307:3307
	    command: ['--default-authentication-plugin=mysql_native_password']
... ...

对应的 my.cnf

[mysqld]
server_id 				= 2                            #指定从库的server_id,不能与主库相同
read_only 				= 1                            #设置从库为只读
port = 3307                                            #指定端口号为3307,最好不要跟主库相同
replicate-do-db         =  test_db   				   #需要同步的数据库名字
replicate-ignore-db     =  mysql                  	   #不需要同步的数据库
replicate-ignore-db     =  information_schema
replicate-ignore-db     =  performance_schema

sql_mode				 = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
bind-address			 = 0.0.0.0					   #开放端口

log-bin                  = mysql-bin                   #二进制日志,记录对数据发生变化的sql语句,以二进制方式保存在磁盘中
log-bin-index            = mysql-bin.index             #指定索引文件,此文件指示当前使用了哪个日志文件
relay-log                = relay-log                   #中继日志,用来存放master的bin中的内容,看上方原理
relay_log_index          = relay-log.index             #指定索引文件,此文件指示当前使用哪个日志文件
binlog_format   		 = ROW                         #binlog的格式,ROW格式记录方式成每一行数据被修改,然后在slave端再对相同的数据进行修改


gtid_mode				 = on                          #开启GTID
enforce_gtid_consistency = on                          #只记录对基于GTID的复制安全
log-slave-updates 		 = 1                           #允许下端接入slave


[mysqldump]                                            #数据库备份
quick                                                  #强制mysqldump从服务器一次一行地检索表中的行而不是检索所有行并在输出前将它缓存到内存中

创建数据库

docker-compose up -d

2. 利用数据传输服务拷贝数据

登陆阿里数据传输服务,选择数据迁移,选择对应RDS所在地域,创建数据迁移,填写配置,预检查,然后先不要进行下一步
页面别关,用另外页面进RDS,执行

show master status;

得到类似下面这样的数据
在这里插入图片描述
保存一下 Executed_Gtid_Set 字段结果
点下一步执行数据迁移,等待数据迁移结束
进 docker容器内从库,执行

--- 这里改外之前自己保存的 Executed_Gtid_Set 字段的值 
set global gtid_purged="323cc70c-27a0-11ea-9d0a-00163e0c804c:1-27250225,c63d9d7d-5d0f-11ea-ab2b-0242c0a85005:1-195";

再执行

CHANGE MASTER TO 
	master_host = 'RDS数据库地址',
	master_user = '数据库用户名',
	master_password = '密码',
	master_auto_position = 1;

最后启动

start slave;

查看是否成功

show slave status;

参考:

mysql阿里云RDS数据库从库搭建

<think>好的,我需要回答用户关于云端服务器搭建原理的问题,包括构建和部署的架构设计及原理详解。首先,用户的需求是了解如何从零开始构建云端服务器,可能涉及架构设计、技术选型、部署步骤等。我需要结合已有的引用内容,特别是引用[1]提到的负载均衡作为高可用架构的核心组件,引用[2]中的云边协同架构优势,以及引用[3]提到的Amazon SageMaker在模型部署中的作用。 首先,云端服务器的搭建通常基于分布式架构,需要考虑高可用、可扩展和容错能力。引用[1]指出负载均衡是关键组件,所以架构设计中必须包含负载均衡器,比如Nginx或AWS的ELB。接下来,引用[2]提到云边协同可以优化资源利用,这可能涉及云计算边缘计算的结合,但用户的问题集中在云端,所以可能主要讨论云计算部分,如使用虚拟化技术、容器化部署(Docker、Kubernetes)以及自动扩展策略。 然后,部署流程需要包括环境配置、服务部署、监控和维护。引用[3]提到Amazon SageMaker简化了机器学习模型的部署,这可能类比到一般服务器的部署,可以使用CI/CD管道(如Jenkins、GitHub Actions)自动化部署流程,结合云服务商的管理工具(AWS EC2、S3等)来管理服务器实例和存储。 在原理详解部分,需要解释虚拟化技术如何实现资源隔离,比如Hypervisor或容器引擎的工作原理。负载均衡的算法,如轮询、最少连接数,以及健康检查机制。此外,自动扩展如何根据流量动态调整资源,涉及监控指标(CPU、内存使用率)和策略设置。 可能还需要考虑安全性,如防火墙设置、SSL/TLS加密,以及数据备份和灾难恢复方案。引用[1]提到负载均衡用于数据库服务器,因此数据库的读写分离和主从复制也是架构的一部分。 最后,生成相关问题时要围绕用户可能进一步询问的方向,比如具体技术的选择(如Kubernetes vs Docker Swarm)、成本优化、安全性措施,或者如何集成监控工具(Prometheus、Grafana)等。</think>### 云端服务器的搭建原理架构设计 #### 1. **核心架构设计** 云端服务器的核心目标是实现**高可用性**、**弹性扩展**和**容错能力**,通常采用分层架构: - **负载均衡层**:通过负载均衡器(如Nginx、AWS ELB)分配流量到多个服务器实例,避免单点故障[^1]。 算法示例:轮询(Round Robin)、最小连接数(Least Connections)。 - **计算层**:使用虚拟化(VM)或容器化(Docker/Kubernetes)技术部署应用实例。 例如,Kubernetes集群可自动管理容器生命周期,支持横向扩展。 - **存储层**:采用分布式存储(如AWS S3、Ceph)或数据库集群(MySQL主从复制、Redis集群)。 - **网络层**:通过VPC(Virtual Private Cloud)隔离网络环境,结合CDN加速静态资源分发。 #### 2. **部署流程** 1. **基础设施配置** - 在云平台(AWS、阿里云)创建虚拟机实例,安装操作系统(如Ubuntu)。 - 配置安全组规则,开放必要端口(HTTP 80/HTTPS 443)。 - 挂载云存储(如EBS)或连接对象存储服务(S3)。 2. **服务部署** - **容器化部署**:通过Docker打包应用,Kubernetes编排容器。 ```dockerfile FROM python:3.8 COPY app.py /app/ RUN pip install flask CMD ["python", "/app/app.py"] ``` - **自动化部署**:使用CI/CD工具(如GitHub Actions、Jenkins)触发代码构建和推送。 3. **监控维护** - 集成Prometheus+Grafana监控资源使用率(CPU、内存)。 - 设置自动扩缩容策略(如AWS Auto Scaling基于CPU阈值调整实例数量)。 #### 3. **关键技术原理** - **虚拟化技术**:Hypervisor(如KVM)将物理资源抽象为虚拟资源,实现多租户隔离。 - **负载均衡算法**: 数学表示:假设有$n$个服务器,权重为$w_i$,流量分配比例按$w_i / \sum_{j=1}^n w_j$计算。 - **自动扩展策略**: 当请求量$Q$超过阈值$T$时,新增实例数$k = \lceil (Q - T)/C \rceil$($C$为单实例容量)。 #### 4. **实际案例** 某电商平台使用AWS搭建云端服务器: - 前端通过CloudFront(CDN)加速页面加载。 - 应用层部署在EC2实例组,由ELB分配流量。 - 数据库使用RDSMySQL主从架构,通过读写分离提升性能[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值