目录

一、基本概念

1、MySQL多实例

是在一台机器上面开启多个不同的端口,运行多个MySQL服务进程。这些MySQL多实例公用一套安装程序,使用不同的(也可以是相同的)配置文件,启动

程序,数据文件。在提供服务时候,多实例MySQL在逻辑上看来是各自独立的,多个实例的自身是根据配置文件对应的设定值,来取得相关硬件资源的多少。

2、应用场景

1.采用了数据伪分布式架构的原因,而项目启动初期又不一定有那多的用户量,为此先一组物理数据库服务器,但部署多个实例,方便后续迁移

2. 为规避mysql对SMP架构不支持的缺陷,使用多实例绑定处理器的办法,把不同的数据库分配到不同的实例上提供数据服务

3.  一台物理数据库服务器支撑多个数据库的数据服务,为提高mysql复制的从机的恢复效率,采用多实例部署

4.  已经为双主复制的mysql数据库服务器架构,想部分重要业务的数据多一份异地机房的热备份,而mysql复制暂不支持多主的复制模式,且不给用户提供服务,为有效控制成本,会考虑异地机房部署一台性能超好的物理服务器,甚至外加磁盘柜的方式,为此也会部署多实例;

5.  传统游戏行业的MMO/MMORPG,以及Web Game,每一个服都对应一个数据库,而可能要做很多数据查询和数据订正的工作,为减少维护而出错的概率,也可能采用多实例部署的方式,按区的概念分配数据库;

3、作用与问题

1、有效利用服务器的资源,单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。

2、资源互相争抢问题,比如 内存 ,cpu 需要开启 numa,并把 mysql 绑定到固定的核心上,网卡的中断请求,资源争用,最重要的是磁盘 IO

MySQL多实例配置方法

1、单一配置文件

2、多配置文件。

二、实战步骤:

1、同步时间

2、准备mysql依赖包

3、环境准备

3.1添加mysql用户

3.2编译安装mysql

4、安装MySQL多实例

5、准备配置文件

6、启动MySQL

7、登录mysql与一些安全措施

8、关闭MySQL

9,、提供简易管理脚本

10、为mysql的root用户创建密码

11、附,多配置文件安装mysql多实例,这里增加mysql 的3309端口

12、总结

1、同步时间yum install epel*

ntp 202.120.2.101

yum install -y ntp

ntpdate 202.120.2.101

hwclock -w

2、准备mysql依赖包yum install -y autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool* openssl*

yum install cmake -y

3、环境准备

3.1添加mysql用户groupadd mysql

useradd -g mysql mysql

mkdir -pv /data/{3306,3307,3308}/data

chown -R mysql.mysql /data/

cd /usr/local/src/

3.2编译安装mysqltar -xf mysql-5.5.45.tar.gz

cd mysql-5.5.45

chown mysql.mysql -R .

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/data \

-DSYSCONFDIR=/etc \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DWITH_SSL=system \

-DWITH_ZLIB=system \

-DWITH_LIBWRAP=0 \

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci

gmake

make install

4、安装MySQL多实例cd /usr/local/mysql/

scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data

scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data

scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/data

5、准备配置文件mysqld_multi --example > /data/multi.cnf   #提供多配置文件模板vim /data/multi.cnf   #修改模板,这里比较简易

[mysqld_multi]

mysqld     = /usr/local/mysql/bin/mysqld_safe

mysqladmin = /usr/local/mysql/bin/mysqladmin

user       = root

#这个用户应该有关机权限,然后没有其他的权限。建议创建一个通用的,multi_admin用户控制其它的MySQL用户,这里有个例子

#GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'password'

[mysqld1]

socket     = /tmp/mysql.sock1

port       = 3306

pid-file   = /data/3306/mysql.pid

datadir    = /data/3306/data

[mysqld2]

socket     = /tmp/mysql.sock2

port       = 3307

pid-file   = /data/3307/mysql.pid

datadir    = /data/3307/data

#language   = /usr/local/mysql/share/mysql/english

#user       = unix_user1

[mysqld3]

#mysqld     = /path/to/mysqld_safe

#ledir      = /path/to/mysqld-binary/

#mysqladmin = /path/to/mysqladmin

socket     = /tmp/mysql.sock3

port       = 3308

pid-file   = /data/3308/mysql.pid

datadir    = /data/3308/data

#language   = /usr/local/mysql/share/mysql/swedish

#user       = unix_user2

