其实Mysql多实例就是在一个 mysql 服务上面启动三个实例,相当于三个分离开来的数据库,至于为什么要做这个,你也可以选择分别安装三个MySQL,只是过于麻烦,多实例中只需要一个配置档my.cnf,并且通过mysql_330x.sock 便于管理数据库。

其实MySQL多实例之后也可以做主从同步及读写分离,跟原来是一样的,只是同步的时候端口有变化而已~

下面我来做MySQL多实例的环境搭建,至于如何用,怎么用,那就看你需求了


安装简介

  • 用户名:mysql
  • 安装目录:/usr/local/mysql
  • 实例1数据目录 : /usr/local/mysql/data/dbdata_3306
  • 实例2数据目录 : /usr/local/mysql/data/dbdata_3307
  • 实例3数据目录 : /usr/local/mysql/data/dbdata_3308

安装前步骤

一、添加MySQL用户

groupadd mysql

useradd -g mysql -s /sbin/nologin mysql

二、yum安装依赖包

autoconf automake bc bind-utils bzip2 bzip2-devel curl curl-devel dmidecode e2fsprogs-devel expat expat-devel freetype* gcc gcc-c++ gettext gettext-devel glib2 glib2-devel glibc glibc-devel hdparm krb5-devel libaio libaio-devel libidn-devel libjpeg libpng libxml2 libxml2-devel lrzsz mlocate ncurses ncurses-devel net-snmp net-snmp-devel net-snmp-libs net-snmp-utils ntp openssh-clients openssl-devel pam-devel rsync rsyslog-relp screen smartmontools strace sysstat telnet vim* vixie-cron wget yum-fastestmirror zip zlib-devel

三、解包

tar zxf mysql-5.6.14.tar.gz -C /usr/src

cd /usr/src/mysql-5.6.14

四、创建数据目录

mkdir -p /usr/local/mysql/data

五、cmake配置

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGING=1 -DWITH_INNOBASE_STORAGE_ENGING=1 -DWITH_SSL=yes

六、编译及安装

make && make install

七、拷贝配置文件

cp support-files/my-default.cnf /usr/local/mysql/data/my.cnf

八、初始化数据库

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/dbdata_3306 --user=mysql
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/dbdata_3307 --user=mysql
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/dbdata_3308 --user=mysql

九、设置链接

