*世博在线娱乐体育*>>>官网中心*欢迎光临<<<

世博在线娱乐体育为用户提供了一站式处事-*世博在线娱乐体育*&gt;&gt;&gt;官网中心*欢迎光临&lt;&lt;&lt;

*世博在线娱乐体育*>>>官网中心*欢迎光临<<<

栏目分类
*世博在线娱乐体育*>>>官网中心*欢迎光临<<<
资讯
娱乐
新闻
旅游
汽车
电影
世博在线娱乐体育为用户提供了一站式处事-*世博在线娱乐体育*&gt;&gt;&gt;官网中心*欢迎光临&lt;&lt;&lt;
发布日期:2025-05-30 07:48    点击次数:182

世博在线娱乐体育为用户提供了一站式处事-*世博在线娱乐体育*>>>官网中心*欢迎光临<<<

数据库手脚数字化用户的中枢金钱世博在线娱乐体育,其迁徙是一项复杂且进攻的任务,尽头是在VMware平台替换及IT基础设施更新换代之时,尤其需要保险数据库迁徙过程的沉稳、运动。

坚信服推出的数据库治理平台(DMP)是为干系型数据库量身打造的运维管相识决决策,它整合了数据库日常运维所需的各项功能,包括但不限于数据库的创建、实时监控、数据备份以及灾荒收复等。此外,DMP 还配备了先进的数据库迁徙器具DTS,使企业大约将数据库从VMware平台或物理处事器无缝迁徙至坚信服的云计较环境中,确保了迁徙过程的高成果、安全性和可靠性。

坚信服为心仪用户不同场景下的迁徙需求,提供丰富的MySQL数据库迁徙决策:

SCMT信服云迁徙器具大约驱散针对常见单机数据库的迁徙,复古点对点格局、热备格局等多种迁徙神情,操作简便,对业务影响小。

DTS数据库迁徙器具是坚信服数据库治理平台DMP针对迁徙场景拓荒的专用器具,复古主从同步迁徙,通过建立MySQL的主从复制,将数据从主库同步到从库,然后进行扮装切换。频频情况下禁受全量+增量的迁徙神情,可是当5.6 -> 8.0跨版块迁已而,由于会存在迁徙后sql语法不兼容的情况,因此需要禁受全量迁徙的神情。

物理备份/逻辑备份迁徙,靠近DMP平台无法心仪特定的迁徙条目或要求时,坚信服将调和专科的数据库大家DBA来制定和引申定制化的物理备份/逻辑备份迁徙决策。

本文重心先容使用 DMP 的 DTS 器具对 MySQL 数据库进行全量加增量的数据迁徙神情,亦然当今较为保举的MySQL迁徙神情。它诳骗mydumper/myloader逻辑备份收复工夫与MySQL主从复制旨趣,通过与数据库里面组件的细巧合作,驱散数据的高效迁徙。

迁徙复古版块:

MySQL 5.6 → MySQL 8.0 全量迁徙

MySQL 5.6-5.7 → MySQL 5.7 全量+增量迁徙

MySQL 5.7、8.0 → MySQL 8.0 全量+增量迁徙

迁徙架构复古:

MySQL 单机 → MySQL 单机

MySQL 主从 → MySQL 主从

MySQL 单机 → MySQL 主从

MySQL 主从 → MySQL 单机

一、DTS 迁徙工夫旨趣

本文重心先容使用DMP的DTS器具对MySQL数据库进行全量加增量的数据迁徙神情,亦然当今较为保举的MySQL迁徙神情,复古跨版块(5.6-5.7)、复古跨平台迁徙。

DMP的DTS复古mydumper + 主从复制神情迁徙,mydumper是一个用于MySQL的开源热备份器具,它不错在不锁定表的情况下进行数据备份。使用mydumper和主从复制神情进行数据迁徙的基本旨趣如下:

源、筹画数据库开动化数据并竖立主从干系;

