mariadb单机多实例配置介绍

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

一、前言

前文己经介绍过了mysql的编译安装与工作流程,由于sun公司己被oracle收购,mysql己成附属品也间接被“收编”了,至于mysql以后是否还会开源,这个谁也不知道……。

二、简介

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。

MariaDB由MySQL的创始人麦克尔·维德纽斯主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自麦克尔·维德纽斯的女儿玛丽亚(英语:Maria)的名字。(维基百科如是说;看到这我突然想起一广告语:还是熟悉的配方,还是原来的味道!!!!)

三、安装流程

注:

之前博文中己经介绍过编译安装mysql,而mariadb的编译安装完全与mysql一样,如果非要说有什么不同的话,那就是名字(你懂的),将源码包解压后,通常我们都会给源文件一个软链接,为了方便以的管理,当编译安装mariadb时将指定的源文件链接成为如下:

1
#ln -s /usr/local/mariadb-Version mysql

这样就可以了。其它的都一样。

四、多实例启动mariadb

那么什么是实例呢?官方的说法,实例指的就是操作系统中一系列的进程以及为这些进程所分配的内存块。如果用更容易理解的方式来解释,那就是说数据库的实例是我们访问数据库的通道。弄清楚什么是实例,那么我们来看一下在mariadb中如何启动多实例。

前提:

己经通过源码或通用二进制格式安装了mariadb.

wKiom1NGwd3iIcYeAAE9L9KO9tk825.jpg

1、初始化多个实例

⑴、建立实例目录

wKioL1NGwQKylPqbAAFcUREnN9M332.jpg

⑵、为数据实例目录初始化

利用mysql用户初始化两个实例

1
2
# scripts/mysql_install_db --datadir=/mariadb/data1 --user=mysql
# scripts/mysql_install_db --datadir=/mariadb/data2 --user=mysql

wKiom1NGxWTCVp4KAAJoDYKcGsY860.jpg

⑶、编辑源文件

1
#vim /etc/my.cnf

在此文件末尾添加如下内容

1
2
3
4
5
6
7
8
9
#添加引导模块
[mysqld_multi]
mysqld     =  /usr/local/mysql/bin/mysqld_safe
#指定程序目录启动文件(mysqld_safe安全模式的启动方式)
mysqladmin =  /usr/local/mysql/bin/mysqladmin
#指定管理程序所在的目录
user       = mysql
password   = mysql
#指定是那一个用户(必须是系统是存在的用户)

添加两个实例文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[mysqld3307]
port=3307
#占用的端口(每一个实例一个端口)
socket= /tmp/mysql3307 .sock
#指定套接字文件所在的目录
pid- file = /tmp/mysql3307 .pid
#指定锁文件所在位置
max_allowed_packet=1M
net_buffer_length=2k
#包消息缓冲区初始化为net_buffer_length字节,但需要时可以增长到max_allowed_packet字节
table_open_cache=4
#所有线程打开的表的个数
sort_buffer_size=64k
#排序buffer大小;线程级别
thread_stack=128k
#每个线程的堆栈大小
basedir= /usr/local/mysql
#源文件所在的目录
datadir= /mariadb/data1
#数据实例目录
server- id =1
#指定为主服务器
#########################
[mysqld3308]
port=3308
socket= /tmp/mysql3308 .sock
pid- file = /tmp/mysql3308 .pid
max_allowed_packet=1M
net_buffer_length=2k
table_open_cache=4
sort_buffer_size=64k
thread_stack=128k
basedir= /usr/local/mysql
datadir= /mariadb/data2
server- id =1

⑷、启动实例

1
2
3
4
5
6
#启动第一个实例
# mysqld_multi --defaults-extra-file=/etc/my.cnf start 3307
# mysqld_multi --defaults-extra-file=/etc/my.cnf  report
Reporting MySQL servers
MySQL server from group: mysqld3307 is running
MySQL server from group: mysqld3308 is not running

wKiom1NGzTGzAoy8AAPOxYM_9CE456.jpg

启动第二实例[mysqld3308]

wKioL1NGzdDig1oSAANJQrkBQ2Y747.jpg

可以使用

1
#ps -ef |grep msyql

查看到服务是否启动

⑸、连接实例

第一种方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#连接第一个实例[mysql3307]
# mysql -S /tmp/mysql3307.sock
#使用socket文件连接
MariaDB [(none)]> show session variables like  "%sock%" ;
#显示所使用的socket文件
+---------------+---------------------+
| Variable_name | Value               |
+---------------+---------------------+
| socket        |  /tmp/mysql3307 .sock |
+---------------+---------------------+
1 row  in  set  (0.00 sec)
MariaDB [(none)]> show databases;
#显示实例初始化后的数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
test                |
+--------------------+
4 rows  in  set  (0.01 sec)