ln -s /usr/local/mysql/bin/* /usr/local/bin/

ln -s /usr/local/mysql/include/mysql/* /usr/include/

ln -s /usr/local/mysql/lib/* /usr/lib/

rm -rf /etc/my.cnf

ln -s /usr/local/mysql/data/my.cnf /etc/

十、设置权限

chown -R mysql:mysql /usr/local/mysql/data/dbdata_3306

chown -R mysql:mysql /usr/local/mysql/data/dbdata_3307

chown -R mysql:mysql /usr/local/mysql/data/dbdata_3308

十一、修改my.cnf配置

#!/bin/bash

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root
password = yunjee0515ueopro1234 [mysqld1]
basedir = /usr/local/mysql

character-set-server = utf8

port = 3306

socket = /tmp/mysql_3306.sock

datadir = /usr/local/mysql/data/dbdata_3306

pid-file = /usr/local/mysql/data/dbdata_3306/mysql.pid

log-error = /usr/local/mysql/data/dbdata_3306/mysql.err

server-id = 1

skip-character-set-client-handshake #忽略应用程序想要设置的其他字符集

init-connect='SET NAMES utf8' #连接时执行的SQL

character-set-server=utf8 #服务端默认字符集

wait_timeout=1800 #请求的最大连接时间

interactive_timeout=1800 #和上一参数同时修改才会生效

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #sql模式

log-bin = mysql-bin #打开二进制功能,MASTER主服务器必须打开此项

relay-log = mysql-bin #文件名格式

relay-log-index = mysql-bin.index #index文件名

##MySQL 5.6.10版本提供了更方便的基于GTID的复制功能,MySQL可以通过GTID自动识别上次同步的点,极大地方便了运维人员,减少出错的几率。

binlog-format=ROW #binlog格式

log-slave-updates=true #表示如果一个MASTER挂掉的话,另外一个马上接管

gtid-mode=on #用于启动GTID及满足附属的其它需求

enforce-gtid-consistency=true #

#report-port=port #从属服务器的端口

#report-host=host #从属服务器的主机名

master-info-repository=TABLE #启用此两项,可用于实现在崩溃时保证二进制及从服务器安全的功能

relay-log-info-repository=TABLE #

sync-master-info=1 #启用之可确保无信息丢失

slave-parallel-workers=2 #设定从服务器的SQL线程数;0表示关闭多线程复制功能

binlog-checksum=CRC32 #

master-verify-checksum=1 #

slave-sql-verify-checksum=1 #启用复制有关的所有校验功能

binlog-rows-query-log_events=1 ###MySQL 5.6.10版本提供了更方便的基于GTID的复制功能,MySQL可以通过GTID自动识别上次同步的点,极大地方便了运维人员,减少出错的几率。

expire_logs_day=5 #超过5天的binlog删除

max_binlog_size=104857600

#replicate-ignore-db = mysql #忽略不同步主从的数据库

#replicate-ignore-db = information_schema

#replicate-ignore-db = performance_schema

#replicate-ignore-db = test

#replicate-ignore-db = zabbix

#replicate-ignore-db = sysbench

#replicate-ignore-db = db_3306

##slave-skip-errors=0 #主从忽略错误数

##注释掉,使用默认设置

#skip-external-locking

##innodb_force_recovery = 1

key_buffer_size = 256M
max_allowed_packet = 100M
#table_open_cache = 1024

#sort_buffer_size = 128M

#net_buffer_length = 8K

#read_buffer_size = 128M

#read_rnd_buffer_size = 256M

#myisam_sort_buffer_size = 32M

#character-set-server = utf8

skip-name-resolve

max_connections = 10000

##慢查询设置

slow-query-log=on

long_query_time = 2

#log-queries-not-using-indexes

##注释掉,使用默认设置

## For InnoDB

innodb_buffer_pool_size = 1G

#innodb_additional_mem_pool_size = 128M

## Set .._log_file_size to 25 % of buffer pool size

#innodb_log_file_size = 128M

#innodb_log_buffer_size = 8M

innodb_flush_log_at_trx_commit = 1

#innodb_lock_wait_timeout = 50

#innodb_file_per_table=1
[mysqld2]
basedir = /usr/local/mysql

character-set-server = utf8

port = 3307

socket = /tmp/mysql_3307.sock

datadir = /usr/local/mysql/data/dbdata_3307

pid-file = /usr/local/mysql/data/dbdata_3307/mysql.pid

log-error = /usr/local/mysql/data/dbdata_3307/mysql.err

server-id = 1

skip-character-set-client-handshake #忽略应用程序想要设置的其他字符集

init-connect='SET NAMES utf8' #连接时执行的SQL
character-set-server=utf8 #服务端默认字符集

wait_timeout=1800 #请求的最大连接时间

interactive_timeout=1800 #和上一参数同时修改才会生效

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #sql模式

log-bin = mysql-bin #打开二进制功能,MASTER主服务器必须打开此项

relay-log = mysql-bin #文件名格式

relay-log-index = mysql-bin.index #index文件名

#MySQL 5.6.10版本提供了更方便的基于GTID的复制功能,MySQL可以通过GTID自动识别上次同步的点,极大地方便了运维人员,减少出错的几率。

binlog-format=ROW #binlog格式

log-slave-updates=true #表示如果一个MASTER挂掉的话,另外一个马上接管

gtid-mode=on #用于启动GTID及满足附属的其它需求

enforce-gtid-consistency=true #

#report-port=port #从属服务器的端口

#report-host=host #从属服务器的主机名

master-info-repository=TABLE #启用此两项,可用于实现在崩溃时保证二进制及从服务器安全的功能

relay-log-info-repository=TABLE #

sync-master-info=1 #启用之可确保无信息丢失

slave-parallel-workers=2 #设定从服务器的SQL线程数;0表示关闭多线程复制功能

binlog-checksum=CRC32 #

master-verify-checksum=1 #

slave-sql-verify-checksum=1 #启用复制有关的所有校验功能

binlog-rows-query-log_events=1 ###MySQL 5.6.10版本提供了更方便的基于GTID的复制功能,MySQL可以通过GTID自动识别上次同步的点,极大地方便了运维人员,减少出错的几率。
expire_logs_day=5 #超过5天的binlog删除

max_binlog_size=104857600

#replicate-ignore-db = mysql #忽略不同步主从的数据库

#replicate-ignore-db = information_schema
#replicate-ignore-db = performance_schema

#replicate-ignore-db = test

#replicate-ignore-db = zabbix

#replicate-ignore-db = sysbench

#replicate-ignore-db = db_3307

##slave-skip-errors=0 #主从忽略错误数

##注释掉,使用默认设置

#skip-external-locking

##innodb_force_recovery = 1

key_buffer_size = 256M

max_allowed_packet = 100M

#table_open_cache = 1024

#sort_buffer_size = 128M

#net_buffer_length = 8K

#read_buffer_size = 128M

#read_rnd_buffer_size = 256M

#myisam_sort_buffer_size = 32M

#character-set-server = utf8

skip-name-resolve

max_connections = 10000

##慢查询设置

slow-query-log=on

long_query_time = 2

#log-queries-not-using-indexes

##注释掉,使用默认设置

## For InnoDB

innodb_buffer_pool_size = 1G

#innodb_additional_mem_pool_size = 128M

## Set .._log_file_size to 25 % of buffer pool size

#innodb_log_file_size = 128M

#innodb_log_buffer_size = 8M

innodb_flush_log_at_trx_commit = 1

#innodb_lock_wait_timeout = 50

#innodb_file_per_table=1
[mysqld3]
basedir = /usr/local/mysql

character-set-server = utf8

port = 3308

socket = /tmp/mysql_3308.sock

datadir = /usr/local/mysql/data/dbdata_3308

pid-file = /usr/local/mysql/data/dbdata_3308/mysql.pid

log-error = /usr/local/mysql/data/dbdata_3308/mysql.err

server-id = 1
skip-character-set-client-handshake #忽略应用程序想要设置的其他字符集

init-connect='SET NAMES utf8' #连接时执行的SQL

character-set-server=utf8 #服务端默认字符集

wait_timeout=1800 #请求的最大连接时间

interactive_timeout=1800 #和上一参数同时修改才会生效

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #sql模式

log-bin = mysql-bin #打开二进制功能,MASTER主服务器必须打开此项

relay-log = mysql-bin #文件名格式

relay-log-index = mysql-bin.index #index文件名

#MySQL 5.6.10版本提供了更方便的基于GTID的复制功能,MySQL可以通过GTID自动识别上次同步的点,极大地方便了运维人员,减少出错的几率。

binlog-format=ROW #binlog格式

log-slave-updates=true #表示如果一个MASTER挂掉的话,另外一个马上接管

gtid-mode=on #用于启动GTID及满足附属的其它需求

enforce-gtid-consistency=true #

#report-port=port #从属服务器的端口

#report-host=host #从属服务器的主机名

master-info-repository=TABLE #启用此两项,可用于实现在崩溃时保证二进制及从服务器安全的功能

relay-log-info-repository=TABLE #

sync-master-info=1 #启用之可确保无信息丢失

slave-parallel-workers=2 #设定从服务器的SQL线程数;0表示关闭多线程复制功能

binlog-checksum=CRC32 #

master-verify-checksum=1 #

slave-sql-verify-checksum=1 #启用复制有关的所有校验功能

binlog-rows-query-log_events=1 ###MySQL 5.6.10版本提供了更方便的基于GTID的复制功能,MySQL可以通过GTID自动识别上次同步的点,极大地方便了运维人员,减少出错的几率。
expire_logs_day=5 #超过5天的binlog删除

max_binlog_size=104857600

#replicate-ignore-db = mysql #忽略不同步主从的数据库

#replicate-ignore-db = information_schema

#replicate-ignore-db = performance_schema

#replicate-ignore-db = test

#replicate-ignore-db = zabbix

#replicate-ignore-db = sysbench

#replicate-ignore-db = db_3308

##slave-skip-errors=0 #主从忽略错误数

##注释掉,使用默认设置

#skip-external-locking

##innodb_force_recovery = 1

key_buffer_size = 256M

max_allowed_packet = 100M

#table_open_cache = 1024

#sort_buffer_size = 128M

#net_buffer_length = 8K

#read_buffer_size = 128M

#read_rnd_buffer_size = 256M

#myisam_sort_buffer_size = 32M

#character-set-server = utf8

skip-name-resolve

max_connections = 10000

##慢查询设置

slow-query-log=on

long_query_time = 2

#log-queries-not-using-indexes

##注释掉,使用默认设置

## For InnoDB

innodb_buffer_pool_size = 1G

#innodb_additional_mem_pool_size = 128M

## Set .._log_file_size to 25 % of buffer pool size

#innodb_log_file_size = 128M

#innodb_log_buffer_size = 8M

innodb_flush_log_at_trx_commit = 1

#innodb_lock_wait_timeout = 50

#innodb_file_per_table=1
[mysqldump]
quick
max_allowed_packet = 256M [mysql]
no-auto-rehash

prompt=\\u@\\d \\R:\\m>

# Remove the next comment character if you are not familiar with SQL

#safe-updates
[myisamchk]

key_buffer_size = 512M

sort_buffer_size = 512M

read_buffer = 8M

write_buffer = 8M
[mysqlhotcopy]

interactive-timeout


十二、启动所有实例


/usr/local/mysql/bin/mysqld_multi start 1


/usr/local/mysql/bin/mysqld_multi start 2


/usr/local/mysql/bin/mysqld_multi start 3


登录MySQL多实例

mysql -uroot -S /tmp/mysql_3306.sock


mysql -uroot -S /tmp/mysql_3307.sock


mysql -uroot -S /tmp/mysql_3308.sock


并且修改各自的密码为my.cnf配置档中[mysqld_multi]中指定的密码。


root@(none) 16:09>grant all privileges on *.* to root@'localhost' identified by 'password';
root@(none) 16:09>grant all privileges on *.* to root@'127.0.0.1' identified by 'password';
root@(none) 16:09>grant all privileges on *.* to root@'%' identified by 'password';

其实这里有一点问题,就是[mysqld_multi]中设置的账户,其实它是用来管理mysqld_multi(多实例进程的启动与关闭)的,如果这边的账户和当前库(实例中的所有库)的账户不匹配,则会发生一些奇怪的问题,例如你可以开启这个mysql多实例进程,但无法关闭,甚至是kill ${PID}之后它又会重新启动。

那么,以后就可以通过下面方式来连接MySQL了

mysql -uroot -ppassword -S /tmp/mysql_3306.sock
mysql -uroot -ppassword -S /tmp/mysql_3307.sock
mysql -uroot -ppassword -S /tmp/mysql_3308.sock

            <link rel="stylesheet" href="http://csdnimg.cn/release/phoenix/production/markdown_views-d4dade9c33.css">
</div>

mysql 多实例案例实战的更多相关文章

  1. Mariadb/MySQL多实例实战

    Mariadb/MySQL多实例实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装MySQL程序 无论你喜欢哪种方式安装均可,关于源码安装,yum安装或者二进制安装,可以 ...

  2. MySQL多实例-精典故障案例

    很久以前搭建过MySQL多实例,记得当时很顺利,呵呵!今天公司因为业务需要,我再一次搭建多实例.安装完MySQL后,初始化两个实例时,出现如下报错: 150915  1:10:36 [ERROR] C ...

  3. MySQL 5.7主从复制实战篇

    MySQL 5.7主从复制实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装MySQL数据库并启动 1>.在MySQL官方下载相应的安装包(https://dev ...

  4. Mysql单实例数据库安装

    第1章 MySQL数据库安装 在当今的大中型互联网企业里,MySQL数据库服务几乎都是运行在Linux系列操作系统上,当然,你在可以运行在Windows/Unix等商业操作系统上,大中型互联网企业使用 ...

  5. mysql多实例的配置和管理

    原文地址:mysql多实例的配置和管理 作者:飞鸿无痕 多实例mysql的安装和管理 mysql的多实例有两种方式可以实现,两种方式各有利弊.第一种是使用多个配置文件启动不同的进程来实现多实例,这种方 ...

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

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

  7. 《图解Spark:核心技术与案例实战》作者经验谈

    1,看您有维护博客,还利用业余时间著书,在技术输出.自我提升以及本职工作的时间利用上您有没有什么心得和大家分享?(也可以包含一些您写书的小故事.)回答:在工作之余能够写博客.著书主要对技术的坚持和热爱 ...

  8. Shell企业案例实战和企业面试题

    shell企业面试题 1.批量创建带有随机小写字符文件程序 使用for循环在/pizza目录下创建10个html文件,其中每个文件包含10个随机小写字母加固定字母_pizza 1.思路分析: 核心是: ...

  9. Mysql 多实例 +表损坏

    什么是实例? 进程+多个线程+预分配的内存结构 MySQL多实例: 多个进程+多个线程+多个预分配内存结构 多个配置文件: 1)多个端口 2)多个数据目录 3)多个socket文件 ./mysql_i ...

随机推荐

  1. Firefox访问https的网站,一直提示不安全

    http://mozilla.com.cn/thread-374897-1-1.html 要激活此功能步骤如下: 在地址栏键入"about:config" 点击“我了解此风险” 在 ...

  2. 开源3D游戏引擎Irrlicht简介

    Irrlicht简介 Irrlicht在国内也被叫做"鬼火"引擎,是一款用C++编写的开放源代码的高性能游戏引擎.而且是跨平台的,具有很好的移植性,Irrlicht支持OpenGl ...

  3. 如何更改AD域安全策略-密码必须符合复杂性要求

    通常我们在域系统-管理工具上面是找不到“域安全策略”的,我们只能找到“本地安全策略”,而更改“本地安全策略”是不会对域产生任何的作用的.下面这个步骤教你如何找到“域安全策略” 1.Start(开始)– ...

  4. Python正则表达式初识(八)

    继续分享Python正则表达式的基础知识,今天给大家分享的特殊字符是“\w”和“\W”,具体的教程如下. 1.“\w”代表的意思是该字符为任意字符,但是和特殊字符“.”的意思不同.“\w”代表的字符主 ...

  5. jq PC做滚动效果经常用到的各类参数【可视区判断】

    获取 浏览器显示区域 (可视区域)的高度 :  $(window).height();  获取浏览器显示区域(可视区域)的宽度 :  $(window).width();  获取页面的文档高度: $( ...

  6. 昼猫笔记 从此告别复杂代码--JavaScript

    昼猫笔记--给你带来不一样的笔记 不止是笔记 更多的是思考 大家好,我是一只来自喵星的前端初学者,由于我们喵星人科技较为落后,昼猫从今天开始带着使命来到地球学习前端知识. 从今天开始,猫猫我就从Jav ...

  7. 【Nginx从入门到实战】

    目录 1. 网站服务 2. 所谓Nginx 3. 安装Nginx 4. Nginx配置文件详述 5. 开始玩转Nginx Nginx虚拟主机 Nginx状态信息(status)配置 Nginx错误页面 ...

  8. 洛谷 P1994 有机物燃烧

    P1994 有机物燃烧 题目背景 本来准备弄难点的,还是算了吧 题目描述 输入一种有机物,输出与氧气反应化学方程式中CO2和H2O的系数 输入输出格式 输入格式: 一行,一个字符串,表示有机物 输出格 ...

  9. Lua刚開始学习的人(一)--Lua 简单教学

    近期因为工作原因.临时木有<Oracle起步学习>续集.领导知道学习下Lua脚本语言.看了一周了.趁热打铁,留下点实用的东西吧. 本系列会主要针对宿主语言为 Delphi,原理都是一样的, ...

  10. Android捕获View焦点事件,LinearLayout结合HorizontalScrollView实现ViewPgaer和选项卡Tabs联动

     <Android捕获View焦点事件,LinearLayout结合HorizontalScrollView实现ViewPgaer和选项卡Tabs联动.> 如图: package zh ...