从库会生成两个线程,一个I/O线程,一个SQL线程;

I/O线程会去央求主库的binlog,并将得到的binlog写到土产货的relay-log(中继日记)文献中;

主库会生成一个log dump线程,用来给从库I/O线程传输binlog;

SQL线程,会读取relay-log文献中的日记,并领悟成sql语句逐个引申。

坚信服DTS数据迁徙器具,通过自动化和程序化的数据迁徙战略,大幅度缩短操作难度并提普及移成果。该器具通过直不雅的可视化界面,为用户提供了一站式处事,包括筹画数据库的构建、迁徙前的抽象查抄、实时监控迁徙过程以及高效切换遏抑。这种集成化的方法不仅简化了数据库的创建和性能优化,还确保了用户大约精准地掌合手并优化悉数这个词迁徙经由,以相宜企业对数据库迁徙的复杂和多变需求。

二、DTS 迁徙预防事项

增量迁徙阶段禁受GTID格局的主从同步神情,在迁徙前源端需开启BINLOG,体式为ROW,且怒放GTID,不然只可进行全量迁徙,不可作念“全量+增量”格局迁徙。

由于mydumper器具不复古迁徙触发器trigger,如源端数据库有触发器且需要迁徙到筹画端数据库,需在迁徙完成后手动迁徙触发器trigger。

“全量迁徙”类型任务,在全量备份阶段,源端会出现元数据锁,拦截DDL语句,因此在此阶段源库无法引申DDL语句;不异的,“全量+增量迁徙”类型任务,在源库导出阶段时代,源库也无法引申DDL语句。

MySQL 5.7到MySQL 8.0跨版块“全量+增量迁徙”类型任务时,不复古源库引申语句:grant all privileges on *.* to user@'%' identified by 'password';。

“全量+增量迁徙”类型任务迁徙过程中,无法同步源库的创建用户、修改用户权限操作,是以在迁徙过程中应幸免增批改用户权限。

源端存在的空库(database下无任何数据库对象)不会被迁徙。

三、迁徙过程及预防事项

(一)迁已而辰评估

字据迁徙的数据量和迁徙过程中的操作,悉数这个词迁徙过程时辰散播如下:

主从复制迁徙范例概览

(二)源库信息网罗

在迁徙前需要了解源环境和筹画环境的硬件互异,不错评估迁徙的可行性和风险,包括CPU、内存、磁盘基础设施的建立和诳骗率,基于硬件信息的网罗,不错合理筹画迁徙战略。

硬件信息网罗暗意

数据库信息网罗是确保迁徙过程中数据一致性的重要。通过网罗数据库的版块、数据量和建立等信息,不错制定抽象的数据迁徙筹画和考据决策。在迁徙过程中,不错通过相比源数据库和筹画数据库的数据互异来实时发现并惩办问题,确保数据的完好性和一致性。基于数据库信息的网罗,不错制定抽象的迁徙筹画,包括迁徙的时辰窗口、备份和收复战略、迁徙考据和回滚筹画等,减少迁徙过程中的不细目性和风险,确保迁徙的胜利进行。

数据库信息网罗暗意

(三)筹画数据库建立筹画

中枢业务系统数据库在迁徙至坚信服云计较平台时,可能存在CPU和内存建立弥留,或资源多余的情况,需要对原处事器进行建立变更评估。评估原则如下:

坚信服平台物理主频提出要高于原处事器或者保持持平且不低于2.0GHhz,辞谢云平台的性能低于原操作系统的主频。

合理的CPU和内存平均诳骗率在30%-70%之间,业务岑岭时也应保持在80%以内,当原VMware平台使用率逾越70%时,辩论在坚信服主机加多建立。

单实例数据库处事器建立提出16C-32C,要是32C还不可心仪业务需求,提出优化数据库,排查慢SQL语句;或转换数据库架构为集群架构,不提出再通过加多处事器建立来承载业务。

