最近朋友在搞在Linux上配置MySql5.7多实例教程,在网上查询了很多资料,一直报各种各样的错误,后来在网上搜了一篇博客,根据其配置,最近是配置成功了

参考配置连接:https://blog.csdn.net/zougen/article/details/79567744

在开始正式配置之前,应该先问自己几个问题:

  • 什么是数据库多实例

     简单的说,MySql多实例就是在一台服务器上同时开启多个不同的服务端口(如:3306、3307等),同时运行多个MySql服务进程,这些服务进程通过不同的Socket监听不同的服务端口来提供服务。

  • 多实例的好处
  1. 可有效利用服务器资源。当单个服务器资源有剩余时,可以充分利用剩余资源提供更多的服务,且可以实现资源的逻辑隔离
  2. 节约服务器资源。例如公司服务器资源紧张,但是数据库又需要各自尽量独立的提供服务,并且还需要到主从复制等技术,多实例就是您的最佳选择
  • 多实例弊端

    存在资源互相抢占的问题。比如:当某个数据库实例并发很高或者SQL查询慢时,整个实例会消耗大量的CPU、磁盘I/O等资源,导致服务器上面其他的数据库实例在提供服务的质量也会下降

所以具体的需求要根据自己的实际情况而定。

下面我们来具体说一下MySql5.7的多实例配置:

1,几个实例要分开运行,则必须放在不同的文件夹下才可以,为了方便文章后期的操作,我们则根据端口来命名文件夹(3306/3307/3308),新建文件夹有两种形式

  • 通过命令“mkdir /usr/mysql/3306”手动创建文件夹
  • 通过配置文件自动生成配置下的文件夹

2,通过命令(vim/vi)来创建初始化数据配置文件(3306.cnf)的配置文件并根据自己的数据库安装,更改文件中的信息(最终初始化后即可删除),配置文件内容如下:

