MySQL多实例安装教程
MySQL的多实例
实验准备:
1. 一个干净的centos7系统
2. 关闭防火墙和selinux
3. 之前已经二进制安装过的MySQL数据库
4. 准备文件夹
准备阶段:
- 准备文件目录
[root@centos7 data]#mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
mkdir: created directory ‘/mysql’
mkdir: created directory ‘/mysql/3306’
mkdir: created directory ‘/mysql/3306/data’
mkdir: created directory ‘/mysql/3306/etc’
mkdir: created directory ‘/mysql/3306/socket’
mkdir: created directory ‘/mysql/3306/log’
mkdir: created directory ‘/mysql/3306/bin’
mkdir: created directory ‘/mysql/3306/pid’
mkdir: created directory ‘/mysql/3307’
mkdir: created directory ‘/mysql/3307/data’
mkdir: created directory ‘/mysql/3307/etc’
mkdir: created directory ‘/mysql/3307/socket’
mkdir: created directory ‘/mysql/3307/log’
mkdir: created directory ‘/mysql/3307/bin’
mkdir: created directory ‘/mysql/3307/pid’
mkdir: created directory ‘/mysql/3308’
mkdir: created directory ‘/mysql/3308/data’
mkdir: created directory ‘/mysql/3308/etc’
mkdir: created directory ‘/mysql/3308/socket’
mkdir: created directory ‘/mysql/3308/log’
mkdir: created directory ‘/mysql/3308/bin’
mkdir: created directory ‘/mysql/3308/pid’
(生成之后的效果)
[root@centos7 data]#tree /data
/data
├── mariadb-10.2.29-linux-x86_64.tar.gz
├── mariadb-install.sh
├── my.cnf
└── mysql
├── aria_log.00000001
├── aria_log_control
├── centos7.localdomain.pid
├── ib_buffer_pool
├── ibdata1
├── ib_logfile0
├── ib_logfile1
├── ibtmp1
├── multi-master.info
├── mysql
│ ├── columns_priv.frm
│ ├── columns_priv.MYD
│ ├── columns_priv.MYI
│ ├── column_stats.frm
│ ├── column_stats.MYD
│ ├── column_stats.MYI
│ ├── db.frm
│ ├── db.MYD
│ ├── db.MYI
│ ├── db.opt
│ ├── event.frm
│ ├── event.MYD
│ ├── event.MYI
│ ├── func.frm
│ ├── func.MYD
│ ├── func.MYI
│ ├── general_log.CSM
│ ├── general_log.CSV
│ ├── general_log.frm
│ ├── gtid_slave_pos.frm
│ ├── gtid_slave_pos.ibd
│ ├── help_category.frm
│ ├── help_category.MYD
│ ├── help_category.MYI
│ ├── help_keyword.frm
│ ├── help_keyword.MYD
│ ├── help_keyword.MYI
│ ├── help_relation.frm
│ ├── help_relation.MYD
│ ├── help_relation.MYI
│ ├── help_topic.frm
│ ├── help_topic.MYD
│ ├── help_topic.MYI
│ ├── host.frm
│ ├── host.MYD
│ ├── host.MYI
│ ├── index_stats.frm
│ ├── index_stats.MYD
│ ├── index_stats.MYI
│ ├── innodb_index_stats.frm
│ ├── innodb_index_stats.ibd
│ ├── innodb_table_stats.frm
│ ├── innodb_table_stats.ibd
│ ├── plugin.frm
│ ├── plugin.MYD
│ ├── plugin.MYI
│ ├── proc.frm
│ ├── proc.MYD
│ ├── proc.MYI
│ ├── procs_priv.frm
│ ├── procs_priv.MYD
│ ├── procs_priv.MYI
│ ├── proxies_priv.frm
│ ├── proxies_priv.MYD
│ ├── proxies_priv.MYI
│ ├── roles_mapping.frm
│ ├── roles_mapping.MYD
│ ├── roles_mapping.MYI
│ ├── servers.frm
│ ├── servers.MYD
│ ├── servers.MYI
│ ├── slow_log.CSM
│ ├── slow_log.CSV
│ ├── slow_log.frm
│ ├── tables_priv.frm
│ ├── tables_priv.MYD
│ ├── tables_priv.MYI
│ ├── table_stats.frm
│ ├── table_stats.MYD
│ ├── table_stats.MYI
│ ├── time_zone.frm
│ ├── time_zone_leap_second.frm
│ ├── time_zone_leap_second.MYD
│ ├── time_zone_leap_second.MYI
│ ├── time_zone.MYD
│ ├── time_zone.MYI
│ ├── time_zone_name.frm
│ ├── time_zone_name.MYD
│ ├── time_zone_name.MYI
│ ├── time_zone_transition.frm
│ ├── time_zone_transition.MYD
│ ├── time_zone_transition.MYI
│ ├── time_zone_transition_type.frm
│ ├── time_zone_transition_type.MYD
│ ├── time_zone_transition_type.MYI
│ ├── user.frm
│ ├── user.MYD
│ └── user.MYI
├── performance_schema
│ └── db.opt
├── tc.log
└── test
└── db.opt
4 directories, 103 files
- 更改所有者所属组
[root@centos7 data]#id mysql (因为之前已经安装过MySQL数据库所以有这个用户)
uid=987(mysql) gid=981(mysql) groups=981(mysql)
[root@centos7 data]#chown -R mysql.mysql /mysql/
[root@centos7 data]#ll mysql/
total 122936
-rw-rw---- 1 mysql mysql 16384 Nov 19 18:06 aria_log.00000001
-rw-rw---- 1 mysql mysql 52 Nov 19 18:06 aria_log_control
-rw-rw---- 1 mysql mysql 5 Nov 19 18:06 centos7.localdomain.pid
-rw-rw---- 1 mysql mysql 938 Nov 19 18:06 ib_buffer_pool
-rw-rw---- 1 mysql mysql 12582912 Nov 19 18:06 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Nov 19 18:06 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Nov 19 18:06 ib_logfile1
-rw-rw---- 1 mysql mysql 12582912 Nov 19 18:06 ibtmp1
-rw-rw---- 1 mysql mysql 0 Nov 19 18:06 multi-master.info
drwx------ 2 mysql mysql 4096 Nov 19 18:06 mysql
drwx------ 2 mysql mysql 20 Nov 19 18:06 performance_schema
-rw-rw---- 1 mysql mysql 24576 Nov 19 18:06 tc.log
drwx------ 2 mysql mysql 20 Nov 19 18:06 test
实验阶段
- 分别创建数据库并确认数据库文件都生成了,再查看所有者所属组是否正确。
143 /usr/local/mysql/scripts/mysql_install_db --datadir=/mysql/3306/data --user=mysql
144 /usr/local/mysql/scripts/mysql_install_db --datadir=/mysql/3307/data --user=mysql
145 /usr/local/mysql/scripts/mysql_install_db --datadir=/mysql/3308/data --user=mysql
[root@centos7 data]#ll /mysql/3307
total 0
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 bin
drwxr-xr-x 5 mysql mysql 181 Nov 19 18:39 data
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 etc
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 log
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 pid
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 socket
[root@centos7 data]#ll /mysql/3308
total 0
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 bin
drwxr-xr-x 5 mysql mysql 181 Nov 19 18:39 data
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 etc
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 log
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 pid
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 socket
[root@centos7 data]#ll /mysql/3306
total 0
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 bin
drwxr-xr-x 5 mysql mysql 181 Nov 19 18:39 data
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 etc
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 log
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 pid
drwxr-xr-x 2 mysql mysql 6 Nov 19 18:25 socket
[root@centos7 data]#ll /mysql/3306/data/
total 110620
-rw-rw---- 1 mysql mysql 16384 Nov 19 18:39 aria_log.00000001
-rw-rw---- 1 mysql mysql 52 Nov 19 18:39 aria_log_control
-rw-rw---- 1 mysql mysql 938 Nov 19 18:39 ib_buffer_pool
-rw-rw---- 1 mysql mysql 12582912 Nov 19 18:39 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Nov 19 18:39 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Nov 19 18:39 ib_logfile1
drwx------ 2 mysql mysql 4096 Nov 19 18:39 mysql
drwx------ 2 mysql mysql 20 Nov 19 18:39 performance_schema
drwx------ 2 mysql mysql 20 Nov 19 18:39 test
- 准备配置文件
[root@centos7 data]#cp /etc/my.cnf /mysql/3306/etc/
[root@centos7 data]#vim /mysql/3306/etc/my.cnf (根据自己规划的路径更改)
[mysqld]
port=3306
socket=/mysql/3306/socket/mysqld.sock
datadir=/mysql/3306/data
innodb_file_per_table=1
[mysqld_safe]
log-error=/mysql/3306/log/mysqld.log
pid-file=/mysql/3306/pid/mysqld.pid
~
(准备另外两个数据库的配置文件)
[root@centos7 data]#cp /mysql/3306/etc/my.cnf /mysql/3307/etc/
[root@centos7 data]#cp /mysql/3306/etc/my.cnf /mysql/3308/etc/
(使用sed替换)
[root@centos7 data]#sed -i 's/3306/3307/' /mysql/3307/etc/my.cnf
[root@centos7 data]#sed -i 's/3306/3308/' /mysql/3308/etc/my.cnf
(确认已经替换掉)
[root@centos7 data]#cat /mysql/3308/etc/my.cnf
[mysqld]
port=3308
socket=/mysql/3308/socket/mysqld.sock
datadir=/mysql/3308/data
innodb_file_per_table=1
[mysqld_safe]
log-error=/mysql/3308/log/mysqld.log
pid-file=/mysql/3308/pid/mysqld.pid
[root@centos7 data]#cat /mysql/3307/etc/my.cnf
[mysqld]
port=3307
socket=/mysql/3307/socket/mysqld.sock
datadir=/mysql/3307/data
innodb_file_per_table=1
[mysqld_safe]
log-error=/mysql/3307/log/mysqld.log
pid-file=/mysql/3307/pid/mysqld.pid
- 设置服务启动脚本(只有多实例安装需要自己手写脚本其他安装都是自动生成的)
[root@centos7 data]#cd /mysql/3306/bin/
[root@centos7 bin]#ls
[root@centos7 bin]#vim mysqld
#!/bin/bash
port=3306
mysql_user="root"
mysql_pwd="" (这个就为空就行)
cmd_path="/usr/local/mysql/bin" (这个路径按你自己的配置更改)
mysql_basedir="/mysql"
mysql_sock="${mysql_basedir}/${port}/socket/mysqld.sock" (这个之前改过名就在mysql后面加了个d)
function_start_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
else
printf "MySQL is running...\n"
exit
fi
}
function_stop_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
fi
}
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_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac
[root@centos7 bin]#chmod +x mysqld (加上执行权限)
[root@centos7 bin]#pwd
/mysql/3306/bin
(在这一步的时候可以先试启动一下如果没问题就把剩下两个启动脚本一起设置好)
- 试启动3306端口的数据库
[root@centos7 bin]#ss -ntl (确定3306端口没有占用,这里是因为我之前二进制安装的数据库占用了关掉就好了)
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:6000 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:6010 *:*
LISTEN 0 128 127.0.0.1:6011 *:*
LISTEN 0 80 :::3306 (这里端口还开着) :::*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::6000 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 ::1:6010 :::*
LISTEN 0 128 ::1:6011 :::*
[root@centos7 bin]#service mysqld stop (关闭数据库)
Stopping mysqld (via systemctl): [ OK ]
[root@centos7 bin]#ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:6000 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:6010 *:*
LISTEN 0 128 127.0.0.1:6011 *:*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::6000 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 ::1:6010 :::*
LISTEN 0 128 ::1:6011 :::*
[root@centos7 bin]#./mysqld (以为是自己写的启动脚本支持基本的三个参数)
Usage: /mysql/3306/bin/mysqld {start|stop|restart}
[root@centos7 bin]#./mysqld start
Starting MySQL...
[root@centos7 bin]#ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:6000 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:6010 *:*
LISTEN 0 128 127.0.0.1:6011 *:*
LISTEN 0 80 :::3306 (启动成功) :::*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::6000 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 ::1:6010 :::*
LISTEN 0 128 ::1:6011 :::*
[root@centos7 bin]#mysql -S /mysql/3306/socket/mysqld.sock (这里要登陆的话可以指定socket文件路径进行登录)
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.2.29-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases; (查看数据库)
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]> create database db3306; (建立一个数据库)
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> quit
Bye
[root@centos7 bin]#cd ..
[root@centos7 3306]#ls
bin data etc log pid socket
[root@centos7 3306]#ls data/
aria_log.00000001 ib_buffer_pool ib_logfile1 mysql test
aria_log_control ibdata1 ibtmp1 performance_schema
db3306 ib_logfile0 multi-master.info tc.log
(建立的数据库就是生成一个新的文件夹)
(到这里说明已经成功了,可以把之前没做完的3307,3308做完)
- 继续设置另外两个启动脚本
[root@centos7 3306]#cp bin/mysqld /mysql/3307/bin/
[root@centos7 3306]#cp bin/mysqld /mysql/3308/bin/ (把脚本拷贝过去)
[root@centos7 3306]#sed -i 's/3306/3307/' /mysql/3307/bin/mysqld (sed替换)
[root@centos7 3306]#sed -i 's/3306/3308/' /mysql/3308/bin/mysqld
[root@centos7 3306]#cat /mysql/3307/bin/mysqld (确认替换掉了)
#!/bin/bash
port=3307
.
.
.
.
[root@centos7 3306]#cat /mysql/3308/bin/mysqld
#!/bin/bash
port=3308
.
.
.
.
- 启动所有脚本
[root@centos7 3306]#/mysql/3307/bin/mysqld start (3306也可以这样启动)
Starting MySQL...
[root@centos7 3306]#/mysql/3308/bin/mysqld start
Starting MySQL...
[root@centos7 3306]#ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:6000 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:6010 *:*
LISTEN 0 128 127.0.0.1:6011 *:*
LISTEN 0 80 :::3306 :::*
LISTEN 0 80 :::3307 (成功) :::*
LISTEN 0 80 :::3308 :::*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::6000 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 ::1:6010 :::*
LISTEN 0 128 ::1:6011 :::*
(记得添加一下PATH变量要不使用命令工具很麻烦)
[root@centos7 mysql]#echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@centos7 mysql]#. /etc/profile.d/mysql.sh
MySQL多实例安装教程的更多相关文章
- Windows下MySQL多实例安装/主从复制/重置密码
Windows创建MySQL多实例 安装MYSQL和实例1 运行mysql-installer-community-5.7.16.0.msi 选择组件 MySQL Server 5.7.16 – X6 ...
- MySQL数据库的安装教程及相关问题
MySQL数据库的安装教程及相关问题 2018-07-13 MySQL数据库的下载及安装教程 问题1:Authentication plugin 'caching_sha2_password' can ...
- linux下mysql多实例安装
1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的 ...
- mysql多实例安装与ssl认证
mysql多实例安装有两种形式: 同一数据库版本的多实例安装. 不同数据库版本的多实例安装. 同一数据库的多实例安装: 在同一台机器上安装4台mysql数据库实例. 从官网下载MySQL5.6版本的二 ...
- linux下mysql多实例安装(转)
转自:http://www.cnblogs.com/xuchenliang/p/6843990.html 1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上 ...
- Mysql多实例安装+主从复制+读写分离 -学习笔记
Mysql多实例安装+主从复制+读写分离 -学习笔记 .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px ...
- windows下mysql多实例安装
在学习和开发过程中有时候会用到多个MySQL数据库,比如Master-Slave集群.分库分表,开发阶段在一台机器上安装多个MySQL实例就显得方便不少. 在 MySQL教程-基础篇-1.1-Wind ...
- Mysql多实例 安装以及配置
MySQL多实例 1.什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的soc ...
- mysql多实例安装详解
首先说明一个场景:我的电脑是ubuntu系统,之前apt-get自动安装过mysql.这也是出现错误最多的原因之一. 安装过程,其中充斥着各种错误: 6.mkdir mysql 7.groupadd ...
随机推荐
- CF1009F Dominant Indices(启发式合并)
You are given a rooted undirected tree consisting of nn vertices. Vertex 11 is the root. Let's denot ...
- Zabbix 监控PHP-FTPM、Tomcat、Redis应用
一.zabbix 监控 PHP-FPM应用实战Nginx+PHP-FPM是目前最流行的LNMP架构,在基于PHP开发的系统下,对这些系统性能的监控,主要是关注PHP-FPM的运行状态,那么什么是PHP ...
- Sample Preparation by Easy Extraction and Digestion (SPEED) - A Universal, Rapid, and Detergent-free Protocol for Proteomics based on Acid Extraction(一种使用强酸的蛋白质提取方法SPEED,普适,快速,无需去垢剂)-解读人:李思奇
期刊名:Mol Cell Proteomics 发表时间:(2019年12月) IF:4.828 单位:德国Robert Koch 研究所 物种:多种 技术:新蛋白提取和酶解方法 一. 概述: 本文设 ...
- 21.跨域和CORS
一 跨域 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的 ...
- 业级PPTP服务器搭建企
搭建企业级PPTP服务器 分类: Linux服务篇 undefined 本文收录在企业项目实战系列 一.VPN 介绍 1.介绍 虚拟私人网络(英语:Virtual Private Network, ...
- Linux 内存映射函数 mmap()函数详解
mmap将一个文件或者其它对象映射进内存.文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零.mmap在用户空间映射调用系统中作用很大.头文件 <sys/ ...
- Android Studio 中java 文件报错红色J
用常用的方法清除Android Studio的缓存然后重启,"File" -> "Invalidate Cashes / Restart" -> & ...
- NodeJS2-5环境&调试----process(进程)
argv(参数相关的) /* argv argv0 execArgv execPath */ const { argv, argv0, execArgv, execPath } = process; ...
- ssm整合——Mybatis配置(1)
mybatis搭建-基于注解 1. 环境准备 1.1 新建maven的webapp项目 1.2 新建必要的目录和文件 1.3 文件配置 pom.xml junit默认创建是4.11,手动改成4.12 ...
- dev gridcontrol绘制页脚
gridView.OptionsView.ShowFooter = true;//启用显示页脚 //索引为1的列 gridView.Columns[1].SummaryItem.DisplayForm ...