以上是简易的配置文件。这个配置文件只能让MySQL启动起来。

6、启动MySQLmysqld_multi --defaults-file=/data/multi.cnf start 1,2,3

ss -tnl   #查看监听端口

LISTEN     0      50                        *:3306                     *:*

LISTEN     0      50                        *:3307                     *:*

LISTEN     0      50                        *:3308                     *:*

7、登录mysql与一些安全措施mysql -S /tmp/mysql.sock1       #指定socket登录mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test               |

+--------------------+

4 rows in set (0.01 sec)

mysql> drop database test;

Query OK, 0 rows affected (0.04 sec)

mysql> select User,Host from mysql.user;

+------+-----------+

| User | Host      |

+------+-----------+

| root | 127.0.0.1 |

| root | ::1       |

|      | localhost |

| root | localhost |

|      | node1     |

| root | node1     |

+------+-----------+

6 rows in set (0.01 sec)

mysql> delete from mysql.user where User='';

Query OK, 2 rows affected (0.00 sec)

mysql> delete from mysql.user where Host='::1';

Query OK, 1 row affected (0.00 sec)

mysql> delete from mysql.user where Host='node1';

Query OK, 1 row affected (0.00 sec)

其余的操作类似,就不在演示

8、关闭MySQLmysqladmin -S /tmp/mysql.sock1 shutdown  建议使用

musqld_multi --defaults-file stop [#,#]

killall mysqld  不建议使用

9,、提供简易管理脚本#!/bin/bash

#

basedir=/usr/local/mysql

bindir=/usr/local/mysql/bin

conf=/data/multi.cnf

export PATH=$bindir:/$PATH

if test -x $bindir/mysqld_multi

then

mysqld_multi="$bindir/mysqld_multi";

else

echo "Can't execute $bindir/mysqld_multi from dir $basedir";

exit;

fi

case "$1" in

'start' )

"$mysqld_multi" --defaults-extra-file=$conf start $2

;;

'stop' )

"$mysqld_multi" --defaults-extra-file=$conf stop $2

;;

'report' )

"$mysqld_multi" --defaults-extra-file=$conf report $2

;;

'restart' )

"$mysqld_multi" --defaults-extra-file=$conf stop $2

"$mysqld_multi" --defaults-extra-file=$conf start $2

;;

*)

echo "Usage: $0 {start|stop|report|restart}" >&2

;;

esac

10、为mysql的root用户创建密码mysqladmin -uroot -S /tmp/mysql.sock2 password "123456"   #指定socket文件位置即可

其余的操作一样

11、附,多配置文件安装mysql多实例,这里增加mysql 的3309端口mkdir -pv /data/3309/data

chown mysql.mysql -R 3309/

cd /usr/local/mysql

scripts/mysql_install_db --datadir=/data/3309/data/ --user=mysql --basedir=/usr/local/mysql/

cp support-files/my-small.cnf /data/3309/my.cnfvim /data/3309/my.cnf

[client]

port        = 3309                 #这里也需要注意下吧

socket            = /tmp/mysql.sock4

[mysqld]

port        = 3309             #注意端口

socket            = /tmp/mysql.sock4           #注意socket

skip-external-locking

key_buffer_size = 16K

max_allowed_packet = 1M

table_open_cache = 4

sort_buffer_size = 64K

read_buffer_size = 256K

read_rnd_buffer_size = 256K

net_buffer_length = 2K

thread_stack = 128K

datadir=/data/3309/data        #注意datadir

server-id  = 1

[mysqldump]

quick

max_allowed_packet = 16Mmysqld_safe --defaults-file=/data/3309/my.cnf 2&1> > /dev/null    #启动mysqldss -tnl | grep 330                #查看端口

LISTEN     0      50                        *:3306                     *:*

LISTEN     0      50                        *:3307                     *:*

LISTEN     0      50                        *:3308                     *:*

LISTEN     0      50                        *:3309                     *:*

其余启动方法与关闭方法类似

12、总结:

1、通过这次mysql多实例安装,我们已经可以根据自己的喜好决定是通过多配置文件安装mysql多实例,还是但配置单文件安装。

2、过程比较简单,也没有什么特别高明的技巧,但是由小见大,以后配置文件可以在完善完善。

3、就是下面还会用心的写一系列的mysql博客,希望高手指点,不胜感激

参考链接:http://freeloda.blog.51cto.com/2033581/1349312

