MySQL多实例

mysql多实例,简单理解就是在一台服务器上,mysql服务开启多个不同的端口(如3306、3307,3308),运行多个服务进程。这些
mysql 服务进程通过不同的
socket来监听不同的数据端口,进而互不干涉的提供各自的服务。

在同一台服务器上,mysql 多实例会去共用一套 mysql 应用程序,因此在部署
mysql的时候只需要部署一次
mysql程序即可,无需多次部署。但是,mysql多实例之间会各自使用不同的
my.cnf
配置文件、启动程序和数据文件。在提供服务方面,mysql多实例在逻辑上看起来是各自独立,互不干涉的,并且多个实例之间是根据配置文件的设定值,来获取相关服务器的硬件资源。

——-添加约束、增删改

搭建非域AlwaysOn win2016+SQL2016

 

第一篇

第二篇

第三篇

第四篇

搭建非域AlwaysOn win2016+SQL2016

SQL Server AG集群启动不起来的临时自救大招

 

操作之前请先查看《从0开始搭建SQL Server
AlwaysOn》系列文章

非域搭建Alwayson只是省去搭建域控那一部分,其他大同小异

 

 

条件:

操作系统:windows server 2016

数据库:SQL Server 2016

SSMS版本:17.3

 

节点1:HDDB01.duqee.com
节点2:HDDB02.duqee.com
节点3:HDDB03.duqee.com

 

三台服务器机器名
HDDB01
HDDB02
HDDB03

 

要用专有网络,经典网络会把公网IP注册到WSFC的VIP,无法用

澳门微尼斯人手机版 1

 

这里只创建两个盘符

澳门微尼斯人手机版 2

 

 

澳门微尼斯人手机版 3

 

 澳门微尼斯人手机版 4

 

三台机器在同一个内网

 澳门微尼斯人手机版 5

 

 

 

用某云专用网络云主机 VPC


正式开始

 

 

1、网卡设置
内网网卡:只能用自动获取,不能设置静态IP(如果不是用云主机
实际上最好用静态IP),ipv6去掉,禁用TCP/IP上的NetBIOS,设置DNS后缀
duqee.com
澳门微尼斯人手机版 6

其中DNS服务器留空,防止集群转发给DNS服务器注册名称而导致报错

澳门微尼斯人手机版 7

2、所有节点创建相同的帐号、密码,且属于本地Administrators组

3、所有节点 打开powershell 输入:new-itemproperty -path
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
-Name LocalAccountTokenFilterPolicy -Value 1

澳门微尼斯人手机版 8

 

4、所有节点更改计算机名,加DNS后缀

澳门微尼斯人手机版 9

5、新建DNS服务器或写hosts文件
建议写 hosts 文件,比较简单,每个节点都需要配置
添加主机名称、WSFC名称、可用性组侦听器名称三种类型的解析,注意加DNS后缀的全名也要加上
C:\Windows\System32\drivers\etc\

172.16.199.3  HDDB01.duqee.com
172.16.199.2   HDDB02.duqee.com
172.16.199.4   HDDB03.duqee.com
172.16.199.3  HDDB01
172.16.199.2   HDDB02
172.16.199.4   HDDB03

172.16.199.5  testdemo.noad.com
172.16.199.5  testdemo.noad.com.duqee.com

172.16.199.6  aglistener
172.16.199.6  aglistener.duqee.com

 

 
6、控制面板-》所有控制面板项-》网络和共享中心-》更改高级共享设置
-》启用网络发现

7、所有节点关闭防火墙

澳门微尼斯人手机版 10

 

8、所有节点安装故障转移集群,重启机器,建WSFC集群 
2016正式版可以用GUI创建WSFC集群

 澳门微尼斯人手机版 11

 

澳门微尼斯人手机版 12

澳门微尼斯人手机版 13

 

WSFC的VIP只能用DHCP,因为节点的网卡也是用DHCP分配的(如果不是云主机建议自己分配一个静态的VIP)

澳门微尼斯人手机版 14

澳门微尼斯人手机版 15

 

WSFC集群名称:testdemo.noad.com

澳门微尼斯人手机版 16

 

9、安装SQL Server,这一步就省略了

 

10、在SQL Server配置管理器里启用alwayson功能,SQL
Server服务的启动帐户名不用改还是用NT Service/MSSQLSERVER

注意一下,如果是用域来搭建alwayson,启动SQL服务是用域用户的,因为现在是非域环境,所以用NT
Service/MSSQLSERVER即可

澳门微尼斯人手机版 17

澳门微尼斯人手机版 18

澳门微尼斯人手机版 19

 

11、非域环境的alwayson实质上是用的证书来做节点之间的验证,所以这一步跟搭建镜像的步骤是一样的

之前本人写了一个镜像自动生成脚本,地址:

 

 

12、备份还原数据库,这一步省略了,具体看《从0开始搭建SQL Server
AlwaysOn》系列文章的第三篇

注意:SQL2016新增了一种数据同步首选项,叫做
“自动种子设定”,无须备份还原数据库,在主副本创建好数据库,选择自动种子设定,SQLServer会帮你

在各个辅助副本创建好数据库并同步好数据,相当方便

澳门微尼斯人手机版 20

 

