我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql在线编辑器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql在线编辑器

mysql 能否设置DDL语句 可以回滚?

MySQL8.0开始支持原⼦DDL(atomicDDL),数据字典的更新,存储引擎操作,写⼆进制日志结合成了一个事务。在没有原⼦DDL之前,DROPTABLEtest1,test2;如遇到servercrash,可能会有test1被drop了,test2没有被drop掉。下面来看下在MySQL8.0之前和MySQL8.0数据字典的区别

在MySQL8.0之前,DataDictionary除了存在与.FRM,.TRG,.OPT⽂件外,还存在于系统表中(MyISAM⾮事务引擎表中),在MySQL8.0,DataDictionary全部存在于DataDictionaryStorageEngine(即InnoDB表中),这使crashrecovery维持原⼦性成为了可能

存储引擎⽀持

目前,只有InnoDB存储引擎⽀持原子DDL,为了实现原子DDL,Innodb要写DDLlogs到mysql.innodb_ddl_log表,这是⼀个隐藏在mysql.ibd数据字典表空间⾥的数据字典表。要看mysql.innodb_ddl_log中的内容,需要

SETGLOBALLOG_ERROR_VERBOSITY=3;(MySQL8.0默认为2,errorlog记录Errorsand

warnings,不不记录notes)

SETGLOBALinnodb_print_ddl_logs=1;

CREATETABLEt1(c1INT)ENGINE=InnoDB;

查看errorlog

[Note][MY-011066]InnoDB:DDLloginsert:[DDLrecord:DELETESPACE,id=30,

thread_id=25,space_id=9,old_file_path=./test/t1.ibd]

[Note][MY-011066]InnoDB:DDLlogdelete:byid30

[Note][MY-011066]InnoDB:DDLloginsert:[DDLrecord:REMOVECACHE,id=31,

thread_id=25,table_id=1066,new_file_path=test/t1]

[Note][MY-011066]InnoDB:DDLlogdelete:byid31

[Note][MY-011066]InnoDB:DDLloginsert:[DDLrecord:FREE,id=32,thread_

id=25,space_id=9,index_id=143,page_no=4]

[Note][MY-011066]InnoDB:DDLlogdelete:byid32

[Note][MY-011066]InnoDB:DDLlogpostddl:beginforthreadid:25

[Note][MY-011066]InnoDB:DDLlogpostddl:endforthreadid:25

原子DDL操作步骤

准备:创建所需的对象并将DDL⽇志写入mysql.innodb_ddl_log表中。DDL日志定义了如何前滚和回滚DDL操作。

执行:执⾏DDL操作。例如,为CREATETABLE操作执⾏创建。

提交:更新数据字典并提交数据字典事务。

Post-DDL:重播并从mysql.innodb_ddl_log表格中删除DDL⽇志。为确保回滚可以安全执⾏⽽不引⼊不⼀致性,在此最后阶段执⾏⽂件操作(如重命名或删除数据文件)。这一阶段还从mysql.innodb_dynamic_metadata的数据字典表删除的动态元数据为了DROPTABLE,TRUNCATE和其它重建表的DDL操作。

⽆论事务是提交还是回滚,DDL日志都会mysql.innodb_ddl_log在Post-DDL阶段重播并从表中删除。mysql.innodb_ddl_log如果服务器在DDL操作期间暂停,DDL⽇志应该只保留在表中。在这种情况下,DDL⽇志会在恢复后重播并删除。

在恢复情况下,当服务器重新启动时,可能会提交或回退DDL事务。如果在重做⽇志和⼆进制日志中存在DDL操作的提交阶段期间执⾏的数据字典事务,则该操作被认为是成功的并且被前滚。否则,在InnoDB重放数据字典重做日志时回滚不完整的数据字典事务,并且回滚DDL事务。

原⼦DDL⽀持类型

•DROPTABLES,alltablesdroppedornone

•DROPSCHEMA,allentitiesintheschemaaredropped,ornone

•NotethatatomicDDLstatementswillberolledbackorcommittedevenincaseofcrash,e.g.RENAMETABLES

•CREATETABLEwouldbesuccessfullycommittedorrolledback(noorphanibdleft)

•TRUNCATETABLE(includingInnoDBtableswithFTSAUXtables)wouldbesuccessfullycommittedorrolledback

•RENAMETABLES,allornone

•ALTERTABLEsuccessfulornotdone

请点击输入图片描述

请点击输入图片描述

在MySQL8.0之前,altertable操作在servercrash的情况下,会遗留.frm,.ibd文件。MySQL8.0能实现原⼦DDL(包括DROPTABLE,DROPSCHEMA,CREATETABLE,TRUNCATETABLE,ALTERTABLE),altertable操作,在servercrash的情况下,不会遗留.frm,.ibd临时文件。让我们⼀起期待MySQL8.0GA的到来吧!

mysql在线编辑器_mysql在线ddl

让ddl sql到mysql数据库中执行很久时间,有没有这样的办法的

具体操作如下:

先看看看event事件是否开启

