首先我们要清楚什么是多实例?所谓多实例就是用多个配置文件来启动多个不同端口的进程,以不同的端口的形式为外提供服务。
明白了多实例 我们下面的操作和配置就一目了然了
首先我们要安装一套基础的应用程序,也就是说单实例这个流程请参考https://www.cnblogs.com/qiuhom-1874/p/9751195.html

1.关闭单实例服务和开机启动

/etc/init.d/mysqld stop
chkconfig mysqld off

2.创建好多实例的目录结构

mkdir -p /mysql_multi_case/{3306..3308}/data

3.分别在各个实例目录下写配置文件和启动脚本,

以下是3306里面的my.cnf配置

[client]
port = 3306
socket = /mysql_multi_case/3306/mysql.sock [mysqld]
port = 3306
socket = /mysql_multi_case/3306/mysql.sock
basedir = /application/mysql
datadir = /mysql_multi_case/3306/data
open_files_limit = 1024
back_log = 600
max_connections = 800
max_connect_errors = 3000
table_cache = 614
external-locking = FALSE
max_allowed_packet = 8M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 100
thread_concurrency = 2
query_cache_size = 2M
query_cache_limit = 1M
query_cache_min_res_unit = 2k
thread_stack = 192k
tmp_table_size = 2M
max_heap_table_size = 2M
long_query_time = 1
pid-file = /mysql_multi_case/3306/mysqld.pid
log-bin = /mysql_multi_case/3306/mysqld-bin
relay-log = /mysql_multi_case/3306/relay-bin
relay-log-info-file = /mysql_multi_case/3306/relay-log.info
expire_logs_days = 7
key_buffer_size = 16M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 1M
lower_case_table_names = 1
skip-name-resolve
slave-skip-errors = 1032,1062
replicate-ignore-db = mysql server-id = 1 innodb_additional_mem_pool_size = 4M
innodb_buffer_pool_size = 32M
innodb_data_file_path = ibdata1:128M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 4M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0 [mysqldump]
quick
max_allowed_packet = 2M [mysqld_safe]
log-error = /mysql_multi_case/3306/mysql_lee3306.err
pid-file = /mysql_multi_case/3306/mysqld.pid

  说明:这里说一下配置文件需要注意的是里面的端口信息必须是每个实例的端口是唯一的不能重复。启动脚本都是一样的,只是启动的端口信息不同,密码和用户看自己的喜好配置

以下是3306里面的mysql启动脚本

