From 6cdbe28e9080c77dd48de06167f8fd52c9713fcf Mon Sep 17 00:00:00 2001 From: Shiqi Date: Thu, 9 Sep 2021 22:50:55 +0800 Subject: [PATCH 1/3] =?UTF-8?q?Update=20MySQL=E4=B8=89=E5=A4=A7=E6=97=A5?= =?UTF-8?q?=E5=BF=97.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit typo 则重->侧重 先先->先 --- ...ySQL\344\270\211\345\244\247\346\227\245\345\277\227.md" | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git "a/docs/database/mysql/MySQL\344\270\211\345\244\247\346\227\245\345\277\227.md" "b/docs/database/mysql/MySQL\344\270\211\345\244\247\346\227\245\345\277\227.md" index 616fab71874..ee621ba0826 100644 --- "a/docs/database/mysql/MySQL\344\270\211\345\244\247\346\227\245\345\277\227.md" +++ "b/docs/database/mysql/MySQL\344\270\211\345\244\247\346\227\245\345\277\227.md" @@ -217,7 +217,7 @@ `binlog`(归档日志)保证了`MySQL`集群架构的数据一致性。 -虽然它们都属于持久化的保证,但是则重点不同。 +虽然它们都属于持久化的保证,但是侧重点不同。 在执行更新语句过程,会记录`redo log`与`binlog`两块日志,以基本的事务为单位,`redo log`在事务执行过程中可以不断写入,而`binlog`只有在提交事务时才写入,所以`redo log`与`binlog`的写入时机不一样。 @@ -255,7 +255,7 @@ > 这部分内容为 JavaGuide 的补充: -我们知道如果想要保证事务的原子性,就需要在异常发生时,对已经执行的操作进行**回滚**,在 MySQL 中,恢复机制是通过 **回滚日志(undo log)** 实现的,所有事务进行的修改都会先先记录到这个回滚日志中,然后再执行相关的操作。如果执行过程中遇到异常的话,我们直接利用 **回滚日志** 中的信息将数据回滚到修改之前的样子即可!并且,回滚日志会先于数据持久化到磁盘上。这样就保证了即使遇到数据库突然宕机等情况,当用户再次启动数据库的时候,数据库还能够通过查询回滚日志来回滚将之前未完成的事务。 +我们知道如果想要保证事务的原子性,就需要在异常发生时,对已经执行的操作进行**回滚**,在 MySQL 中,恢复机制是通过 **回滚日志(undo log)** 实现的,所有事务进行的修改都会先记录到这个回滚日志中,然后再执行相关的操作。如果执行过程中遇到异常的话,我们直接利用 **回滚日志** 中的信息将数据回滚到修改之前的样子即可!并且,回滚日志会先于数据持久化到磁盘上。这样就保证了即使遇到数据库突然宕机等情况,当用户再次启动数据库的时候,数据库还能够通过查询回滚日志来回滚将之前未完成的事务。 另外,`MVCC` 的实现依赖于:**隐藏字段、Read View、undo log**。在内部实现中,`InnoDB` 通过数据行的 `DB_TRX_ID` 和 `Read View` 来判断数据的可见性,如不可见,则通过数据行的 `DB_ROLL_PTR` 找到 `undo log` 中的历史版本。每个事务读到的数据版本可能是不一样的,在同一个事务中,用户只能看到该事务创建 `Read View` 之前已经提交的修改和该事务本身做的修改 @@ -277,4 +277,4 @@ MySQL InnoDB 引擎使用 **redo log(重做日志)** 保证事务的**持久性* ## MySQL 好文推荐 - [CURD 这么多年,你有了解过 MySQL 的架构设计吗?](https://mp.weixin.qq.com/s/R-1km7r0z3oWfwYQV8iiqA) -- [浅谈 MySQL InnoDB 的内存组件](https://mp.weixin.qq.com/s/7Kab4IQsNcU_bZdbv_MuOg) \ No newline at end of file +- [浅谈 MySQL InnoDB 的内存组件](https://mp.weixin.qq.com/s/7Kab4IQsNcU_bZdbv_MuOg) From c9ea53900752f109e432162dab7fb00c78e8d8d3 Mon Sep 17 00:00:00 2001 From: anaer Date: Fri, 10 Sep 2021 10:48:02 +0800 Subject: [PATCH 2/3] Update Docker.md typo --- docs/tools/Docker.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/tools/Docker.md b/docs/tools/Docker.md index 8f40ee75a44..d94550deb9b 100644 --- a/docs/tools/Docker.md +++ b/docs/tools/Docker.md @@ -24,7 +24,7 @@ ### 1.2 图解物理机,虚拟机与容器 -关于虚拟机与容器的对比在后面会详细介绍到,这里只是通过网上的图片加深大家对于物理机、虚拟机与容器这三者的理解(下面的图片来源与网络)。 +关于虚拟机与容器的对比在后面会详细介绍到,这里只是通过网上的图片加深大家对于物理机、虚拟机与容器这三者的理解(下面的图片来源于网络)。 **物理机:** @@ -53,7 +53,7 @@ 说实话关于 Docker 是什么并太好说,下面我通过四点向你说明 Docker 到底是个什么东西。 - **Docker 是世界领先的软件容器平台。** -- **Docker** 使用 Google 公司推出的 **Go 语言** 进行开发实现,基于 **Linux 内核** 提供的 CGroup 功能和 name space 来实现的,以及 AUFS 类的 **UnionFS** 等技术,**对进程进行封装隔离,属于操作系统层面的虚拟化技术。** 由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。 +- **Docker** 使用 Google 公司推出的 **Go 语言** 进行开发实现,基于 **Linux 内核** 提供的 CGroup 功能和 namespace 来实现的,以及 AUFS 类的 **UnionFS** 等技术,**对进程进行封装隔离,属于操作系统层面的虚拟化技术。** 由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。 - **Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件。** - **用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。** @@ -132,7 +132,7 @@ Docker 设计时,就充分利用 **Union FS** 的技术,将其设计为**分层存储的架构** 。镜像实际是由多层文件系统联合组成。 -**镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。**比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。 +**镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。** 比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。 分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。 @@ -233,7 +233,7 @@ mysql 5.7 f6509bac4980 3 months ago 通过 IMAGE ID 或者 REPOSITORY 名字即可删除 ```shell -docker rmi f6509bac4980 # 或者 docker rmim mysql +docker rmi f6509bac4980 # 或者 docker rmi mysql ``` ## 六 Build Ship and Run @@ -266,7 +266,7 @@ Docker 技术是基于 LXC(Linux container- Linux 容器)虚拟容器技术 > LXC,其名称来自 Linux 软件容器(Linux Containers)的缩写,一种操作系统层虚拟化(Operating system–level virtualization)技术,为 Linux 内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。通过统一的名字空间和共用 API 来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得 Linux 用户可以容易的创建和管理系统或应用容器。 -LXC 技术主要是借助 Linux 内核中提供的 CGroup 功能和 name space 来实现的,通过 LXC 可以为软件提供一个独立的操作系统运行环境。 +LXC 技术主要是借助 Linux 内核中提供的 CGroup 功能和 namespace 来实现的,通过 LXC 可以为软件提供一个独立的操作系统运行环境。 **cgroup 和 namespace 介绍:** @@ -276,7 +276,7 @@ LXC 技术主要是借助 Linux 内核中提供的 CGroup 功能和 name space - **CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等) 的机制。** - (以上关于 CGroup 介绍内容来自 https://www.ibm.com/developerworks/cn/linux/1506_cgroup/index.html ,更多关于 CGroup 的呢内容可以查看这篇文章 )。 + (以上关于 CGroup 介绍内容来自 https://www.ibm.com/developerworks/cn/linux/1506_cgroup/index.html ,更多关于 CGroup 的内容可以查看这篇文章 )。 **cgroup 和 namespace 两者对比:** From f07754393e9d96e8711cf21c64c05767f0e654a0 Mon Sep 17 00:00:00 2001 From: anaer Date: Fri, 10 Sep 2021 11:09:55 +0800 Subject: [PATCH 3/3] =?UTF-8?q?Update=20Docker=E4=BB=8E=E5=85=A5=E9=97=A8?= =?UTF-8?q?=E5=88=B0=E5=AE=9E=E6=88=98.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit typo --- ...45\351\227\250\345\210\260\345\256\236\346\210\230.md" | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git "a/docs/tools/Docker\344\273\216\345\205\245\351\227\250\345\210\260\345\256\236\346\210\230.md" "b/docs/tools/Docker\344\273\216\345\205\245\351\227\250\345\210\260\345\256\236\346\210\230.md" index c083e690bde..7e9b03bcce5 100644 --- "a/docs/tools/Docker\344\273\216\345\205\245\351\227\250\345\210\260\345\256\236\346\210\230.md" +++ "b/docs/tools/Docker\344\273\216\345\205\245\351\227\250\345\210\260\345\256\236\346\210\230.md" @@ -2,7 +2,7 @@ ### 什么是 Docker? -说实话关于 Docker 是什么并太好说,下面我通过四点向你说明 Docker 到底是个什么东西。 +说实话关于 Docker 是什么并不太好说,下面我通过四点向你说明 Docker 到底是个什么东西。 - Docker 是世界领先的软件容器平台,基于 **Go 语言** 进行开发实现。 - Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放开发人员。 @@ -213,7 +213,7 @@ MySQL 5.7.32 f07dfa83b528 11 days ago 448MB MySQL 5.5 d404d78aa797 20 months ago 205MB ``` -该指令还能够携带`-p`参数:`docker images -q` , `-q`表示仅显示镜像的 id: +该指令还能够携带`-q`参数:`docker images -q` , `-q`表示仅显示镜像的 id: ```shell [root@izrcf5u3j3q8xaz ~]# docker images -q @@ -282,7 +282,7 @@ docker image rm -f bf756fb1ae65 Docker 还提供了删除镜像的简化版本:`docker rmi 镜像名:版本标志` 。 -此时我们即可借助`rmi`和`-p`进行一些联合操作,比如现在想删除所有的 MySQL 镜像,那么你需要查询出 MySQL 镜像的 id,并根据这些 id 一个一个地执行`docker rmi`进行删除,但是现在,我们可以这样: +此时我们即可借助`rmi`和`-q`进行一些联合操作,比如现在想删除所有的 MySQL 镜像,那么你需要查询出 MySQL 镜像的 id,并根据这些 id 一个一个地执行`docker rmi`进行删除,但是现在,我们可以这样: ```shell docker rmi -f $(docker images MySQL -q) @@ -632,4 +632,4 @@ Loaded image: my_tomcat:1.0 [root@centos-7 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE my_tomcat 1.0 79ab047fade5 7 minutes ago 463MB -``` \ No newline at end of file +```