showvariableslike'%sche%';

如没开启,则开启。需要数据库超级权限

setglobalevent_scheduler=1;

创建存储过程update_a(注:就是你要执行的sql语句)

mysql>createprocedureupdate_a()updateaseta.y_avg=(selectavg(b.youhao)frombwherea.a_id=b.a_id);

创建一个定时任务:evente_updateA

mysql>createeventifnotexistse_updateA

->onscheduleevery60second---设置60秒执行一次

->onscheduleatdate_add(now(),interval1minute)---在一分钟后执行

->oncompletionpreserve

->docallupdate_a();---执行update_a()存储过程

创建Event之后,sql语句就定时执行一次。

关闭事件任务

mysql>alterevente_updateAON

->COMPLETIONPRESERVEDISABLE;

开启事件任务

mysql>alterevente_updateAON

->COMPLETIONPRESERVEENABLE;

mysqlbinlog语法错误

MySQL复制是异步的,也就是说是非同步的过程,它不会校验数据库中数据的一致性,只要SQL语法正确并且没有错误就能成功执行

[plain] view plain copy print?

MASTER@root@test 12:20:40>create table tab01

-> (id int(10) primary key ,

-> name varchar(20));

Query OK, 0 rows affected (0.03 sec)

MASTER@root@test 12:21:32>

MASTER@root@test 12:21:49>show master status;

+----------------------+----------+--------------+------------------+

| File| Position | Binlog_Do_DB | Binlog_Ignore_DB |

+----------------------+----------+--------------+------------------+

| binlog-master.000004 |338 |||

+----------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

MASTER@root@test 12:21:52>

[plain] view plain copy print?

[root@mynode1 mysql]# /service/mysql/bin/mysqlbinlog binlog-master.000004|tail -13

# at 213

#140130 12:21:32 server id 1 end_log_pos 338Querythread_id=3exec_time=0error_code=0

use `test`;

SET TIMESTAMP=1391055692;

create table tab01

(id int(10) primary key ,

name varchar(20))

;

DELIMITER ;

# End of log file

ROLLBACK ;

;

;

可以看到binlog里记录了这条语句,可以通过sql_log_bin参数来控制是否捕获binlog中的操作

[plain] view plain copy print?

MASTER@root@test 12:25:32>set sql_log_bin=0;

Query OK, 0 rows affected (0.00 sec)

MASTER@root@test 12:25:37>alter table tab01 add index(name);

Query OK, 0 rows affected (0.05 sec)

Records: 0 Duplicates: 0 Warnings: 0

MASTER@root@test 12:26:04>set sql_log_bin=1;

Query OK, 0 rows affected (0.00 sec)

MASTER@root@test 12:26:07>

MASTER@root@test 12:26:08>show create table tab01\G

*************************** 1. row ***************************

Table: tab01

