gh-ost:MySQL数据库在线表结构更改工具

一、gh-ost简介

gh-ost是GitHub开源的MySQL在线表结构更改工具,它可以在不影响现有业务的情况下对MySQL表结构进行实时更改。与传统的ALTER TABLE操作不同,gh-ost的实时更改不会阻塞从表、索引的读写操作,同时不会影响从库的复制进程。gh-ost在运行过程中还提供多种监控和日志输出方式,方便我们观察和排查问题。gh-ost的优秀设计和功能,使得它在大型线上业务系统中得以广泛应用。

二、gh-ost的优势

1、在线化更改表结构操作,不需要业务系统停机维护。

2、通过binlog数据采集UPDATE和DELETE语句,避免了锁表操作。

3、可以通过split table方式对大表进行更改,提高更改效率。

4、支持多种监控输出方式,方便我们观察和定位问题。

5、支持大量的灵活性和可配置性选项。

三、gh-ost的使用

ghost

gh-ost可以通过GitHub上的源代码进行下载和安装。安装方法请参考GitHub官方文档

ghost装机教程

在安装gh-ost之前,需要检查当前MySQL的版本是否支持binlog streaming API。如果MySQL版本低于5.6.2或者不支持该功能,需要升级或者手动启用该功能。

使用gh-ost需要指定更改的表和更改的方式,可以通过如下命令来进行操作:


# 进入gh-ost的安装目录
cd /usr/local/gh-ost/bin
# 进行在线更改,表名为test_table,更改方式为add_column,添加一列列名为new_column
./gh-ost --user=xxxx --host=127.0.0.1 --password=xxxx --database=testdb --table=test_table --alter="add_column:new_column int" --allow-on-master --concurrency=4 --chunk-size=1000 --max-load=Threads_connected=25 --critical-load=Threads_connected=100

–allow-on-master表示允许在主库上执行更改操作,–concurrency表示并发修改数量,–chunk-size表示每个操作的块大小,–max-load表示最大负载,–critical-load表示达到负载时停止操作。更多参数请参考gh-ost官方文档

ghost face歌词

gh-ost中的面向对象编程非常清晰,通过定制化的Option和Logging模块在实现高度的可扩展性的同时也保证了代码的可读性。例如ConfigRuntimeOptiont类定义了在Runtime切片过程中的相关信息,MySQLConnectionOption类定义了与MySQL的连接信息,Logging替代了传统的logging库,并通过在进行组件划分和多种输出方式来实现了定制化log。

ghost face

我们可以通过如下方式来输出gh-ost的日志信息:


./gh-ost --user=xxxx --host=127.0.0.1 --password=xxxx --database=testdb --table=test_table --alter="add_column:new_column int" --log-output=FILE --log-file=/var/log/gh-ost.log

–log-output指定输出方式,–log-file指定日志文件。

ghost怎么备份

在更改表结构前,我们应该做好数据备份工作,以免不可预计的错误导致数据丢失。可以使用如下命令进行快照备份:


mysqldump -uroot -p --no-data dbname > struct.sql
mysqldump -uroot -p --skip-lock-tables --skip-add-locks --no-create-info dbname table_name > data.sql

其中第一条命令保存了当前数据库的结构信息,第二条命令保存了当前表的数据信息。更多备份方式请参考MySQL官方文档

ghost安装系统步骤

gh-ost可以通过下载源代码或者二进制文件进行安装。官方提供了多种安装方式,包括源代码的编译安装和二进制文件的安装,还可以使用Docker镜像进行部署。可以参考GitHub官方文档了解更多信息。

ghost电子烟

此处与gh-ost无关,不予讨论。

ghost备份

除了手动备份外,我们还可以使用mysqldump或者xtrabackup等第三方数据库备份工具来进行自动备份。备份的频率依据实际情况而定,可以通过LVM或者RAID等技术将备份数据存放在不同磁盘上,以此提高数据安全性。

ghost face音源

此处与gh-ost无关,不予讨论。

ghost硬盘对硬盘克隆

硬盘对硬盘克隆方式是将整个磁盘直接复制到另一个磁盘或者硬盘分区中,以此进行磁盘的备份或者数据迁移。在使用gh-ost进行在线表结构更改时,我们也可以通过硬盘对硬盘克隆的方式进行备份。例如以下命令:


dd if=/dev/sda of=/dev/sdb

该命令将/dev/sda的数据直接复制到/dev/sdb中。

总之,gh-ost可以让我们在不停机的情况下进行在线表结构更改,避免了业务中断和数据丢失的风险。同时,gh-ost的运行效率高,可以对大型表进行快速高效的更改。我们需要谨慎使用gh-ost,并结合业务场景和实际情况进行合理的配置和操作,以保证业务的稳定性和数据安全性。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/154141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-15 03:26
下一篇 2024-11-15 03:26

相关推荐

  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • 如何通过jstack工具列出假死的java进程

    假死的java进程是指在运行过程中出现了某些问题导致进程停止响应,此时无法通过正常的方式关闭或者重启该进程。在这种情况下,我们可以借助jstack工具来获取该进程的进程号和线程号,…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • 注册表取证工具有哪些

    注册表取证是数字取证的重要分支,主要是获取计算机系统中的注册表信息,进而分析痕迹,获取重要证据。本文将以注册表取证工具为中心,从多个方面进行详细阐述。 一、注册表取证工具概述 注册…

    编程 2025-04-29
  • Python程序的三种基本控制结构

    控制结构是编程语言中非常重要的一部分,它们指导着程序如何在不同的情况下执行相应的指令。Python作为一种高级编程语言,也拥有三种基本的控制结构:顺序结构、选择结构和循环结构。 一…

    编程 2025-04-29
  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28
  • Python怎么导入数据库

    Python是一种高级编程语言。它具有简单、易读的语法和广泛的库,让它成为一个灵活和强大的工具。Python的数据库连接类型可以多种多样,其中包括MySQL、Oracle、Post…

    编程 2025-04-28

发表回复

登录后才能评论