mysql多实例安装centos_CentOS下mysql多实例操作指南

Mysql工作中无处不在,无数次安装,优化,一直没有时间,整理进行归档,最近在做mysql的Dass服务,把最近遇到的问题,进行整理,梳理一份操作指南;供大家参考;

序言

Mysql多实例即一台服务器上运行多个Mysql服务进程 ,开启不同的服务端口,通过不同的socket 监听不同的服务端口来提供各自的服务。

Mysql多例的好处:

1、 有效利用服务器资源:通过多实例地配置,可以将服务器剩余的资源充分利用起来。

2、 资源互相抢占问题:资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降。

3、 节约资源。

部署多实例的两种方式

使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便;

通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理;

同一开发环境下安装两个数据库,必须处理以下问题

配置文件安装路径不能相同

数据库目录不能相同

启动脚本不能同名

端口不能相同

mysql的安装方法有多种,如二进制安装、源码编译安装、yum安装;

yum安装都是默认路径,不利于后期维护,安装相对简单;

源码安装编译的过程比较长,若没有对源码进行修改且要求使用mysql较高版本;

建议使用二进制安装。本文以二进制安装mysql,且使用mysqld_mutil进行mysql多实例管理。

环境准备

下载mysql

cd /usr/local

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz

解压安装

tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz /usr/local/mysql

初始化用户组及用户

创建一个mysql用户组及用户,且这个用户是不可登录的

创建用户组:groupadd mysql

创建不可登录用户:useradd -g mysql -s /sbin/nologin -d /opt/mysql mysql

查看下创建后的用户信息:id msyql

id mysql

uid=501(mysql) gid=501(mysql) groups=501(mysql)

创建相关目录

cd /

mkdir /data

cd /data

mkdir mysql

cd mysql

mkdir {mysql_3306,mysql_3307}

cd /data/mysql/mysql_3306

mkdir {data,log,tmp}

cd /data/mysql/mysql_3307

mkdir {data,log,tmp}

更改目录权限

chown -R mysql:mysql /data/mysql/

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

添加环境变量

echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile

source /etc/profile

3b2635d28884cea498e551f713f024aa.png

检查是否配置

cat /etc/profile

复制my.cnf文件到etc目录(mysql 5.722没有my-default.cnf ,需要自动手动创建或者之前的地方进行copy)

自己创建

vim /etc/my.cnf

修改my.cnf

将以下内容,全部替换 /etc/my.cnf中的内容(以下配置,已集成mysql主从配置)

[client]

port=3306

socket=/tmp/mysql.sock

[mysqld_multi]

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

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

log = /data/mysql/mysqld_multi.log

[mysqld]

user=mysql

basedir = /usr/local/mysql

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld3306]

mysqld=mysqld

mysqladmin=mysqladmin

datadir=/data/mysql/mysql_3306/data

port=3306

server_id=3306

socket=/tmp/mysql_3306.sock

log-output=file

slow_query_log = 1

long_query_time = 1

slow_query_log_file = /data/mysql/mysql_3306/log/slow.log

log-error = /data/mysql/mysql_3306/log/error.log

log-bin = /data/mysql/mysql_3306/log/mysql3306_bin

binlog-ignore-db = mysql

[mysqld3307]

mysqld=mysqld

mysqladmin=mysqladmin

datadir=/data/mysql/mysql_3307/data

port=3307

server_id=3307

socket=/tmp/mysql_3307.sock

log-output=file

slow_query_log = 1

long_query_time = 1

slow_query_log_file = /data/mysql/mysql_3307/log/slow.log

log-error = /data/mysql/mysql_3307/log/error.log

log-bin = /data/mysql/mysql_3307/log/mysql3307_bin

replicate-ignore-db=mysql

relay-log = slave-relay-bin

relay-log-index = slave-relay-bin.index

read_only

初始化数据库

初始化各个实例:初始化完后会在日志中生成密码,记得保存,初始化密码用到

cd /usr/local/mysql/

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3306/data/

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3307/data/

##开启各实例的SSL连接

bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3306/data/

bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3307/data/

PS:

--basedir:mysql的安装目录

--datadir:数据库的数据文件目录

查看数据库是否初始化成功

cd /data/mysql/mysql_3306/data

8daafa1e3055f93561b2fee1be91a4c0.png

设置启动文件

cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi

给予脚本可执行权限

chmod +x /etc/init.d/mysqld_multi

加入service服务管理

chkconfig --add mysqld_multi

mysqld_multi进行多实例管理

启动全部实例:

/usr/local/mysql/bin/mysqld_multi start

查看全部实例状态:

/usr/local/mysql/bin/mysqld_multi report

启动单个实例:

/usr/local/mysql/bin/mysqld_multi start 3306

停止单个实例:

/usr/local/mysql/bin/mysqld_multi stop 3306

停止

mysqld_multi stop 3306 --password=root

#or 最好用这个

mysqladmin -S /tmp/mysql_3306.sock -uroot -p shutdown

查看单个实例状态:

/usr/local/mysql/bin/mysqld_multi report 3306

查看实例的监听端口:

ss -tulpn|grep mysqld

82d88d8df9d7b2aa3cca364f91cc79ad.png

修改密码

mysql -S /tmp/mysql_3306.sock -p

输入之前记录的密码,进入进行密码设置

set password=password('123456');

使修改生效;或者重启服务

flush privileges;

07be3ad4671342817fc85fc2961e6817.png

应用路径:/data/web/wordpress

nginx 配置:/usr/local/openresty/nginx/conf/site-enable/help.conf

3307的就不写了,你按照以上方法,进行操作;

设置远程连接mysql:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

FLUSH PRIVILEGES;

其中,root 是用户名,% 表示所有人都可以访问,password是密码,尽量不用使用root,安全很重要

如果你看到当前位置,你已经成功了,致敬在路上学习的小伙伴伴,与你一起知识总结;

如果感觉还不错,就分享出去,后续给大家介绍,mysql主从操作构建;

mysql的经典工作操作指南;

Percona Toolkit

percona-xtrabackup

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值