Create Table: CREATE TABLE `tab01` (

`id` int(10) NOT NULL,

`name` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `name` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

[plain] view plain copy print?

[root@mynode1 mysql]# /service/mysql/bin/mysqlbinlog binlog-master.000004

;

;

;

DELIMITER ;

# at 4

#140130 12:08:05 server id 1 end_log_pos 107Start: binlog v 4, server v 5.5.34-log created 140130 12:08:05 at startup

# Warning: this binlog is either in use or was not closed properly.

ROLLBACK;

BINLOG '

JdDpUg8BAAAAZwAAAGsAAAABAAQANS41LjM0LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAl0OlSEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==

';

# at 107

#140130 12:13:45 server id 1 end_log_pos 213Querythread_id=3exec_time=0error_code=0

use `tmp`;

SET TIMESTAMP=1391055225;

SET @@session.pseudo_thread_id=3;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1;

SET @@session.sql_mode=0;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;

;

SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33;

SET @@session.lc_time_names=0;

SET @@session.collation_database=DEFAULT;

create table tab_02 as select * from tab_tmp

;

# at 213

#140130 12:21:32 server id 1 end_log_pos 338Querythread_id=3exec_time=0error_code=0

use `test`;

SET TIMESTAMP=1391055692;

create table tab01

(id int(10) primary key ,

name varchar(20))

;

DELIMITER ;

# End of log file

ROLLBACK ;

;

;

[root@mynode1 mysql]#

可以将此DDL语句在slave库执行

[plain] view plain copy print?

SLAVE@root@test 12:26:39>alter table tab01 add index(name);

Query OK, 0 rows affected (0.04 sec)

Records: 0 Duplicates: 0 Warnings: 0

SLAVE@root@test 12:27:57>show create table tab01\G

*************************** 1. row ***************************

Table: tab01

Create Table: CREATE TABLE `tab01` (

`id` int(10) NOT NULL,

`name` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `name` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

SLAVE@root@test 12:28:10>

在大型master-slave环境下执行DDL语句时,在每一台slave上手动去执行DDL命令能绕过MySQL数据复制单线程对某些命令的限制mysqlbinlog mysql-bin.00005 --startdatetime='时间' --stopdatetime='时间' --database=db_name | grep -i -a 6 'id=111' 用grep..

mysql在线编辑器_mysql在线ddl_02

mysql语句dml全称是什么意思

数据库操纵语言 DML;

数据库查询语言 DQL;

数据库模式定义语言 DDL;

数据库控制语言 DCL;没看懂什么意思?

来源地址:https://blog.csdn.net/yetaodiao/article/details/127370565

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql在线编辑器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java fckeditor在线编辑器的使用

FCKeditor(现在已经更名为CKEditor)是一个基于JavaScript的HTML文本编辑器,它可以嵌入到网站中,用于在网页中创建和编辑内容。以下是使用Java集成FCKeditor的步骤:1. 首先,将CKEditor的Java
2023-08-23

codemirror6在线代码编辑器如何使用

本篇内容主要讲解“codemirror6在线代码编辑器如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“codemirror6在线代码编辑器如何使用”吧!介绍 CodeMirror是W
2023-07-04

最佳在线PHP编辑器:快速创建文件

最佳在线PHP编辑器:快速创建文件在现代软件开发领域中,随着云计算和远程工作的兴起,越来越多的开发者转向使用在线代码编辑器进行编码工作。特别是对于PHP开发者来说,寻找一个功能强大且方便快捷的在线PHP编辑器变得尤为重要。本文将介绍一款最
最佳在线PHP编辑器:快速创建文件
2024-02-29

codemirror6实现在线代码编辑器使用详解

这篇文章主要为大家介绍了codemirror6实现在线代码编辑器使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-01-08

在线代码编辑器CodeMirror的定位是什么

在线代码编辑器CodeMirror的定位是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一款“Online Source Editor”,基于Javascr
2023-06-17

excel怎么实现在线多人编辑

要实现在线多人编辑Excel,可以使用以下方法:1. 使用Excel Online:Excel Online是Microsoft Office 365提供的在线版Excel。多个用户可以同时登录到Excel Online,打开同一个Exce
2023-09-11

如何在文本编辑器中编辑HTML文件

HTML编辑教程HTML是一种标记语言,用于创建网页和其他文档。如果你想学习HTML,在你的计算机上需要有一个文本编辑器,这篇文章将介绍如何在文本编辑器中编辑HTML文件,并提供一些提示和技巧。1. 选择文本编辑器首先,你需要选择一个文本编辑器,它应该是可以在你的操作系统上运行的。一些流行的文本编辑器包括Windows操作系统内置的记事本、Macintosh操作系统内置的文本编
2023-05-14

如何使用MySQL和JavaScript实现一个简单的在线编辑器功能

如何使用MySQL和JavaScript构建在线编辑器本教程将指导您使用MySQL和JavaScript构建一个简单的在线编辑器,允许用户在线创建、编辑和保存文本。我们介绍了构建数据库、建立连接、获取文本、创建、编辑和保存文本的步骤。还提供了示例代码,展示了如何使用JavaScript与MySQL数据库交互。为了优化性能,我们讨论了分块读取、缓存和事务等技术。
如何使用MySQL和JavaScript实现一个简单的在线编辑器功能
2024-04-11

如何使用MySQL和JavaScript实现一个简单的在线编辑器功能

要实现一个简单的在线编辑器功能,可以通过以下步骤使用MySQL和JavaScript来实现:1. 创建一个包含两个字段的MySQL数据库表,一个用于存储文件名,一个用于存储文件内容。可以使用以下命令创建表:CREATE TABLE file
2023-10-20

电脑excel如何弄成多人在线编辑

要实现多人在线编辑Excel,可以使用以下几种方法:1. 使用共享文件夹或共享云存储:将Excel文件存储在一个共享文件夹或共享云存储中,然后允许多个用户同时访问和编辑该文件。这种方法需要确保所有用户都有访问和编辑该文件的权限,并且需要协调
2023-09-12

zoho writer在线文档编辑小技巧是什么

zoho writer在线文档编辑小技巧是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 过去一年中,用户们在论坛里积极发言,推动了在线文档编辑工具Zoho Writer的
2023-06-05

Word2010中公式编辑器在哪

在Word 2010中,可以通过以下步骤找到公式编辑器:1. 打开Word 2010文档。2. 点击"插入"选项卡。3. 在"文本"组中,点击"公式"按钮,这将打开"公式"工具栏。4. 在"公式"工具栏中,可以选择不同类型的公式,如数学公式
2023-09-15

帝国cms编辑器目录在哪

帝国cms编辑器目录位于CMS的安装目录下的某个子目录中,常见位置有:1、“ueditor目录”,可以通过访问“yourdomain.com/ueditor”来访问编辑器页面;2、“kindeditor目录”,可以通过访问“yourdoma
2023-08-02

在UNIX下vi编辑器怎么用

这篇文章主要为大家展示了“在UNIX下vi编辑器怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在UNIX下vi编辑器怎么用”这篇文章吧。在UNIX下,vi是标准的文本编辑器之一。几乎任何一
2023-06-13

编程热搜

目录