①对此实例进行授权管理

1
2
MariaDB [(none)]>  grant  shutdown  on  *.*  to   mysql@localhost identified  by  'mysql'  with  grant  option ;
Query OK, 0  rows  affected (0.03 sec)

这样做的目地只有一个,是允许那一个用户关闭此实例,如果不是此用户对此实例关闭,那么此实例会自动重启,也就是说无法正常关闭(当此实例工作过程中意外中断也会自动重启的),这也就解释了什么是安全模式下启动。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# mysql -S /tmp/mysql3308.sock
MariaDB [(none)]> show session variables like  "%sock%" ;
+---------------+---------------------+
| Variable_name | Value               |
+---------------+---------------------+
| socket        |  /tmp/mysql3308 .sock |
+---------------+---------------------+
1 row  in  set  (0.00 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
test                |
+--------------------+
4 rows  in  set  (0.01 sec)

同样也要对此实例进行授权管理

1
2
MariaDB [(none)]> grant  shutdown  on *.* to  mysql@localhost identified by  'mysql'  with grant option;
Query OK, 0 rows affected (0.03 sec)

第二种方式

使用TCP/ip连接

1
#mysql -h localhost --protocol=tcp

注:

当服务启动参数中有--skip-networking,则无法使用tcp协议连接

wKioL1NG1yiB8donAAF4Wfd4fTw448.jpg

总结一下可以使用那些协议连接到mariadb

协议 连接类型
所支持的操作系统
TCP/IP Local,Remote ALL
Unix socket file Local Only Unix Only
Named pipe Local Only Windows Only
Share    Memory Local Only Windows Only


⑹、关闭实例

1
#mysqld_multi --defaults-extra-file=/etc/my.cnf stop 3307

wKiom1NG2ayCCrPHAAJGwN8tq6Q706.jpg

也可以使用

1
#mysqladmin shutdown

这样做了之后mariadb数据库服务己经关闭,但是实例却没有关闭(有图有真像),实例无法连接……

wKiom1NG2-mzGT9iAAOuiAHvNCo827.jpg

从上图可以看到结果了,所以说使用mysqldmin只能治标不治本,还是授权用户管理更便捷

注:

如果想了解更多关于mysqld_multi的更多功能,请mysqld_multi --help

说到应用场景,我能想到的可能就是一主多从的环境(没有真实环境啊…………)

=================完==========================

PS:

   1、实例脚本有时间再补上,有点小遗憾!











本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1393728,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9月前
|
缓存 关系型数据库 MySQL
MariaDB的安装与配置
MariaDB的安装与配置
462 0
|
8月前
|
关系型数据库 MySQL Linux
如何在CentOS 7服务器上配置使用MariaDB的Galera集群:
如何在CentOS 7服务器上配置使用MariaDB的Galera集群:
|
11月前
|
关系型数据库 Linux 网络安全
【主从数据库?】centos7,快速配置Mariadb主从
【主从数据库?】centos7,快速配置Mariadb主从
247 0
|
弹性计算 Oracle 关系型数据库
ECS配置mySQL\MariaDB和PHP环境
ECS配置mySQL\MariaDB和PHP环境
|
关系型数据库 MySQL 应用服务中间件
Centos7.6配置lnmp(nginx1.1.6+php7.2+mariadb10.30)
安装nginx、php、mariadb。如果安装完成之后没有mysql表 ,那就去/var/lib/ 把mysql文件夹删掉。至此,lnmp环境配置完成。
175 0
Centos7.6配置lnmp(nginx1.1.6+php7.2+mariadb10.30)
|
SQL 存储 安全
RH358配置MariaDB SQL数据库--自动化部署MariaDB
RH358配置MariaDB SQL数据库--自动化部署MariaDB
201 0
RH358配置MariaDB SQL数据库--自动化部署MariaDB
|
SQL 存储 关系型数据库
RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份
RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份
216 0
RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份
|
SQL 关系型数据库 MySQL
RH358配置MariaDB SQL数据库--管理MariaDB用户和访问权限
RH358配置MariaDB SQL数据库--管理MariaDB用户和访问权限
320 0
RH358配置MariaDB SQL数据库--管理MariaDB用户和访问权限
|
SQL 存储 关系型数据库
RH358配置MariaDB SQL数据库--在MariaDB中使用SQL
RH358配置MariaDB SQL数据库--在MariaDB中使用SQL
120 0
RH358配置MariaDB SQL数据库--在MariaDB中使用SQL
|
SQL 存储 网络协议
RH358配置MariaDB SQL数据库--安装MariaDB数据库
RH358配置MariaDB SQL数据库--安装MariaDB数据库
205 0
RH358配置MariaDB SQL数据库--安装MariaDB数据库