MySQL的多实例

实验准备:

1. 一个干净的centos7系统
2. 关闭防火墙和selinux
3. 之前已经二进制安装过的MySQL数据库
4. 准备文件夹

准备阶段:

  1. 准备文件目录
[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
  1. 更改所有者所属组
[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

实验阶段

  1. 分别创建数据库并确认数据库文件都生成了,再查看所有者所属组是否正确。
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
  1. 准备配置文件
[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
  1. 设置服务启动脚本(只有多实例安装需要自己手写脚本其他安装都是自动生成的)
[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
(在这一步的时候可以先试启动一下如果没问题就把剩下两个启动脚本一起设置好)
  1. 试启动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做完)
  1. 继续设置另外两个启动脚本
[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
.
.
.
.
  1. 启动所有脚本
[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多实例安装教程的更多相关文章

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

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

  2. MySQL数据库的安装教程及相关问题

    MySQL数据库的安装教程及相关问题 2018-07-13 MySQL数据库的下载及安装教程 问题1:Authentication plugin 'caching_sha2_password' can ...

  3. linux下mysql多实例安装

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

  4. mysql多实例安装与ssl认证

    mysql多实例安装有两种形式: 同一数据库版本的多实例安装. 不同数据库版本的多实例安装. 同一数据库的多实例安装: 在同一台机器上安装4台mysql数据库实例. 从官网下载MySQL5.6版本的二 ...

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

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

  6. Mysql多实例安装+主从复制+读写分离 -学习笔记

    Mysql多实例安装+主从复制+读写分离 -学习笔记 .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px ...

  7. windows下mysql多实例安装

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

  8. Mysql多实例 安装以及配置

    MySQL多实例 1.什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的soc ...

  9. mysql多实例安装详解

    首先说明一个场景:我的电脑是ubuntu系统,之前apt-get自动安装过mysql.这也是出现错误最多的原因之一. 安装过程,其中充斥着各种错误: 6.mkdir mysql 7.groupadd  ...

随机推荐

  1. ef not in

    //not in linq var xx=(from c in measStateDetail where !((from d in breakInstr select d.InstrCode).Co ...

  2. Jmeter性能测试配置

    目录 Jmeter检查点/断言 Jmeter事务 Jmeter集合点 Jmeter检查点/断言 在上一章节中,我们通过调试脚本,通过人工验证脚本可以完成业务功能, 但在性能测试中,我们希望能通过自动验 ...

  3. python爬虫获取天猫与京东的商品价格

    git地址:   https://gitee.com/zhxs_code/spider_python 目前已简单实现可以爬取指定页面的价格(天猫和狗东的都可以),但是由于天猫与狗东对价格的展示方式和策 ...

  4. CodeForces - 1059C Sequence Transformation (GCD相关)

    Let's call the following process a transformation of a sequence of length nn. If the sequence is emp ...

  5. 五分钟了解ES6对数值的扩展

    文章目录 数值的扩展(ES6) 1. 二进制八进制表示法 2. Number对象 3. Math对象 4. 指数运算符 5. Integer 数据类型 5.1 简介 5.2 运算 数值的扩展(ES6) ...

  6. 初步了解JVM第三篇(堆和GC回收算法)

    在<初步了解JVM第一篇>和<初步了解JVM第二篇>中,分别介绍了: 类加载器:负责加载*.class文件,将字节码内容加载到内存中.其中类加载器的类型有如下:执行引擎:负责解 ...

  7. Vue与Django前后台分离跨域配置

    一.跨域: 简单来说:如果前端向后端请求数据,前后端的的ip和端口都是不一致的,就是不在统一域名下,就出现了CORS跨域问题. 二.后台处理跨域 在django后台环境目录下安装插件: >: p ...

  8. ASP.NET+d3.js实现Sqlserver数据库的可视化展示

    效果: 数据库端: 前端展示: 实现原理: 1.在数据段建立两个存储过程 queryUserAnsawer(id) 根据用户ID返回每一题的得分,主要是bcp exe时不能直接在sqlserver中执 ...

  9. 不加班的秘诀:如何通过AOE快速集成NCNN?

    作为我司头发储量前三的程序员 始终仗着头发多奋斗在加班的第一线 时时灵魂拷问自己 年轻人,你凭什么不加班? 虽然我没有女朋友但是,我有代码呀 但我不明白的是,隔壁工位那个,到岗比我迟,下班比我早,天天 ...

  10. leaflet-webpack 入门开发系列六矢量瓦片(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...