其实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. Android LruCache 压缩图片 有效避免程序OOM

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9316683 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工, ...

  2. vsphere平台windows虚拟机克隆的小插曲(无法登陆系统)

    问题: 1.克隆完windows虚拟化后输入法乱码. 2.开启远程的情况下远程登录输入正确的密码也无法登录. 解决: 1.更改管理员用户密码(不输入原win7密码更改win7密码). 2.重新启用管理 ...

  3. pip-window安装

    windows 安装: 保证计算机联网直接使用cmd 执行 python -m pip install -U pip 自动安装 找到 python安装的路径 C:\Users\Administrato ...

  4. XTUOJ 1206 Dormitory's Elevator

    Dormitory's Elevator Time Limit : 1000 MS   Memory Limit : 65536 KB Problem Description The new dorm ...

  5. Safe and efficient allocation of memory

    Aspects of the present invention are directed at centrally managing the allocation of memory to exec ...

  6. ios—项目开发需求文档

    电子商务产品项目需求方案 模块 标准 接入方式 后台(大致需求说明) 前端 购 实物 多商户接入,可支付商品: 基础功能 功能说明 所有须要 Lbs .城市选择,分享.商区.搜索.返回.关闭 LBS: ...

  7. oracle 数据库批处理文件

    文件夹结构 初始化脚本 |----orcl_sql |----init_user.sql |----tab_home.sql |----TAB_USER.sql |----init.bat init. ...

  8. Python print 语句(Python 2 与 Python 3)

    1. python 3.x 中的 print print 在 Python 3.x 的环境里是内置函数(built-in function): python 3 的 print 语句支持(python ...

  9. 【IOS学习】1.第一个IOS程序

    1.执行原理 a.首先执行main函数 调用UIApplicationMain方法 return UIApplicationMain(argc, argv, nil, NSStringFromClas ...

  10. Kinect 开发 —— 开发前的准备工作

    Kinect SDK v1.5 支持托管语言和非托管语言 Xbox360的游戏是基于Xbox360开发工具包 (XDK)开发的,Xbox 360和Windows是两个完全不同的系统架构.使用Kinec ...