#!/bin/bash
#
#
#
#init
port=3306
mysql_user="root"
mysql_pwd="admin"
CmdPath="/application/mysql/bin"
mysql_sock="/mysql_multi_case/${port}/mysql.sock" #startup function
function_start_mysql(){
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/mysql_multi_case/${port}/my.cnf 2>&1 >/dev/null &
else
printf "MySQL is running ... \n"
exit
fi
} #stop function
function_stop_mysql(){
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped ... \n"
exit
else
printf "Stopping MySQL ... \n"
${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /mysql_multi_case/${port}/mysql.sock shutdown
fi
} #restart function
function_restart_mysql(){
printf "Restarting MySQL ... \n"
function_stop_mysql
sleep 2
function_start_mysql
} case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: /mysql_multi_case/${port}/mysql {start|stop|restart} \n"
esac

  说明:以上脚本最核心的就是两个命令,第一个就是mysqld_safe --defaults-file指定默认配置文件来启动数据库,第二个命令就是mysqladmin 指定用户名和密码 同时指定mysql.sock文件 shutdown 来关闭mysql对应的实例,restart 的思想就是先调用stop函数,在调用start函数。3307和3308的启动脚本和以上一样的,唯一的区别是端口不同。

4.写好了配置文件和启动脚本后,接下来是对目录结构授权,以及给脚本加可执行权限

chown -R mysql:mysql /mysql_multi_case                                   ####更改整个目录属组属主
find /mysql_multi_case/ -type f -name 'mysql'|xargs chmod +x ####对所有实例的启动脚本增加可执行权限

5.初始化数据库

cd /application/mysql/scripts
./mysql_install_db --basedir=/application/mysql/ --datadir=/mysql_multi_case/3306/data --user=mysql

  说明:数据库的初始化就是执行我们单实例程序的scripts目录里的mysql_install_db脚本,指定basedir 和datadir 还有用户,来初始化数据库,执行以上初始化脚本后 如果返回

Installing MySQL system tables...
OK
Filling help tables...
OK

 说明:返回两个OK 那么就表示数据文件已经初始化完成,其实初始化的作用就是导入基本的数据库表格文件呀,系统表呀等,我们可以进到我们初始化指定的data目录里看,多了许多文件。 

6.启动每个多实例服务

/mysql_multi_case/3306/mysql start
/mysql_multi_case/3307/mysql start
/mysql_multi_case/3308/mysql start

  说明:启动服务就是调用我们之前写启动脚本。

检查服务是否启动起来

ss -lnt|egrep "3306|3307|3308"

  说明:如果能够检查到3306、3307、3308这些端口 那么表示服务已经正常运行。

接下来是我们给数据库设置登录密码,默认情况root是空密码

mysqladmin -uroot password admin -S /mysql_multi_case/3306/mysql.sock
mysqladmin -uroot password admin -S /mysql_multi_case/3307/mysql.sock
mysqladmin -uroot password admin -S /mysql_multi_case/3308/mysql.sock

  说明:本人是测试环境所有用的是弱密码,正式环境不建议。以上命令的意思就是给root用户设置密码成admin(这是初始化root密码为空的情况),值得注意的是 多实例一定要指定mysql的sock文件,mysqladmin -uroot -padmin password adminn123 -S /mysql_multi_case/3306/mysql.sock这种情况就是给root用户更改密码,其实这些命令不用去记,我们初始化两个ok的界面,系统会告诉我们。

6.设置开机启动

echo "/mysql_multi_case/3306/mysql start" >>/etc/rc.local
echo "/mysql_multi_case/3307/mysql start" >>/etc/rc.local
echo "/mysql_multi_case/3308/mysql start" >>/etc/rc.local

7.登录mysql 

7.1本地登录

mysql -uroot -padmin -S /mysql_multi_case/3306/mysql.sock

7.2远程登录

mysql -uroot -padmin -h 192.168.11.107 -P 11319 -S /mysql_multi_case/3306/mysql.sock

  说明:多实例的登录和单实例不同,多实例需要指定不同的mysql.sock文件来登录对应的mysql实例,本地登录不需要指定主机和端口,远程登录需要指定主机地址和端口,注意指定端口是-P(大写) -p(小写)是指定密码字符串 -S是指定mysql.sock文件。

关于远程用户授权请参考https://www.cnblogs.com/qiuhom-1874/p/9741166.html

Linux下mysql 多实例安装配置的更多相关文章

  1. linux下mysql多实例安装

    1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的 ...

  2. linux下mysql多实例安装(转)

    转自:http://www.cnblogs.com/xuchenliang/p/6843990.html   1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上 ...

  3. linux 下mysql多实例安装

    1.软件下载 https://dev.mysql.com/downloads/file/?id=479096 免编译二进制包 mysql-5.6.21-linux-glibc2.5-x86_64.ta ...

  4. Windows 8.1下 MySQL绿色版安装配置与使用

    原文:Windows 8.1下 MySQL绿色版安装配置与使用 Mysql-5.6.17-winx64操作步骤: 一.安装MySQL数据库 1.下载. 下载地址:http://downloads.my ...

  5. Linux下MySQL数据库主从同步配置

    说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...

  6. Linux下apache+phppgadmin+postgresql安装配置

    Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...

  7. Windows下MySQL多实例安装/主从复制/重置密码

    Windows创建MySQL多实例 安装MYSQL和实例1 运行mysql-installer-community-5.7.16.0.msi 选择组件 MySQL Server 5.7.16 – X6 ...

  8. Linux下xampp集成环境安装配置方法 、部署bugfree及部署禅道

    XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包.XAMPP 是一个易于安装且包含 MySQL.PHP 和 Perl 的 Apache 发行版.XAMPP 的确非 ...

  9. windows下mysql多实例安装

    在学习和开发过程中有时候会用到多个MySQL数据库,比如Master-Slave集群.分库分表,开发阶段在一台机器上安装多个MySQL实例就显得方便不少. 在 MySQL教程-基础篇-1.1-Wind ...

随机推荐

  1. Kibana 快速入门教程

    欢迎关注笔者的公众号: 小哈学Java, 专注于推送 Java 领域优质干货文章!! 个人网站: https://www.exception.site/kibana/kibana-tutorial 什 ...

  2. Spring 框架基础(04):AOP切面编程概念,几种实现方式演示

    本文源码:GitHub·点这里 || GitEE·点这里 一.AOP基础简介 1.切面编程简介 AOP全称:Aspect Oriented Programming,面向切面编程.通过预编译方式和运行期 ...

  3. ESP8266开发之旅 基础篇① 走进ESP8266的世界

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  4. 打python&adb组合拳,实现微信读书永久免费读

    用过“微信读书”的朋友都知道,如果我们想阅读全本的付费书籍,除了购买整本(使用书币)外,还可以使用无限卡.可无论是购买全书还是无限卡,归根结底都是要花银子的. 除此之外,还有一种方式——用阅读时长兑换 ...

  5. 百万年薪python之路 -- 前端CSS样式

    CSS样式 控制高度和宽度 width宽度 height高度 块级标签能设置高度和宽度,而内联标签不能设置高度和宽度,内联标签的高度宽度由标签内部的内容来决定. 示例: <!DOCTYPE ht ...

  6. 【朝花夕拾】跨进程通信,你只知道AIDL,就OUT了

    一.前言 提起跨进程通信,大多数人首先会想到AIDL.我们知道,用AIDL来实现跨进程通信,需要在客户端和服务端都添加上aidl文件,并在服务端的Service中实现aidl对应的接口.如果还需要服务 ...

  7. 用最复杂的方式学会数组(Python实现动态数组)

    Python序列类型 在本博客中,我们将学习探讨Python的各种"序列"类,内置的三大常用数据结构--列表类(list).元组类(tuple)和字符串类(str). 不知道你发现 ...

  8. 数据结构(四十五)选择排序(1.直接选择排序(O(n²))2.堆排序(O(nlogn)))

    一.选择排序的定义 选择排序的基本思想是:每次从待排序的数据元素集合中选取最小(或最大)的数据元素放到数据元素集合的最前(或最后),数据元素集合不断缩小,当数据元素集合为空时排序过程结束.常用的选择排 ...

  9. C# leetcode 之 096 不同的二叉搜索树

    C# leetcode 之 096 不同的二叉搜索树 题目描述 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 二叉搜索树定义 左子树上所有节点的值小于根节点, 右子树上左右 ...

  10. 防抖与节流 & 若每个请求必须发送,如何平滑地获取最后一个接口返回的数据

    博客地址:https://ainyi.com/79 日常浏览网页中,在进行窗口的 resize.scroll 或者重复点击某按钮发送请求,此时事件处理函数或者接口调用的频率若无限制,则会加重浏览器的负 ...