多实例:MySQL系列之二

MySQL的多实例配置

? 一台物理机中需要多个测试环境,那么就需要用到了搭建数据库的多个实例,多个实例的意思就是运行多份程序,实例与实例之间没有影响。要注意监听的端口需要不同。

环境:CentOS7.5,编译安装MariaDB-10.2.15版本,软件安装目录:/app/mysql/

? 1)创建运行的目录环境

[[email protected] ~]# mkdir -p /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data,bin}
[[email protected] ~]# chown -R mysql:mysql /mysqldb/

? 2)初始化数据库

[[email protected] ~]# cd /app/mysql/
[[email protected] mysql]# scripts/mysql_install_db --datadir=/mysqldb/3306/data/ --user=mysql --basedir=/app/mysql/
[[email protected] mysql]# scripts/mysql_install_db --datadir=/mysqldb/3307/data/ --user=mysql --basedir=/app/mysql/
[[email protected] mysql]# scripts/mysql_install_db --datadir=/mysqldb/3308/data/ --user=mysql --basedir=/app/mysql/

以上是编译安装的,安装目录为/app/mysql/,需要先进入软件的安装目录然后执行初始化脚本,如果是yum安装的包,则直接运行mysql_install_db命令即可

? 3)提供配置文件并按需要修改

[[email protected] mysql]# cp support-files/my-huge.cnf /mysqldb/3306/etc/my.cnf
[[email protected] mysql]# cp support-files/my-huge.cnf /mysqldb/3307/etc/my.cnf
[[email protected] mysql]# cp support-files/my-huge.cnf /mysqldb/3308/etc/my.cnf
[[email protected] mysqldb]# cd /mysqldb/
[[email protected] mysqldb]# vim 3306/etc/my.cnf
[mysqld]
port        = 3306
datadir     = /mysqldb/3306/data
socket      = /mysqldb/3306/socket/mysql.sock
[[email protected] mysqldb]# vim 3307/etc/my.cnf  #按以上配置示例更改
[[email protected] mysqldb]# vim 3308/etc/my.cnf

? 4)提供服务启动脚本

[[email protected] ~]# cat mysqld  #脚本示例
#!/bin/bash

port=3306  #需要修改为当前实例的端口号
mysql_user="root"
mysql_pwd=""
cmd_path="/app/mysql/bin"  #安装目录下的bin
mysql_basedir="/mysqldb"  #实例数据库文件所在目录
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"

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
[[email protected] ~]# cp mysqld /mysqldb/3306/bin/
[[email protected] ~]# cp mysqld /mysqldb/3307/bin/
[[email protected] ~]# cp mysqld /mysqldb/3308/bin/
[[email protected] ~]# vim /mysqldb/3306/bin/mysqld
port=3306
[[email protected] ~]# vim /mysqldb/3307/bin/mysqld
port=3307
[[email protected] ~]# vim /mysqldb/3308/bin/mysqld
port=3308

? 5)修改脚本文件权限,防止密码被别人看到

[[email protected] ~]# chmod 700 /mysqldb/3306/bin/mysqld
[[email protected] ~]# chmod 700 /mysqldb/3307/bin/mysqld
[[email protected] ~]# chmod 700 /mysqldb/3308/bin/mysqld 

? 6)启动服务

[[email protected] ~]# service mysqld stop  #保证自己原来的服务停止,释放3306端口
[[email protected] ~]# /mysqldb/3306/bin/mysqld start  #启动服务
[[email protected] ~]# /mysqldb/3307/bin/mysqld start
[[email protected] ~]# /mysqldb/3308/bin/mysqld start
[[email protected] ~]# ss -tnl  #如果看到三个实例监听的端口都打开后说明服务启动正常
LISTEN 0 80 :::3306 :::*
LISTEN 0 80 :::3307 :::*
LISTEN 0 80 :::3308 :::*

? 7)连接测试

[[email protected] ~]# mysql -S /mysqldb/3306/socket/mysql.sock  #使用-S指定套接字文件
Server version: 10.2.15-MariaDB-log Source distribution
MariaDB [(none)]> show variables like '%port';  #查看端口是否是3306
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| extra_port          | 0     |
| large_files_support | ON    |
| port                | 3306  |
| report_port         | 3306  |
+---------------------+-------+
4 rows in set (0.00 sec)

[[email protected] ~]# mysql -S /mysqldb/3307/socket/mysql.sock  #再连接测试一下3307和3308
Server version: 10.2.15-MariaDB-log Source distribution
MariaDB [(none)]> show variables like '%port';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| extra_port          | 0     |
| large_files_support | ON    |
| port                | 3307  |
| report_port         | 3307  |
+---------------------+-------+
4 rows in set (0.00 sec)

[[email protected] ~]# mysql -S /mysqldb/3308/socket/mysql.sock
Server version: 10.2.15-MariaDB-log Source distribution
MariaDB [(none)]> show variables like '%port';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| extra_port          | 0     |
| large_files_support | ON    |
| port                | 3308  |
| report_port         | 3308  |
+---------------------+-------+
4 rows in set (0.00 sec)

多实例搭建成功!

? 8)使用这条命令来停止实例

[[email protected] ~]# /mysqldb/3306/bin/mysqld stop

? 9)最后一步:给root用户加个密码把~

[[email protected] ~]# mysql -S /mysqldb/3307/socket/mysql.sock
Server version: 10.2.15-MariaDB-log Source distribution