集群数据库处事器提出建立16C-32C,要是32C还不可心仪业务需求,提出优化数据库,排查慢SQL语句;或为集群加多新的节点,以承载更多的业务捕快,不提出再通过加多处事器建立来承载业务。

数据库内存在迁徙上云时提出加多,不提出缩短,荒诞缩短数据库处事器内存可能会导致数据库无法启动。建立提出在16G-64G的区间,具体建立需要通过专科的DBA进行计较,迁已而不可荒诞转换数据库处事器内存建立。

源端数据库的磁盘使用率不高于70%的情况下,迁徙过来后可保持原状。要是源端磁盘使用率高于70%,在扩容时需辩论到改日3-5年的业务增量进行测算。

单实例数据库创建完成后只可修改数据盘/日记盘的大小,不可扩容数目。举例源数据库建立了4块1T磁盘,后头扩盘时只可扩大小,举例扩容到4块2T磁盘。

集群数据库处事,只可加多数据盘/日记盘的数目,不提出扩容大小。举例源数据库建立了4块1T磁盘,后头扩盘只可扩数目,举例扩容到8块1T。

要是是P2V迁徙的系统,磁盘大小建立和原物理的保持一致,数据文献和日记文献方位的磁盘为提高IO的朦拢,提出将磁盘进行预分派。

(四)切换与回退想象

在认真引申数据迁徙之前,提出将源库克隆出测试库进行一次迁徙测试。这一范例至关进攻,因为不同的物理环境可能会导致迁徙所需的时辰出现互异。通过测试迁徙,不仅不错评估迁徙过程中可能遭遇的时辰问题,何况不错考据迁徙决策的可行性和灵验性。此外,迁徙测试还有助于识别潜在的问题和风险,从而在认真迁徙之前采选相应的夺目设施。

数据库切换前必须证实业务系统已统统住手对数据库的捕快和写入。在进行切换时,DMP允许用户聘任是否在切换过程中自动关闭源数据库。频频情况下,为了确保业务胜利上线,咱们会在业务系统上线前贯穿源数据库进行数据考据,此时无需自动关闭源数据库。关联词,要是无法确保源数据库的数据写入操作已统统住手,或者在切换过程中缅念念源数据有变化,那么在进行切换时聘任自动关闭源数据库将是一个更为恰当的设施。

数据库迁徙完成后,应更新业务系统贯穿地址,以确保通过筹画数据库的处事IP进行捕快。在汇集环境中,要是存在捕快遏抑战略,应在迁徙前调度战略,以幸免影响业务捕快。要是是白名单格局,情愿许最底层的全辞谢战略;要是是黑名单格局,则应在最表层添加允许悉数战略。待业务系统统统迁徙后,再再行启用相应的捕快遏抑战略。

在数据库凯旋迁徙并经过业务考据之后,提出立即进行全面备份。这么,在筹画数据库遭遇无法飞速惩办的问题时,不错飞速收复到迁徙后的景色。同期,提出保留源数据库的运处事态(但不要关闭处事器),以便在新平台出现问题时,大约飞速切换回源数据库赓续提供处事。

在数据库迁徙和切换过程中,必须确保源数据库环境的完好性不受松懈。要是在切换过程中遭遇特殊,或者在业务考据阶段发现问题,应立即斟酌坚信服居品线大家和数据库治理员(DBA)寻求复古。在允许的时辰限度内,应优先会诊问题,调度迁徙参数或系统建立,以飞速收复迁徙经由。

在数据库迁徙过程中,要是遭遇无法在停机窗口期内飞速惩办的特殊问题,应立即回退到源数据库环境。在回退之前,需要分析失败的原因,并字据分析驱散再行制定迁徙筹画。在决定回退时,要确保在迁徙过程中莫得新的业务数据写入到新数据库,以幸免在回退过程中丢失最新的业务数据。

如切换后发现业务有问题,不得不回切至源数据库,不错诳骗割接后的增量日记,生成SQL文献,与用户斟酌东说念主员交流明,不错在源端引申增量还原。