mysql 多实例指定cpu_mysql多实例相关推荐

  1. MySQL 5.5.35 单机多实例配置详解

    一.前言 二.概述 三.环境准备 四.安装MySQL 5.5.35 五.新建支持多实例的配置文件(我这里配置的是四个实例) 六.初始化多实例数据库 七.提供管理脚本 mysqld_multi.serv ...

  2. PHP 读取数据库内容并以二维数组按指定列输出实例

    最新PHP 读取数据库内容并以二维数组按指定列输出实例 以下是三零网为大家整理的最新PHP 读取数据库内容并以二维数组按指定列输出实例的文章,希望大家能够喜欢! <?php $host = &q ...

  3. mysql实例管理工具巨杉_实例管理工具_操作_MySQL实例_关系型数据库实例_文档中心_SequoiaDB巨杉数据库...

    实例管理工具 sdb_mysql_ctl 是 MySQL 实例组件的管理工具.用户通过 sdb_mysql_ctl 既可以初始化.启动和停止实例,也可以修改实例的引擎配置参数. 参数说明 参数 描述 ...

  4. mysql服务实例配置_MySQL多实例配置

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

  5. mysql 5.5.35 单机多实例配置详解_MySQL 5.5.35 单机多实例配置详解

    一.前言 二.概述 三.环境准备 四.安装MySQL 5.5.35 五.新建支持多实例的配置文件(我这里配置的是四个实例) 六.初始化多实例数据库 七.提供管理脚本 mysqld_multi.serv ...

  6. mysql 5.7 多实例_MySQL 5.7--------多实例部署最佳实战

    1. 背景 MySQL数据库的集中化运维,可以通过在一台服务器上,部署运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务.各个实例之间是相互独立的,每个实例的data ...

  7. php中mysql的增删_PHP MySql增删改查的简单实例

    mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 连接命令:mysql - ...

  8. mysql实例管理工具巨杉_使用_操作_MySQL实例_关系型数据库实例_文档中心_SequoiaDB巨杉数据库...

    使用 用户安装好 MySQL 实例组件后,可直接通过 MySQL Shell 使用标准的 SQL 语言访问 SequoiaDB 巨杉数据库. 连接MySQL实例与数据库分布式存储引擎 配置 Sequo ...

  9. 生产环境MySQL 5.5.x单机多实例配置实践

    背景需求: 1)在一台新采购的服务器上通过源码编译安装一个版本为5.5.x以上的MySQL数据库,并将所有配置文件与数据等均存放在/opt/mysql,以便于今后实现快速迁移.复制和整体备份: 2)在 ...

最新文章

  1. 陶瓷气体放电管型号大全
  2. html怎么给边框改样式,html里面怎么设置边框?html边框样式设置方法
  3. 判断链表是否相交并找出交点
  4. web服务器集群(多台web服务器)后session如何同步和共享
  5. python什么是入口文件_Python注释是什么东东
  6. Windows-DHCP
  7. icmp源代码 tcp/ip协议栈 c语言实现,ICMP处理《LwIP协议栈源码详解——TCP/IP协议的实现》...
  8. 第二章 ARM体系结构与指令集——ARM
  9. 量子化学计算机理,量子化学计算在反应机理确证中的应用
  10. Python拉勾网爬虫实现
  11. 《需求工程——软件建模与分析》阅读笔记03
  12. 杨永智:创业者需具备的六大基因 五大攻略(下)
  13. 计算机设计大赛数媒民族元素类,北京工业大学艺术设计学院
  14. java基础 面试题
  15. 进阶实验 2-3.1 海盗分赃(25 分)
  16. 视频剪辑使用的素材得怎么找?
  17. 从双倍数组中还原原数组
  18. 笔记:DataFrame数据的筛选和排序
  19. 网页动画师与技术开发,如何精准高效的协作完成动效。
  20. 2022年消费金融行业研究报告

热门文章

  1. macOS 13 指南:macOS 的下一个版本可能是“猛犸象”
  2. 单例模式-静态内部类Demo
  3. 【C++】栈中实例化对象与堆中实例化对象
  4. 【开发一个高效的西瓜爬虫】
  5. 三层架构:表示层-业务逻辑层-数据访问层2
  6. Office 自动编号
  7. 运维 之 堡垒机开发
  8. 凸包计算几何matlab,計算幾何-凸包算法 Python實現與Matlab動畫演示
  9. java路径中的斜杠和反斜杠_路径中 斜杠/和反斜杠\ 的区别
  10. bitmap实现背景透明