Configuring Always On Availability Groups in SQL Server 2017 on Linux

在之前的预览版中,Public preview of the next release of SQL Server on Linux,Always On Availability Groups还是不支持的功能,但是在最新的SQL Server 2017 on Linux中,该功能已经引入。 准备测试环境的服务器 在Always On AG中如果需要自动Failover至少需要集群中有3台服务器,但是我只是测试功能,因此只使用了两台服务器。并且本文不涉及任何Pacemaker的设置,完全是数据库层面的AG配置。 我使用的是Google Compute Engine的2台VM,最低配的1vCPU,3.75GB内存。 如果要通过远程客户端配置SQL Server,则需要在VPC network的Firewall rules中将1433端口开放,如果是在虚拟机本地的sqlcmd中操作,则无需配置。 操作系统:CentOS7 $ cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) 在/etc/hosts中配置双方服务器的名称和IP地址的解析,以保证两台机器可以通过服务器名称互相访问。 重要!服务器主机的hostname必须少于等于15个字符,否则在配置过程会出现各种莫名其妙的权限报错。 安装SQL Server SQL Server for Linux的安装非常简单,可以参考我之前的这篇文章。 Public preview of the next release of SQL Server…

Oracle 18c New Features documentation released

为什么从Oracle 12c直接跳到Oracle 18c 这是很多人还在疑惑的问题。实际上Oracle 18c相当于Oracle 12c Release 2的初始版本12.2.0.1的升级版本12.2.0.2。之所以改名为18c,是因为Oracle修改了版本发布计划,将之前每隔2年发布一个新版本的方式修改为每隔1年发布一个版本,因此18c可以认为是2018年的Oracle数据库版本,之后应该会持续用19,20这样的版本号来发布。 Oracle 12c Release 2有什么新功能 在谈Oracle 18c新功能之前,先回顾一下Oracle 12cR2的新功能。除了增强在12cR1版本中引入的多租户(Multitenant)以及混合列式缓存(Database In-Memory)之外,崭新的功能是Oracle Database Sharding,这是专门为超大事务量应用提供的具备高扩展和高可用性的数据库分片功能。 实际上Oracle 12cR2引入了超过600项新功能,详细信息可以参看官方文档:New Features guide for Oracle Database 12c Release 2。 Oracle Database 18c的官方文档在哪里 官方已经释出Oracle Database 18c的系列文档。建议大家从New Features开始阅读,本文后续部分的18c新功能解读也都基于该官方文档。 更多的Oracle Database 18c技术文章 在我们的blog.enmotech.com网站中已经有大量的关于Oracle 18c新特性的介绍文章,并且在18c官方文档放出以后,我们也会持续更新更多的技术细节文章,欢迎大家阅读。Oracle 18c New Features Articles by Enmotech.com。

Moving MySQL Group Replication instances to Docker container on macOS

前提条件,已经在自己的macOS操作系统中设置成功了都运行在本地的3节点MySQL Group Replication集群,如何设置,可以参考官方文档中的Deploying Group Replication in Single-Primary Mode。 假设在我们的macOS上已经实现了如下了架构的3节点MGR集群,我们的目标是将这三个数据库全部挪到docker容器中去运行,并且可以互相通信,仍然是MGR集群。 Docker on macOS 接下来我们把MySQL放在一边,先介绍一下在macOS中的docker架构,在macOS中,docker的实现跟在其它Linux系统中略有不同,在其它Linux系统中,操作系统本身就是docker容器的宿主机,docker镜像都是直接存储在宿主机本身的文件系统中,比如我们通过docker info命令可以看到docker的根目录是: $ docker info|grep “Docker Root Dir” Docker Root Dir: /var/lib/docker 但是在macOS下,我们直接查看这个目录,其实是根本不存在的。 $ ls /var/lib/docker ls: /var/lib/docker: No such file or directory Docker宿主机是谁 那么这个目录到底在哪里?实际上是在一个QEMU虚拟机中,当我们在macOS中安装完docker并启动,就是启动了一个虚拟机,这个虚拟机的整个内容全部都在一个文件里,可以在docker程序属性界面中看到这个文件的路径,比如在我的机器上,路径就是/Users/Kamus/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2,该文件通常比较大,特别是安装了多个docker镜像之后,会轻易占用到数十GB的空间。 如上图所示,就是Disk image location的位置。 从上图中同样可以看到,这个虚拟机被限制只能使用2颗CPU和2GB内存。 那么,我们是否可以登录这个虚拟机来确认这点呢?使用macOS自带的screen命令可以登录该台虚拟机。如下,可以看到这是一个拥有非常新的Linux 4.9.38版本内核的虚拟机,在这个虚拟机中才有/var/lib/docker目录,只有2颗CPU,总共有2GB内存。 $ screen /Users/Kamus/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty / # uname -a Linux moby 4.9.38-moby #1 SMP…