四、迁徙过程诠释

(一)创建迁徙任务

此处以全量+增量迁徙任务,整库迁徙的神情为例,以下是具体的操作范例:

使用DTS迁徙器具新建迁徙任务,迁徙前请确保源库已开启binlog,并开启GTID,GTID(Global Transaction ID,全局事务ID),用来强化数据库的主备一致性、故障收复,以及容错才智。用于取代昔时传统的主从复制(即:基于binlog和position的复制)。若迁徙任务为全量迁徙情况,则毋庸开启此参数。

(二)数据迁徙过程

在证实源数据库和筹画数据库的建立之后,接下来需要为数据库迁徙竖立实例参数、迁徙处事(DTS-VM,用于引申迁徙任务的器具,包括数据导出与导入、日记抽取与重放等;不会占用迁徙配额,迁徙完成后将自动删除该云主机并开释对应的资源)建立。当启动DTS器具引申迁徙任务时,它将自动进行一系列预查抄,包括考据源和筹画数据库之间的连通性、用户权限、数据库架构、数据库版块兼容性、字符集、存储引擎、系统信息、迁徙数据量等。预查抄中发现的“欠亨过项”将平直影响迁徙任务的引申,必须在迁徙前惩办;而“告警项”则频频不会妨碍迁徙过程,不错在东说念主工审核后聘任忽略,赓续引申迁徙任务。

率先进行全量迁徙过程,DTS会完成以下动作:源端数据库全量导出、筹画端数据库全量收复。全量迁徙过程中对源库业务不会产生影响,提出在业务低峰期引申,或者减少并发数并时刻不雅察对分娩业务产生的影响。悉数DTS操作过程齐会添加时辰戳知道在前端,运维东说念主员可实时监控悉数这个词迁徙过程。

在初度全量备份凯旋完成后,DTS系统将干涉继续性的增量同步阶段。增量同步的中枢任务是实时进行主从同步。增量迁徙过程中,DTS会完成以下动作:竖立源&筹画端主从干系,重置主库、竖立GTID、主从同步、查抄主从同步景色。在此过程中,筹画端会继续得回源端binlog日记文献信息,并诳骗SQL Thread进行回放,从而驱散增量同步。这种增量同步操作不会对源数据库的业务运行形成任何影响。

字据坚信服在用户端的迁徙践诺教悔,使用千兆迁徙汇集时,全量数据迁徙的理念念速率为30MB/s,这使得每小时大要大约迁徙100GB的数据。关联词,迁徙速率受多种要素影响,包括源数据库的数据结构、物理汇集条目以及带宽遏抑。因此,骨子迁徙速率需要字据具体情况进行评估和调度。

(三)停库切换过程

数据库迁徙切换过程需要停库中断业务,在细目了停机时辰后,应向各业务部门发布存眷见告,住手业务和应用对源数据库的捕快,幸免产生数据丢失等巧合情况产生。同期需调和业务东说念主员、运维东说念主员、应用厂商、坚信服厂商等多方责任主说念主员协助保险迁徙切换和业务考据责任。

全量迁徙任务待任务引申完成后,即数据库迁徙完了,完成切换,业务可捕快新实例进行业务考据;全量+增量迁徙任务,需手动引申割接,割接完成后,业务捕快新实例进行业务考据。

在数据库切换经由统统引申完了后,悉数源端数据将被凯旋迁徙至筹画端数据库。此时,不错对源端和筹画端数据库进行贯穿,以进行数据的查抄和校验,确保数据库景色的一致性。完成数据校验后,应调和业务团队成员进行业务捕快测试。这一测试过程至关进攻,它确保了从业务角度来看,系统大约往常责任,心仪业务需求。

五、附录

(一)准备迁徙用户

提出使用数据库全权限用户如root@'%'(和root@'localhost'不是团结个用户)进行迁徙。要是源端不可使用全权限数据库用户引申迁徙,需在源端创建迁徙用户。创建用户及赋权语句如下:

