您的位置:

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,并结合业务场景和实际情况进行合理的配置和操作,以保证业务的稳定性和数据安全性。