13、用界面创建alwayson

 澳门微尼斯人手机版 21

 

 

打开WSFC管理器,可以看到testag的ag已经在运行

澳门微尼斯人手机版 22

 


总结

 

其实非域搭建alwayson的流程跟 以前windows域搭建alwayson的流程基本一样

以前windows域流程:1、建域控(DNS)和加域 -》2、建WSFC集群
-》3、建立alwayson

非windows域流程:1、DNS或hosts文件 -》2、建WSFC集群 -》3、建立alwayson

 

 

某云的一些问题

问题1:不能用共享文件夹见证,只好将第三个节点加入集群

问题2:WSFC的VIP脱机,无法加私有IP,暂时不影响使用

问题3:不能添加alwayson侦听器

 

相关文章

 

 

如有不对的地方,欢迎大家拍砖o(∩_∩)o 

本文版权归作者所有,未经作者同意不得转载。

多实例应用场景

  1. 当一个公司业务访问量不太大,又想节俭成本,并且还希望不同业务的数据库服务能够各自尽量独立,提供服务能够互相不受影响。另外还需要应用主从同步等技术来提供数据库备份或读写分离服务,以及方便后期业务量增大时,数据库架构的扩展和迁移。

  2. 公司业务访问量不是太大的时候,服务器的资源基本都是过剩状态。此时就很适合
    mysql 多实例的应用。如果对 SQL语句 优化做的比较好,mysql 多实例
    是一个很值得去使用的技术。

  3. 测试环境,公司中会需要数据库环境来测试业务,在单机上部署多实例也能够节省成本

澳门微尼斯人手机版 23澳门微尼斯人手机版 24

MySQL多实例实现方式

mysql 多实例常规来讲,有三种方案可以实现,这三种方案各有利弊,如下:

  • 基于多配置文件通过使用多个配置文件来启动不同的进程,以此来实现多实例。

优点:逻辑简单,配置简单

缺点:管理起来不方便

  • 基于mysqld_multi通过官方自带的 mysqld_multi
    工具,使用单独配置文件来实现多实例

优点: 便于集中管理管理

缺点: 不方便针对每个实例配置进行定制

  • 基于IM使用 MySQL
    实例管理器(MYSQLMANAGER),这个方法好像比较好不过也有点复杂

优点:便于集中管理

缺点:耦合度高。IM一挂,实例全挂

不方便针对每个实例配置进行定制

本章内容采用第一种方式来是实现,(个人倾向于这种方式),数据库采用mariadb来代替mysql,过程都一样

系统与安装版本信息
操作系统:Centos6.9
数据库:mariadb-10.2.15.tar.gz
三个实例:3306,3307,3308

 1 use StudentDB2
 2 go
 3 --------创建学生表---------
 4 create table StudentInfo(
 5 --studentId int primary key not null identity(1,1),---设置为主键,并自增长
 6 studentId int not null identity(1,1),
 7 studentNum varchar(16) not null,
 8 studentName nvarchar(16) not null,
 9 studentMobile int null,
10 classNo int null
11 )
12 --------添加约束----------
13 --主键约束
14 alter table StudentInfo
15     add constraint PK_StudentInfo_StudentId primary key (studentId)
16 go
17 --唯一约束
18 alter table StudentInfo
19     add constraint UQ_StudentInfo_studentNum unique (studentNum)
20 go
21 --默认约束
22 alter table StudentInfo
23     add constraint DF_StudentInfo_studentMobile default '号码不详' for studentMobile
24 go
25 --检查约束
26 alter table studentInfo
27 --check (len(studentMobile)=11):检查电话号码的长度是否为11位
28 --check后的括号中的表达式可以是and或者or连接的多个简单逻辑表达式组成的复合型逻辑表达式
29     add constraint CK_StudentInfo_studentMobile check (len(studentMobile)=11)
30 go
31 --======为了避免重复书写的麻烦,可使用如下方式添加约束
32 alter table studentInfo
33 add constraint DF_StudentInfo_studentMobile default '号码不详' for studentMobile,
34     constraint CK_StudentInfo_studentMobile check (len(studentMobile)=11)
35 go
36 --删除约束
37 alter table studentInfo
38     drop constraint DF_StudentInfo_studentMobile  --constraint关键字是可选的,可写可不写
39 go
40 ------------修改数据表-----------
41 --添加列
42 alter table StudentInfo
43 add remark1 varchar(20) null,
44     remark2 varchar(20) null
45 go
46 --删除列
47 alter table StudentInfo
48 drop column ramark1
49 go
50 --------修改列
51 alter table classNo
52 --修改了数据类型、长度和可空性
53 alter column classId varchar(20) not null
54 go
55 --修改列名
56 exec sp_rename 'studentInfo.classNo','classNum'
57 go
58 --------------删除数据表--------------------
59 --再删除之前要先进行判断数据表是否存在,否则会发生错误
60 --判断方法1
61 if exists (select * from sys.sysobjects where [name]='studentinfo')
62 drop table StudentInfo
63 go
64 --判断方法2
65 if OBJECT_ID('studentinfo') is not null
66 drop table studentinfo
67 go

MySQL多实例安装

View Code

发表评论

电子邮件地址不会被公开。 必填项已用*标注