预防:迁徙用户的密码中荒芜字符仅复古:()`~!@#$^&*_-+=|{}[]:<>.?/。

MySQL5.6、5.7、8.0 全量迁徙用户权限

mysql> create user dtsuser@'%' identified with mysql_native_password by 'dtspassword';

mysql> grant select,event,show view,lock tables,reload on *.* to dtsuser@'%';

MySQL5.6、5.7、8.0 全量+增量迁徙用户权限

mysql> create user dtsuser@'%' identified with mysql_native_password by 'dtspassword';

mysql> grant select,event,show view,lock tables,replication slave,replication client,reload on *.* to dtsuser@'%';

(二)在线开启GTID

GTID(Global Transaction ID,全局事务ID),用来强化数据库的主备一致性、故障收复,以及容错才智。用于取代昔时传统的主从复制(即:基于binlog和position的复制)。

若迁徙任务为全量+增量迁徙情况,则必须开启此参数。

以下操作主从均需要引申:

1.开启GTID预查抄

mysql> set &global.enforce_gtid_consistency=WARN;

开启此参数后,需不雅察MySQL失实日记,若有违抗GTID规定的事务会有告警,应实时调度。

竖立告警后,部分操作会被告警,请预防调度业务或关闭GTID,举例:

(1) 引申CREATE TABLE ... SELECT语句:

(MySQL8.0.21以后关于复古原子DDL的存储引擎,举例InnoDB引擎,复古该操作)

举例:

create table t1 select * from sbtest3;

检察失实日记:

2023-06-19T11:44:05.956128+08:00 82810 [Warning] Statement violates GTID consistency: CREATE TABLE ... SELECT.

修改:

create table t1 like sbtest3;

insert into t1 select * from sbtest3;

(2) 在事务中引申CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE语句:

举例:

begin;

select * from sbtest3 for update;

create temporary table t2(id int);

检察失实日记:

2023-06-19T11:52:42.254719+08:00 82810 [Warning] Statement violates GTID consistency: CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can only be executed outside transactional context. These statements are also not allowed in a function or trigger because functions and triggers are also considered to be multi-statement transactions.

修改:

幸免在事务中引申创建或删除临时表。

2.开启GTID校验

mysql> set &global.enforce_gtid_consistency=ON;

这一步一朝引申,违抗GTID的操作齐会被拒却,比如 create table as select,是以上一步WARN阶段确保无违抗GTID规定的事务。

3.开启GTID_MODE

mysql> set &global.gtid_mode=OFF_PERMISSIVE;

不雅察ongoing_anonymous_transaction_count值:

mysql> show global status like '%ongoing_anonymous_transaction_count%';

证实一经莫得匿名的事物,提出多不雅察一段时辰,要是不为0,强行修改可能会导致数据丢失。

4.GTID_MODE竖立为ON_PERMISSIVE

mysql> set &global.gtid_mode=ON_PERMISSIVE;

5.GTID_MODE竖立为ON

mysql> set &global.gtid_mode=ON;

6.从库引申(若源端为单机,忽略此范例)

mysql> stop slave;

mysql> change master to master_auto_position=1;

mysql> start slave;

mysql> show slave status\G

这一步,悉数老的relay log齐计帐掉了,新relay log包含的全是GTID操作Event。

7.修改建立文献(弥远胜利)

若未添加至建立文献,则数据库重启后参数失效,GTID关闭。

主从均引申

# vim /etc/my.cnf

在mysqld下添加以下内容

[mysqld]

gtid_mode=ON

enforce_gtid_consistency=ON

(三)修改BINLOG_FORMAT

BINLOG_FORMAT是MySQL中的一个参数,用于指定二进制日记文献的体式。MySQL的复制神情与binlog(二进制日记文献)体式一一双应。

mysql复制主要有三种神情:

基于SQL语句的复制(statement-based replication, SBR);

基于行的复制(row-based replication, RBR);

混杂格局复制(mixed-based replication, MBR)。

对应的,binlog的体式也有三种:STATEMENT,ROW,MIXED。

修改BINLOG_FORMAT的范例如下:

1.先在从库引申、再去主库引申

mysql> set global binlog_format=ROW;

2.修改建立文献(主从齐修改)

# vim /etc/my.cnf

在mysqld下添加以下内容

[mysqld]

binlog_format=ROW

(四)手动迁徙触发器trigger

1.查抄询敕令默许业务触发器莫得创建在系统数据库中,是以摒除系统数据库sys、mysql、information_schema、performance_schema。

mysql> select TRIGGER_SCHEMA,count(*) as tiggers_cnt from information_schema.`TRIGGERS` where TRIGGER_SCHEMA not in ('sys','mysql','information_schema','performance_schema') group by TRIGGER_SCHEMA;

如上敕令引申后有驱散,如图所示,源端业务数据库sakila、test折柳有6、1个触发器,则需要迁徙。

如上敕令引申后查不到数据,则表露业务数据库中无触发器需要迁徙。

2.方法一:(保举)

1.在筹画端数据库后台引申如下敕令导出源端触发器。预防:在-B参数后头添加需要导出的业务数据库(即上一章节查询出来的TRIGGER_SCHEMA)的名字,如有多个使用空格分隔。

-h:源端数据库ip地址,如“10.5.54.66”。

-P:源端数据库端标语,如“3306”。

-u:源端数据库迁徙账号,如“root”

-p:源端数据库迁徙账号密码,如“Admin-123”。

# mysqldump -h10.5.54.66 -P3306 -uroot -pAdmin-123 --single-transaction --set-gtid-purged=OFF --default-character-set=utf8mb4 --add-drop-trigger --no-create-db=true --no-create-info=true --no-data=true -B sakila test > ./tri.sql

预防:导出源端触发器用户需要有“trigger”权限。

(2)导入到筹画端数据库。

# mysql -uroot -pQwer@123 -S/run/sock/mysql.sock < ./tri.sql

(3)查抄触发器是否迁徙凯旋

在筹画端引申敕令查询世博在线娱乐体育,参考“Part.5 附录中第4节 手动迁徙触发器trigger的查抄源端是否存在触发器”。

3.方法二

1.在筹画端用root用户登录RDS主节点,捕快源端数据库导出业务数据库触发器DDL语句。

# cd

# rm -rf trigdump.sql

# touch trigdump.sql

# mysql -h10.5.54.66 -P3306 -uroot -pAdmin-123 <<'EOF'

tee trigdump.sql

SELECT

CONCAT("DROP TRIGGER IF EXISTS `",

TRIGGER_SCHEMA,

"`.`",

TRIGGER_NAME,

"`;\nDELIMITER ;;\nCREATE TRIGGER `",

TRIGGER_SCHEMA,

"`.`",

TRIGGER_NAME,

"` ",

ACTION_TIMING,

" ",

EVENT_MANIPULATION,

" ON `",

EVENT_OBJECT_SCHEMA,

"`.`",

EVENT_OBJECT_TABLE,

"` FOR EACH ROW\n",

ACTION_STATEMENT,

";;\nDELIMITER ;") AS TRIG

FROM

information_schema.TRIGGERS

WHERE

TRIGGER_SCHEMA IN ('sakila','test')\G

notee

exit

EOF

# sed -i '/^*/d' trigdump.sql

# sed -i 's/TRIG: //' trigdump.sql

# echo "COMMIT;" >> trigdump.sql

(2)导入触发器至筹画端主节点

# mysql -uroot -p -S/run/sock/mysql.sock < trigdump.sql

(3)查抄触发器是否迁徙凯旋

在筹画端引申敕令查询,参考“Part.5 附录中第4节 手动迁徙触发器trigger的查抄源端是否存在触发器”。