Mysql zero downtime deployment

Why we cannot perform an alter table directly to update schema?

How mysql performs alter table:

  1. Lock the table
  2. Make a copy of the table
  3. Modify the copy (the "new table")
  4. Copy all the rows into the new table
  5. Swap the old and new table
  6. Unlock the table

The key issue here is that lock time will be quite long for large table, whick blocks online transaction.

Percona‘s solution:

  • pt-online-schema-change tool:

    How pt-online-schema-change performs alter table?

  1. Make a copy of the table
  2. Modify the copy (the "new table")
  3. Copy all the rows into the new table (do in small chunks,  insert .. select)
  4. Add triggers to keep track of changes
  5. Swap the old and new table

Pros:

Remove the Lock/unlock steps, no longer blocking
     Replication-Awareness
     Load awareness -> chunk size is auto adjusted

Cons:
     About 4th slower than alter table directly

Limitation:
     Cannot handle foreign key perfectly

xtrabackup

时间: 2024-12-23 04:48:38

Mysql zero downtime deployment的相关文章

Docker Zero Deployment and Secrets

在本节中,主要介绍在Docker swarm中如何不中断应用高可靠性的情况下更新服务和stack.这也叫做zero downtime deployment.还有就是swam如何管理密钥,保证容器之间的通信是安全可靠的. 一.  Zero downtime deployment 1. 比较常见的更新方法 (1) Rolling updates (2) Blue-green deployments (3)Canary releases 2. Rolling updates 在关键的应用中,每个应用的

006.kubernets之Deployment简单部署

一 Deployment相对于RC的优势 RS与Deployment主要用于替代RC.RS的全称为Replica Set.相对于RC,RS与Deployment的优势如下: RC只支持基于等式的selector,如env=dev或者environment!=qa.但在RS中,还支持新的基于集合的selector,如version in (v1.0,v2.0)或者env not in (dev,qa).这给复杂的运维管理带来方便 使用Deployment升级Pod只需要定义Pod的最终状态,k8s

Kubernetes之kubectl常用命令使用指南:2:故障排查

kubectl是一个用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能,是在使用kubernetes中非常常用的工具.这里我们会通过一些简单的实例来展现其中一些高频命令的使用方法. 更为重要的是这些命令使用的场景以及能够解决什么样的问题.上篇文章我们介绍了创建和删除相关的几条命令,这篇文章我们来看一下出现问题时最常用的另外九条命令. 常用命令 kubectl故障排查相关,本文将会简单介绍一下如下命令 项番 命令 说明 No.1 version 显示客户

[转帖] k8s kubectl 命令行技巧

https://jimmysong.io/posts/kubectl-cheatsheet/ Kubectl Cheatsheet kubectl命令技巧大全Posted on November 3, 2017 东坝郊野公园 Aug 27,2016 Fri Nov 3, 2017 2400 Words|Read in about 5 Min Tags: kubernetes Kubectl 自动补全 Kubectl 上下文和配置 创建对象 显示和查找资源 更新资源 修补资源 编辑资源 Scale

kubernetes资源创建详解【持续完善中】

目录 资源创建详解 一:Pod及常用参数 1.简介 2.模板 3.删除pod 4.设置Pod主机名 5.镜像拉取策略(ImagePullPolicy) 二:RC 1.简介 2.模板 三:Deployment 1.简介 2.模板 四:HPA 1.简介 2.模板 五:StatefulSet 1.简介 2.模板 六:PV和PVC 八:扩展 8.1.Pod调度到指定的Node 资源创建详解 一:Pod及常用参数 1.简介 2.模板 3.删除pod 示例流程如下: 用户发送删除pod的命令,默认宽限期是3

kubectl 命令梳理

kubectl 命令梳理 Kubctl 命令是操作 kubernetes 集群的最直接的途径,下面对相关命令进行简介: 语法 $ kubectl [command] [TYPE] [NAME] [flags] command:子命令 TYPE:资源类型 NAME:资源名称 flags:命令参数 命令帮助 kubectl命令的帮助很详细,kubectl -h会列出所有的子命令,在任何子命令后跟 -h,都会输出详细的帮助以及用例,遇到问题可以随时查看帮助. 资源对象 kubectl大部分子命令后都可

kubectl 命令技巧大全

参考1:https://jimmysong.io/kubernetes-handbook/guide/kubectl-cheatsheet.html?h=kubectl Kubctl 命令是操作 kubernetes 集群的最直接和最 skillful 的途径,这个60多MB大小的二进制文件,到底有啥能耐呢?请看下文: Kubectl 自动补全 $ source <(kubectl completion bash) # setup autocomplete in bash, bash-compl

K8S命令-Kubectl 命令大全

参考1:https://jimmysong.io/kubernetes-handbook/guide/kubectl-cheatsheet.html?h=kubectl Kubctl 命令是操作 kubernetes 集群的最直接和最 skillful 的途径,这个60多MB大小的二进制文件,到底有啥能耐呢?请看下文: Kubectl 自动补全 $ source <(kubectl completion bash) # setup autocomplete in bash, bash-compl

011.Kubernetes使用共享存储持久化数据

本次实验是以前面的实验为基础,使用的是模拟使用kubernetes集群部署一个企业版的wordpress为实例进行研究学习,主要的过程如下: 1.mysql deployment部署, wordpress deployment部署, wordpress连接mysql时,mysql的 pod ip易变 2.为mysql创建 service,申请固定 service lp 3. wordpress外部可访问,使用 node port类型的 service 4. nodeport类型的 service