linux下安装多实例mysql

https://blog.51cto.com/13799042/2126621

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

序言

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

Mysql多例的好处:

1、 有效利用服务器资源:通过多实例地配置,可以将服务器剩余的资源充分利用起来。
  2、 资源互相抢占问题:资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降。
  3、 节约资源。

部署多实例的两种方式

使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便;
通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理;
同一开发环境下安装两个数据库,必须处理以下问题

配置文件安装路径不能相同
数据库目录不能相同
启动脚本不能同名
端口不能相同
socket文件的生成路径不能相同
Mysql多实例操作指南
具体详细参考官网 (https://dev.mysql.com/doc/refman/5.7/en/installing.html)

mysql的安装方法有多种,如二进制安装、源码编译安装、yum安装;
yum安装都是默认路径,不利于后期维护,安装相对简单;
源码安装编译的过程比较长,若没有对源码进行修改且要求使用mysql较高版本;
建议使用二进制安装。本文以二进制安装mysql,且使用mysqld_mutil进行mysql多实例管理。
环境准备
centos7 x64 参考地址:https://dev.mysql.com/downloads/mysql/
mysql 5.7.22(压缩版)

下载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
CentOS下mysql多实例操作指南

检查是否配置
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
CentOS下mysql多实例操作指南

设置启动文件
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
CentOS下mysql多实例操作指南

修改密码
mysql -S /tmp/mysql_3306.sock -p
输入之前记录的密码,进入进行密码设置
set password=password(‘123456’);
使修改生效;或者重启服务
flush privileges;
CentOS下mysql多实例操作指南

应用路径:/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
https://www.percona.com/downloads/percona-toolkit/LATEST/

percona-xtrabackup
https://www.percona.com/doc/percona-xtrabackup/2.1/xtrabackup_bin/incremental_backups.html#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统下,可以通过多个实例来运行多个MySQL服务器,每个实例可以拥有独立的配置文件、数据目录和日志文件等。这样可以方便地管理多个不同MySQL实例,提高系统的可靠性和稳定性。下面简单介绍一下在LinuxMySQL实例安装的过程。 1. 安装MySQL 首先需要安装MySQL,可以通过命令行或者图形界面安装。以Ubuntu系统为例,可以使用以下命令安装: ``` sudo apt-get update sudo apt-get install mysql-server ``` 2. 创建新的MySQL实例目录 在Linux系统下,每个MySQL实例需要有独立的数据目录和日志文件等。可以使用以下命令创建一个新的MySQL实例目录: ``` sudo mkdir /var/lib/mysql2 ``` 3. 复制MySQL配置文件 每个MySQL实例需要有独立的配置文件,可以通过复制默认配置文件来创建新的配置文件。以Ubuntu系统为例,可以使用以下命令复制默认配置文件: ``` sudo cp /etc/mysql/my.cnf /etc/mysql/my2.cnf ``` 4. 修改新的配置文件 修改新的配置文件,使其指向新的数据目录和日志文件等。以Ubuntu系统为例,可以使用以下命令编辑新的配置文件: ``` sudo vi /etc/mysql/my2.cnf ``` 在文件中修改以下内容: ``` [client] port = 3307 socket = /var/run/mysqld/mysqld2.sock [mysqld_safe] pid-file = /var/run/mysqld/mysqld2.pid socket = /var/run/mysqld/mysqld2.sock [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld2.pid socket = /var/run/mysqld/mysqld2.sock port = 3307 basedir = /usr datadir = /var/lib/mysql2 tmpdir = /tmp log_error = /var/log/mysql/error2.log ``` 其中,需要修改的内容主要是端口号、数据目录、日志文件等。 5. 初始化新的MySQL实例 使用以下命令初始化新的MySQL实例: ``` sudo mysqld --defaults-file=/etc/mysql/my2.cnf --initialize-insecure --user=mysql ``` 其中,--defaults-file参数指定使用新的配置文件,--initialize-insecure参数表示不设置root密码,--user参数表示启动MySQL程的用户。 6. 启动新的MySQL实例 使用以下命令启动新的MySQL实例: ``` sudo systemctl start mysql@2.service ``` 其中,2表示新的MySQL实例的编号。 至此,多实例MySQL服务器已经成功安装。可以通过以下命令查看多个MySQL实例的状态: ``` sudo systemctl status mysql@*.service ``` 其中,*表示所有的MySQL实例

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值