安装MySQL多实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29479041/article/details/82559537

1.多实例介绍

1.1什么是MySQL多实例

MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务

1.2MySQL多实例的特点有以下几点

1.有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。 

2.节约服务器资源

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

1.3多实例生产应用场景

3.3多实例部署方案

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

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

3.4安装多实例

  • 同一开发环境下安装两个数据库,必须处理以下问题
  • 1.配置文件安装路径不能相同
  • 2.数据库目录不能相同
  • 3.启动脚本不能同名
  • 4.端口不能相同
  • 5.socket文件的生成路径不能相同
1.先清除单实例的MySQL(为了避免冲突)
killall mysqld
[root@localhost zwj]# pkill mysqld
[root@localhost zwj]# rm -f /etc/init.d/mysqld
2.关闭防火墙
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
查看已启动的服务列表:systemctl list-unit-files|grep enabled 
3.关闭selinux
vi /etc/sysconfig/selinux  
将SELINUX修改为DISABLED,即SELINUX=DISABLED 
4.创建mysql用户
groupadd -g 27 mysql
useradd -u 27 -g mysql mysql
id mysql
uid=501(mysql) gid=501(mysql) groups=501(mysql)
5.创建相关目录
mkdir -p /data/3306/data
mkdir -p /data/3307/data
mkdir -p /data/3306/log
mkdir -p /data/3307/log
mkdir -p /data/3306/tmp
mkdir -p /data/3307/tmp
6.更改目录权限
chown -R mysql:mysql /data/
chown -R mysql:mysql /usr/local/mysql/
7. 添加环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' >>  /etc/profile 
source /etc/profile  
8.复制my.cnf文件到etc目录
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
9.修改/etc/my.cnf
[client]  
port=3306  
socket=/tmp/mysql.sock  
 
[mysqld_multi]  
mysqld = /usr/local/mysql /bin/mysqld_safe  
mysqladmin = /usr/local/mysql /bin/mysqladmin  
log = /data/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/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/3306/log/slow.log  
log-error = /data/3306/log/error.log  
binlog_format = mixed  
log-bin = /data/3306/log/mysql3306_bin  
   
[mysqld3307]  
mysqld=mysqld  
mysqladmin=mysqladmin  
datadir=/data/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/3307/log/slow.log  
log-error = /data/3307/log/error.log  
binlog_format = mixed  
log-bin = /data/3307/log/mysql3307_bin


10. 初始化数据库 
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3306/data --defaults-file=/etc/my.cnf  
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3307/data --defaults-file=/etc/my.cnf 
11.设置启动文件
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
12.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 
查看单个实例状态:/usr/local/mysql/bin/mysqld_multi report 3306 
13.查看启动进程  
netstat -tlnap |grep mysql
14.修改密码
mysql的root用户初始密码是空,所以需要登录mysql进行修改密码,下面以3306为例: 
mysql -S /tmp/mysql_3306.sock   
set password for root@'localhost'=password('123456'); 
flush privileges; 
下次登录:
[root@mysql ~]# mysql -S /tmp/mysql_3306.sock -p
Enter password:
15.新建用户及授权
一般新建数据库都需要新增一个用户,用于程序连接,这类用户只需要insert、update、delete、select权限。
新增一个用户,并授权如下: 
grant select,delete,update,insert on *.* to admin@'172.16.440.159' identified by 'xxx'; 
flush privileges
16.远程连接授权
use mysql;
update user set host = '%' where user = 'root';
select host, user from user;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.440.159' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
FLUSH   PRIVILEGES;
17.远程登录
mysql -uadmin -pxxx -h 172.16.440.159  -P 3306
mysql -uadmin -pxxx -h 172.16.440.159  -P 3307
mysql -uadmin -pxxx -h 172.16.440.159  -P 3308
 
18.注意:zwj 不在 sudoers 文件中。此事将被报告。
解决方法:
在/etc/sudoers 文件中加上一行 
zwj    ALL=(ALL)       ALL
[zwj@localhost ~]$ su
密码:[root@localhost zwj]# chmod a+w /etc/sudoers
[root@localhost zwj]# vi /etc/sudoers
[root@localhost zwj]# exit
exit
[zwj@localhost ~]$ sudo -s
sudo: /etc/sudoers 可被任何人写
sudo: 没有找到有效的 sudoers 资源,退出
sudo: 无法初始化策略插件
[zwj@localhost ~]$ pkexec chmod 0440 /etc/sudoers
[zwj@localhost ~]$ sudo -s
[sudo] zwj 的密码:
[root@localhost zwj]#

猜你喜欢

转载自blog.csdn.net/qq_29479041/article/details/82559537