MariaDB [(none)]> update mysql.user set password=PASSWORD("your_password") where user='root';
Query OK, 4 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *9E72259BA9214F692A85B240647C4D95B0F2E08B |
| root | centos7   | *9E72259BA9214F692A85B240647C4D95B0F2E08B |
| root | 127.0.0.1 | *9E72259BA9214F692A85B240647C4D95B0F2E08B |
| root | ::1       | *9E72259BA9214F692A85B240647C4D95B0F2E08B |
|      | localhost |                                           |
|      | centos7   |                                           |
+------+-----------+-------------------------------------------+
6 rows in set (0.00 sec)

[[email protected] ~]# mysql -S /mysqldb/3307/socket/mysql.sock -uroot -p'your_password' #指定密码,再次登录OK~

最后将你的密码加入bin/mysqld脚本文件中,防止服务无法启动

@^_^@ 2018.06.04 23:27

原文地址:https://www.cnblogs.com/L-dongf/p/9136573.html

时间: 2024-11-10 07:40:03

多实例:MySQL系列之二的相关文章

MySQL 系列(二)Jdbc

MySQL 系列(二)Jdbc 一.Jdbc 基本操作 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import org.junit.Test; public class TestJdbc { @Test public void run1() throws Exception{ //1.注册驱动 Cl

MySQL系列(二)

MySql 事务 目录 MySQL系列(一):基础知识大总结 MySQL系列(二):MySQL事务 MySQL系列(三):索引 什么是事务(transaction) 保证成批操作要么完全执行,要么完全不执行,维护数据的完整性.也就是要么成功要么失败. 事务可以是n条sql语句(n>=0) 不是所有数据库引擎支持事务,InnoDB引擎支持事务处理 事务四大特性 原子性(Atomic):事务的所有所有操作要么全部执行,要么全部不执行.如果中途出现错误不会停止,而是回滚到事务前的状态 一致性(Cons

MYSQL系列之(二)

上一篇文章讲的是mysql的基本操作,这一篇会有一点难以理解,本节主要内容mysql视图,存储过程,函数,事务,触发器,以及动态执行sql 视图view 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成.对其中所引用的基础表来说,视图的作用类似于筛选.定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图.通过视图进行查询没有任何

Linux命令:Mysql系列之二cmake编译安装使用mysqladmin管理工具

MySQL相关概念:MySQL是单进程多线程接收应用的请求. SQL/MySQL 1.事务,隔离,并发控制,锁 2.用户和权限 3.监控 STATUS 4.索引类型:查询 VARIABLES 5.备份和恢复 6.复制功能 7.集群 DML:数据操作语言 INSERT:插入 DELETE:删除 SELECT:挑选,选择,查询 UPDATE:更新,修改 DDL:数据定义语言 CREATE:创建 DROP:删除 ALTER:修改 DCL:数据控制语言 GRANT:授权 REVOKE:取消权限 MySQ

MySQL系列之二四种隔离级别及加锁

事务 1.定义:所有操作必须成功完成,否则在每个操作中所作的所有更改都会备撤销. 2.事务的ACID 原子性atomicity   一致性consistency   隔离性isolation   持续性durability 2-1.原子性: 事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 2-2.一致性: 事务执行的结果必须是数据库从一个一致性状态变到另一个一致性状态.因此当数据库只包含成功事务提交的结果时, 就说明数据库处于一致性状态. 2-3.隔离性: 一个事务的执行不能

MySQL 系列(二) 你不知道的数据库操作

本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网远程连接法 查看\创建\使用\删除\清空\修改 数据库表(是否可空,默认值,主键,自增,外键) 表内容的增删改查 where条件.通配符_%.限制limit.排序desc\asc.连表join.组合union 查看建表语句.查看表结构.查看是否走索引 数据类型 索引! 一.数据库操作 1.查看数据库 SHOW DATABASES; # 默认数据库: mysql - 用户权限相关数据 test - 用于用户测试数据 inform

mysql系列之二数据类型和运算符

数据库表由多列字段构成,每一个字段指定了不同的数据类型.指定字段得数据类型之后,也就决定了向字段插入的数据内容,例如,当要插入数值的时候,可以将他们存储为整数类型,也可以将它们存储为字符串类型:不同的数据类型也决定了mysql在存储它们的时候使用的方式,以及在使用它们的时候选择什么运算符号进行运算. 1.MySQL数据类型介绍 MySQL支持多种数据类型,主要有数值类型.日期/时间类型和字符串类型. (1)数值数据类型:包括整数类型TINYINT.SMALLINT.MEDIUMINT.INT.B

mysql系列之二关系型数据库基础理论

SQL查询语句: sequel-->SQL SQL-86 SQl-89 SQL-92 SQL-99 SQL-03 SQL-08 SQL语言的组成部分: DDL DML 完整性定义语言:DDL的一部分功能 视图定义 事物控制: 嵌入式SQL和动态SQL: 授权:DCL 使用程序设计语言如何跟RDBMS交互: 嵌入式SQL:与动态SQL类似,但其语句必须在程序编译时完全确定下来. ODBC 动态SQL:程序设计语言使用函数与数据库服务器建立连接并进行交互 JDBC MySQL插件式存储引擎(默认)

MySQL系列(一)

MySQL系列(一)---基础知识大总结 前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里作简单概括性的介绍,具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续会慢慢补充完善. 目录 MySQL系列(一):基础知识大总结 MySQL系列(二):MySQL事务 MySQL系列(三):索引 数据库和数据库软件 数据库是保存有组织数据的容器 DBMS是为管理数据库而设计的软件管理系统,MYSQL.ORACLE 等是数据库管理系统 MYSQL MYSQL是一种数据库管