[client]
port = 3306
socket = /tmp/mysql3308.sock [mysqld]
port = 3306
socket = /tmp/mysql3306.sock
basedir = /usr/local/mysql/mysqlinstall
datadir = /usr/mysql/3306 skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log-bin=/usr/mysql/3306/mysql-bin
binlog_format=mixed
server-id = 3306
expire_logs_days = 10
early-plugin-load = ""
default_storage_engine = InnoDB
innodb_data_home_dir = /usr/mysql/3306
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/mysql/3306
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED [mysqldump]
quick
max_allowed_packet = 16M [mysql]
no-auto-rehash [myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M [mysqlhotcopy]
interactive-timeout

3,文件创建完成后,执行下面的命令进行初始化

mysqld --defaults-file=/usr/mysql/3306.cnf --initialize-insecure --user=mysql 

注意:此处的初始化方式和安装数据库时初始化方式不同,以下时安装数据库时初始化的方式

  • 安装数据库时的初始化方式为:
mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/mysql/3306 --user=mysql
  • 在官方教程中新的初始化方式为:
mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql/mysql --datadir=/opt/mysql/mysql/data

4,初始化完成后,3306.cnf文件就已经完成来,在接下来的配置中会在my.cnf中统一配置,也就是说,在后续的操作中不会在用到3306.cnf这个文件来,可以将其删除,这个时候再去查询则在配置文件中配置的路径下,则会存在3306这个文件夹,根据此步骤,将3307和3308目录进行初始化完成

注意:目录在初始化之前,必须将文件夹清空,里面不能有任何文件,否则会报错

5,经过上面的【1~4】步骤,分别将数据目录文件初始化完成,这个时候需要将这三个文件目录的权限更改成和数据库安装目录一直的,否则会报权限的错误

chown -R mysql.mysql /usr/mysql/3306

6,备份原来的my.cnf文件

cp /etc/my.cnf /etc/my.cnf.bak

7,编辑my.cnf文件

vim /etc/my.cnf

清空原先的内容,然后将里面的内容更改成下面的配置文件,配置完成后通过“:wq”进行保存

[mysqld_multi]
mysqld = /usr/local/mysql/mysqlinstall/bin/mysqld_safe
mysqladmin = /usr/local/mysql/mysqlinstall/bin/mysqladmin
[mysqld1]
port = 3306
socket = /tmp/mysql3306.sock
datadir = /usr/mysql/3306
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log-bin=/usr/mysql/3306/mysql-bin
binlog_format=mixed
server-id = 3306
expire_logs_days = 10
early-plugin-load = ""
default_storage_engine = InnoDB
innodb_data_home_dir = /usr/mysql/3306
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/mysql/3306
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED
user = mysql [mysqld2]
port = 3307
socket = /tmp/mysql3307.sock
datadir = /usr/mysql/3307
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log-bin=/usr/mysql/3307/mysql-bin
binlog_format=mixed
server-id = 3307
expire_logs_days = 10
early-plugin-load = ""
default_storage_engine = InnoDB
innodb_data_home_dir = /usr/mysql/3307
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/mysql/3307
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED
user = mysql [mysqld3]
port = 3308
socket = /tmp/mysql3308.sock
datadir = /usr/mysql/3308
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log-bin=/usr/mysql/3308/mysql-bin
binlog_format=mixed
server-id = 3308
expire_logs_days = 10
early-plugin-load = ""
default_storage_engine = InnoDB
innodb_data_home_dir = /usr/mysql/3308
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/mysql/3308
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED
user = mysql [mysqldump]
quick
max_allowed_packet = 16M [mysql]
no-auto-rehash [myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M [mysqlhotcopy]
interactive-timeout

注意:mysqld_multi的配置文件和一般MySQL配置不同,没有[mysqld]段,取而代之的是[mysqld1][mysqld2]等配置段,每个配置段分别代表一个MySQL实例

8,启动多个MySql实例:

  • 做好以上两个步骤之后,就可以启动MySQL了。
  • 启动时需要一个启动脚本,这个脚本一般在“/usr/local/mysql/support-files”目录下“mysqld_multi.server“,将这个脚本复制到“init.d”目录下
cp  /usr/local/mysql/support-files/mysqld_multi.server /etc/rc.d/init.d/mysqld_multi  

之后就可以用命令:

/etc/rc.d/init.d/mysqld_multi start 1-3

关闭多个进程的命令:

/etc/rc.d/init.d/mysqld_multi stop 1-3

  

注意:启动三个MySQL实例,注意这里的数字和my.cnf中的[mysqldN]对应,1-3就是启动[mysqld1][mysqld2][mysqld3]配置段的MySQL实例

9,运行命令,查看端口,看MySQL有没有正常启动,如果没有启动或报错,一般报错详细日志存在各个实例data目录下的 主机名.err文件中,打开此文件查找错误原因,逐步排错就可以了。

netstat -ano | egrep "3306|3307|3308"

10,因为在初始化数据目录的时候,用的是--initialize-insecure参数,所以我们初始化的数据库,root账户是没有密码的!要先改密码:

mysqladmin -uroot password '123' -S /tmp/mysql3306.sock
mysqladmin -uroot password '123' -S /tmp/mysql3307.sock
mysqladmin -uroot password '123' -S /tmp/mysql3308.sock

或者通过下面命令初始化密码:

mysqladmin -uroot password '123' -P3306 -h127.0.0.1
mysqladmin -uroot password '123' -P3307 -h127.0.0.1
mysqladmin -uroot password '123' -P3308 -h127.0.0.1

11,如果需要开启root远程登陆权限

mysql -uroot -p'123' -P3306 -h127.0.0.1

use mysql
update user set host='%' where user='root';
flush privileges;
select user,host,authentication_string from user;

小结:

配置到这的时候说明MySql数据库的多实例已经配置完成,具体在实际中的应用还需根据您的需求

MySql5.7多实例配置教程的更多相关文章

  1. MySQL5.7 Replication主从复制配置教程

    最近配置mysql5.7主从复制的时候碰到了些问题,老老实实按老版本的步骤配置会有错误,后来自己查看了官方文档,才解决了问题,在这里总结一下5.7的配置步骤, 大体步骤跟老版本的还是一样的,只是有一些 ...

  2. window7环境MySql5.7 zip安装配置教程

    1.将zip压缩包解压到一个目录下,并改名为mysql5.7 我的是放在D:\web\mysql5.7下 2.修改my-default.ini文件 下面几项是必填的,否则无法启动 basedir = ...

  3. (转)【干货】MySQL 5.7 多实例(多进程)配置教程

    原文:https://blog.csdn.net/zougen/article/details/79567744 https://klionsec.github.io/2017/09/20/mysql ...

  4. MySQL基础环境_安装配置教程(Windows7 64或Centos7.2 64、MySQL5.7)

    MySQL基础环境_安装配置教程(Windows7 64或Centos7.2 64.MySQL5.7) 安装包版本 1)     VMawre-workstation版本包 地址: https://m ...

  5. MYSQL多实例配置与使用教程

    原文http://www.111cn.net/database/mysql/58651.htm 在实际的开发过程中,可能会需要在一台服务器上部署多个MYSQL实例,那建议使用MYSQL官方的解决方案 ...

  6. mysql5.7版本免安装配置教程

    自己花了两天时间才搞清楚,希望对新手有一定帮助,有问题可以联系哦! mysql分为安装版本msi,免安装要压缩版本ZIP,下载网址:http://dev.mysql.com/downloads 免安装 ...

  7. 烂泥:mysql5.5多实例部署

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. mysql5.5数据库多实例部署,我们可以分以下几个步骤来完成. 1. mysql多实例的原理 2. mysql多实例的特点 3. mysql多实例应用 ...

  8. MySQL 5.5.35 单机多实例配置详解

    一.前言 二.概述 三.环境准备 四.安装MySQL 5.5.35 五.新建支持多实例的配置文件(我这里配置的是四个实例) 六.初始化多实例数据库 七.提供管理脚本 mysqld_multi.serv ...

  9. Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS

    摘自:http://www.powerxing.com/install-hadoop-cluster/ 本教程讲述如何配置 Hadoop 集群,默认读者已经掌握了 Hadoop 的单机伪分布式配置,否 ...

随机推荐

  1. 关于oracle数据库中获取版本号类数据最大值的sql

    目前还在高度加班中,但是本次内容怕自己忘记,好不容易解决的,所以赶紧先随便抽点时间记录下,也没来得及考虑效率什么的优化问题,免得以后忘记了. 测试库结构如下: 表名为 testtab 字段名为test ...

  2. C语言课设——电影院选票系统

    C语言课设--电影院选票系统 1.课题介绍 大家都爱看电影,现请参考一个熟悉电影票预订系统,实现C语言版的订票系统.了解订票如何实现的.系统主要有2类用户:管理员用户和顾客用户. 管理员用户 1.电影 ...

  3. Hive分区表的导入与导出

    最近在做一个小任务,将一个CDH平台中Hive的部分数据同步到另一个平台中.毕竟我也刚开始工作,在正式开始做之前,首先进行了一段时间的练习,下面的内容就是练习时写的文档中的内容.如果哪里有错误或者疏漏 ...

  4. [la P4487] Exclusive-OR

    [la P4487] Exclusive-OR Time limit 3000 ms  OS Linux You are not given n non-negative integers X0, X ...

  5. Linux内存管理(二)

    Linux内存管理之二:Linux在X86上的虚拟内存管理 本文档来自网络,并稍有改动. 前言 Linux支持很多硬件运行平台,常用的有:Intel X86,Alpha,Sparc等.对于不能够通用的 ...

  6. Dubbo死磕之扩展点加载ExetnsionLoader

    dubbo的SPI机制与JDK的SPI机制对比        dubbo一款阿里一款开源的RPC框架,他本身是一款非常复杂的系统,我们主要针对里边的一些核心点来展开分析,其中duboo里的一种核心机制 ...

  7. 学习笔记------------解决margin塌陷

    首先来解释一下什么是marg塌陷? 父子嵌套元素垂直方向的margin,父子元素是结合在一起的,他们两个会取其中最大的值 正常情况下应该是父级元素相对于浏览器定位,而子级元素相对于父级元素定位 但是m ...

  8. 安装vue 教程

    安装教程:https://www.cnblogs.com/zhaomeizi/p/8483597.html

  9. Linux c使用gumbo库解析页面表单信息(一)

    一.gumbo介绍 gumbo是一个由谷歌开发的,能够解析html页面的库.功能稳定可靠,使用起来十分方便. 二.gumbo安装 (1)从https://github.com/google/gumbo ...

  10. laravel 记录

    1.处理ajax跨域  使用  composer require barryvdh/laravel-cors