阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL数据库多实例介绍及安装

212次阅读
没有评论

共计 2706 个字符,预计需要花费 7 分钟才能阅读完成。

1.MySQL 多实例实质

在一台机器上开启多个不同的 MySQL 服务端口(3306,3307),运行多个 mysql 服务进程,这些服务进程通过不同的 socket 监听不同的服务端口来提供各自的服务;

多个实例共用一套 mysql 安装程序,配置文件可以用同一个(最好不同),启动程序可以用同一个(最好不同),数据文件是不同的;

服务器的硬件资源是公用的;

逻辑上多实例是各自独立的

2. 多实例的作用

有效利用服务器资源;#每台服务器的资源利用率要高

节约服务器资源;

但是多实例会存在资源互相抢占问题,当某个服务实例并发很高或者有慢查询时,会消耗整台服务器更多的内存、CPU 等,导致其他实例运行也慢

3. 多实例的应用场景

资金比较紧张的公司;

并发访问不是特别大的业务;

门户网站一般会采取:目的是配硬件好的服务器,节省 IDC 机柜空间,让硬件资源不浪费

4.mysql 多实例常见配置方案

1)通过多个配置文件及多个启动程序来实现多实例                 #生产中比较推荐此方法,本随笔中也将采取此方法

2)单一配置文件方案即一个配置文件里写多个实例的内容      #通过 mysqld_muti 参数实现,此方法耦合性太高,可参见 https://www.linuxidc.com/Linux/2016-09/135110.htm

5. 安装多实例数据库

# 生产硬件配置,32G MEM 8 CPU,硬盘 6 *600g  SAS 15k,跑 2 - 3 个实例

1)安装好 cmake 及 mysql 依赖的包

yum install ncurses-devel -y

yum install libaio-devel -y

2)创建 mysql 多实例数据文件目录      #此过程依赖于已经安装好 mysql 软件的单实例环境

采用 /data 目录作为 mysql 多实例总的数据文件根目录

pkill mysqld                                          #创建前需把创建好的 mysql 单实例杀掉

MySQL 数据库多实例介绍及安装

rm -f /etc/init.d/mysqld                          #删除单实例时的启动命令

MySQL 数据库多实例介绍及安装

mkdir -p /data/{3306,3307}/data

tree /data

MySQL 数据库多实例介绍及安装

chown -R mysql.mysql /data                 #授权 data 目录

3)创建 mysql 配置文件并配置环境变量

分别在 /data/3306 和 /data/3307 下创建 my.conf 文件 不像单实例放在 /etc/ 下        #my.cnf 中主要修改 port 和 server-id

MySQL 数据库多实例介绍及安装

echo ‘export PATH=/application/mysql/bin:$PATH’ >>/etc/profile                       #环境变量设置单实例已设置

4)初始化数据文件

初始化命令同单实例,只是更改数据路径:

在 /application/mysql/scripts 下执行./mysql_install_db –basedir=/application/mysql –defaults-file=/data/3306/my.cnf –datadir=/data/3306/data –user=mysql             #同理实现 3307 初始化

# 初始化的目的就是为了生成存放文件的地方,结果就是在 /data 下生成了一些系统化的文件

MySQL 数据库多实例介绍及安装

5)配置开机自启动脚本 & 启动多实例

cd /home/coco/tools/mysql-5.5.32

/bin/cp support-files/mysql.server /data/3306/mysql

/bin/cp support-files/mysql.server /data/3307/mysql                                   #启动脚本可参见 http://blog.51cto.com/oldboy/2124950

MySQL 数据库多实例介绍及安装

find /data/ -type f -name “mysql” | xargs chmod +x                             #给启动文件授权执行权限

find /data/ -type f -name “mysql” | xargs ls -l

MySQL 数据库多实例介绍及安装

启动数据库:

/data/3306/mysql start

/data/3307/mysql start

netstat -lntup|grep 330[6-7]

多实例启动文件的启动 mysql 服务实质                        #这里直接采用 mysqld_safe 启动多实例

mysqld_safe –defaults-file=/data/3306/my.cnf 2>&1 > /dev/null &

mysqld_safe –defaults-file=/data/3307/my.cnf 2>&1 > /dev/null &

MySQL 数据库多实例介绍及安装

6)登录多实例数据库

mysql -S /data/3306/mysql.sock             #多实例的登录一定要指定特定的 socket

mysqladmin -u root -S /data/3306/mysql.sock password ‘oldboy123’       #多实例为 root 增加密码

mysql -uroot -p’oldboy123′  -S /data/3306/mysql.sock                      #密码外侧的单引号可省略

# 为了确保账户安全,因此要将启动脚本改权限,只有 root 可以更改密码:

find /data -type f -name “mysql” -exec chmod 700 {} \.

find /data -type f -name “mysql” -exec chown root.root {} \.

find /data -type f -name “mysql” -exec  ls -l  {} \.

7)停止多实例数据库

多实例启动文件的停止 mysql 服务实质:

mysqladmin -u root -poldboy123 -S /data/3306/mysql.sock shutdown

mysqladmin -u root -poldboy123 -S /data/3307/mysql.sock shutdown

MySQL 数据库多实例介绍及安装

8)如果 mysql 服务没有起来,排查办法如下

8.1)若发现没有 mysql 的端口,等几秒再看,可能是会比较慢

8.2) 查看错误日志,该日志路径在 my.cnf 最下面可以看到

grep log-error my.cnf|tail -l

>>log-error=/data/3306/mysql_coco.err

8.3) 前面每行命令执行的返回结果是否有错误

8.4)查看系统的 /var/log/messages

#Linux 中可以用 vimdiff   file1  file2 来同时对比两个文件内容        % 附件为 3306 和 3307 两个实例的 my.cnf 对比

 MySQL 数据库多实例介绍及安装

MySQL 数据库多实例介绍及安装

MySQL 数据库多实例介绍及安装

 

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2706字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中