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 ...
随机推荐
- Python获取 bing 地图发布自己的 TMS 服务(二)解决海量瓦片存取问题
金字塔结构的瓦片数量有多大 以目前互联网常用的WebMecator为例 第一层:4幅256*256影像瓦片(JPG或PNG等) 第二层:42 第三层:43 依次类推比如计算第1层至第18层的瓦片总数目 ...
- 曹工说Spring Boot源码系列开讲了(1)-- Bean Definition到底是什么,附spring思维导图分享
写在前面的话&&About me 网上写spring的文章多如牛毛,为什么还要写呢,因为,很简单,那是人家写的:网上都鼓励你不要造轮子,为什么你还要造呢,因为,那不是你造的. 我不是要 ...
- ARTS-S mac终端ftp命令行上传下载文件
上传 ftp -u ftp://root:123456@10.11.12.3/a.txt a.txt 下载 ftp -o a.txt ftp://root:123456@10.11.12.13/a.t ...
- Hadoop完全分布式集群搭建
Hadoop的运行模式 Hadoop一般有三种运行模式,分别是: 单机模式(Standalone Mode),默认情况下,Hadoop即处于该模式,使用本地文件系统,而不是分布式文件系统.,用于开发和 ...
- bash单引号嵌套
转自:https://blog.jysoftware.com/2015/12/bash-%E6%80%8E%E4%B9%88%E5%81%9A%E5%8D%95%E5%BC%95%E5%8F%B7%E ...
- 记录一次VMware与xshell远程链接的总结
VMware 与xshell链接 说在前面 用了一年多的virtualbox,虚拟机环境的配置算是理清了,可最近参加红帽培训,大家用的都是VMware,想想我也试试吧,刚好再熟悉一下,于是就捣鼓了很久 ...
- Redis实战 | 5种Redis数据类型详解
我们知道Redis是目前非常主流的KV数据库,它因高性能的读写能力而著称,其实还有另外一个优势,就是Redis提供了更加丰富的数据类型,这使得Redis有着更加广泛的使用场景.那Redis提供给用户的 ...
- java动态编译运行代码
import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URI;import java.util. ...
- python爬虫获取天猫与京东的商品价格
git地址: https://gitee.com/zhxs_code/spider_python 目前已简单实现可以爬取指定页面的价格(天猫和狗东的都可以),但是由于天猫与狗东对价格的展示方式和策 ...
- salt python msgpack.exceptions.
msgpack.exceptions.UnpackValueError: 'utf-8' codec can't decode byte 0x82 in position 22: invalid st ...