linux mysql 实例详解_MySQL 多实例详解
目录
一、基本概念
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编译安装mysql
tar -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/
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/
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、启动MySQL
mysqld_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、关闭MySQL
mysqladmin -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.cnf
vim /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 = 16M
mysqld_safe --defaults-file=/data/3309/my.cnf 2&1> > /dev/null #启动mysqld
ss -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
原创文章,作者:艾贺,如若转载,请注明出处:http://www.178linux.com/8335
linux mysql 实例详解_MySQL 多实例详解相关推荐
- mysql多实例安装配置_MySQL多实例安装配置
MySQL进行多实例配置再生产环境中非常常见,比如一些高配置数据库服务器,就会跑多个MySQL实例,借助多实例绑定的方式提高服务器的整体资源利用率.另外在MySQL5.7以上版本还不支持多源复制时,当 ...
- mysql父子节点分层_mysql 递归实例 父子节点层级递归
在Oracle中可以使用CONNECT BY子句可以轻松的实现递归查询,在MSSQLServer和DB2中则可以使用WITH子句来实现递归查询,MYSQL中即不支持CONNECT BY子句也不支持 ...
- mysql as 后面字段_mysql 字段as详解及实例代码
mysql 字段使用as 在mysql中,select查询可以使用AS关键字为查询的字段起一个别名,该别名用作表达式的列名,并且别名可以在GROUP BY,ORDER BY或HAVING等语句中使用. ...
- mysql实例详解_MySQL 多实例详解
MySQL多实例配置方法 1.单一配置文件 2.多配置文件. 二.实战步骤: 1.同步时间 2.准备mysql依赖包 3.环境准备 3.1添加mysql用户 3.2编译安装mysql 4.安装MySQ ...
- 如何查看mysql备份的情况_MySQL数据库备份详解(示例代码)
原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据 ...
- mysql 外键详解_mysql外键详解
1.1.MySQL中"键"和"索引"的定义相同,所以外键和主键一样也是索引的一种.不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确 ...
- 备份mysql数据库攻略_mysql备份实例攻略
本文系统Centos6.0 首先普及下备份术语:热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 我们备份,一般备份以下几个部分: 1.数据文件 2.日志文件 ...
- mysql多实例配置安装_Mysql 多实例安装配置方法一
Mysql 多实例安装配置方法一 环境: 操作系统:ubutun 11.1 Mysql版本:mysql-5.5.19(二进制) 其他方法:mysqld_multi 以下步骤:在192.168.129. ...
- linux mysql 单机主从_MariaDB单机双实例主从复制
MariaDB其实和mysql一样,非有啥不一样那就是名字不一样~.~! 开始-上篇实验是MariaDB的单机多实例安装 双实例端口3307主库,3308从库 3307主实例的mysqld配置 [my ...
最新文章
- 《The Age of Surge》作者访谈
- MySQL—【加餐1】高效查询方法
- cmake跨平台编译之判断操作系统平台、32位64位系统
- 8分钟答辩稿_教资面试!各科试讲逐字稿!背就稳了!
- 程序人生001--点滴感悟-随笔01
- java自定义事件案例_Java Custom Exception Example(Java自定义异常案例)
- 一文教会你使用Markdown来制作一份简洁明了的求职简历
- 【浙大第19届校赛:B】Even Number Theory (数论n!中有多少个质因子2+java大数)
- Sql server中 如何用sql语句创建视图
- 【游戏开发创新】上班通勤时间太长,做一个任意门,告别地铁与塞车(Unity | 建模 | ShaderGraph | 摇杆 | 角色控制)
- 构建基于浏览器的Web P2P网络直播
- win10 android模拟器 菜单,Win10 Android模拟器教程
- 关于互联网流量劫持分析及可选的解决方案
- 关闭计算机启动程序,电脑开机启动项该怎么关闭?看我如何快速关闭启动项
- 区块链基于WebSocket 构建P2P网络
- 2010考研数学二第(16)题——极限:数列极限,夹逼准则,常考不等式,两问关联
- 智能风控行业发展浅见
- 求助: 哪位大神有《 计算机图形学基础[第2版][陆枫/何云峰 》电子教案
- 网站ico图片api
- 聊天机器人中对话模板的高效匹配方法