第三篇:mysql多实例

一、mysql的多实例

mysql多实例:同一个软件启动多次,就是多个进程,每个进程监听的端口不同
1.不同的数据目录
2.不同的端口
3.不同的socket文件
4.不同的日志文件
MySQL数据库多种安装方式
数据库官网下载地址 https://downloads.mysql.com/arc

一 linux系统

1.1二进制安装(自定义安装目录)

1)下载二进制包

[root@db01 ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
“wget: 无法解析主机地址”的解决方法
解决方法:
修改DNS的名字为如下
[root@db01 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.8.4

设置IP如下:

[root@db01 network-scripts]# cat ifcfg-eth0 
DEVICE=eth0
HWADDR=00:0C:29:FD:0D:F7
TYPE=Ethernet
UUID=eaac7e98-3bac-4059-a3cb-fbd9853ad8ca
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.91.106
NeTMASK=255.255.255.0
GATEWAY=192.168.91.2
DNS1=8.8.8.8

2)安装依赖

[root@db01 ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf
https://blog.csdn.net/chmod_R_755/article/details/114388654
https://vault.centos.org/ 注意镜像文件的下载

3)解压安装包

[root@db01 ~]# tar xf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz

4)创建自定义目录

[root@db01 ~]# mkdir /service

5)移动目录并改名

[root@db01 ~]# mv mysql-5.6.46-linux-glibc2.12-x86_64 /service/mysql-5.6.46

6)做软连接

[root@db01 ~]# ln -s /service/mysql-5.6.46 /service/mysql

7)创建数据库用户

[root@db01 ~]# useradd mysql -s /sbin/nologin -M  #-M 表示不创建主目录 -s 表示不允许登录

8)配置环境变量

配置环境变量直接使用mysql
[root@db01 ~]# vim /etc/profile
export PATH=/service/mysql/bin:$PATH
[root@db01 ~]# source /etc/profile

9)创建多个数据目录

[root@db01 ~]# mkdir /data/{3307,3308,3309} -p

10)准备多个配置文件

[root@db01 data]# vim /data/3307/my.cnf
[mysqld]
basedir=/service/mysql
datadir=/data/3307/data
port=3307
socket=/data/3307/mysql.sock
log-error=/data/3307/data/mysql.err
log-bin=/data/3307/data/mysql-bin
server_id=7

-------------------------------------------
 
[root@db01 data]# vim /data/3308/my.cnf
[mysqld]
basedir=/service/mysql
datadir=/data/3308/data
port=3308
socket=/data/3308/mysql.sock
log-error=/data/3308/data/mysql.err
log-bin=/data/3308/data/mysql-bin
server_id=8

--------------------------------------------

[root@db01 data]# vim /data/3309/my.cnf 
[mysqld]
basedir=/service/mysql
datadir=/data/3309/data
port=3309
socket=/data/3309/mysql.sock
log-error=/data/3309/data/mysql.err
log-bin=/data/3309/data/mysql-bin
server_id=9

11)初始化多套数据目录

[root@db01 scripts]# ./mysql_install_db --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/service/mysql --datadir=/data/3307/data
 
[root@db01 scripts]# ./mysql_install_db --defaults-file=/data/3308/my.cnf --user=mysql --basedir=/service/mysql --datadir=/data/3308/data

[root@db01 scripts]# ./mysql_install_db --defaults-file=/data/3309/my.cnf --user=mysql --basedir=/service/mysql --datadir=/data/3309/data

#使用tree可以查看
[root@db01 scripts]# tree -L 3 /data

12)授权目录

[root@db01 scripts]# chown -R mysql.mysql /data

13)启动数据库

[root@db01 scripts]# mysqld_safe --defaults-file=/data/3307/my.cnf &
[root@db01 scripts]# mysqld_safe --defaults-file=/data/3308/my.cnf &
[root@db01 scripts]# mysqld_safe --defaults-file=/data/3309/my.cnf &

14)检查启动

[root@db01 scripts]# netstat -lntup|grep 330
tcp6       0      0 :::3307                 :::*                    LISTEN      25550/mysqld        
tcp6       0      0 :::3308                 :::*                    LISTEN      25722/mysqld        
tcp6       0      0 :::3309                 :::*                    LISTEN      25894/mysqld     

15)多实例设置密码

[root@db01 scripts]# mysqladmin -uroot -S /data/3307/mysql.sock password '3307'
[root@db01 scripts]# mysqladmin -uroot -S /data/3308/mysql.sock password '3308'
[root@db01 scripts]# mysqladmin -uroot -S /data/3309/mysql.sock password '3309'

16)多实例验证

[root@db01 scripts]# mysql -uroot -p3307 -S /data/3307/mysql.sock -e "show variables like 'server_id';"
Warning: Using a password on the command line interface can be insecure.
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 7     |
+---------------+-------+
 
[root@db01 scripts]# mysql -uroot -p3308 -S /data/3308/mysql.sock -e "show variables like 'server_id';"
Warning: Using a password on the command line interface can be insecure.
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 8     |
+---------------+-------+
 
[root@db01 scripts]# mysql -uroot -p3309 -S /data/3309/mysql.sock -e "show variables like 'server_id';"
Warning: Using a password on the command line interface can be insecure.
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 9     |
+---------------+-------+

17)连接多实例小技巧

[root@db01 scripts]# vim /usr/bin/mysql3309
mysql -uroot -p3309 -S /data/3309/mysql.sock
[root@db01 scripts]# vim /usr/bin/mysql3308
mysql -uroot -p3308 -S /data/3308/mysql.sock
[root@db01 scripts]# vim /usr/bin/mysql3307
mysql -uroot -p3307 -S /data/3307/mysql.sock
 
[root@db01 scripts]# chmod +x /usr/bin/mysql*

18)多实例停止数据库

多实列停止数据库 
[root@db01 bin]# netstat -lntup |grep 330
tcp        0      0 :::3307                     :::*                        LISTEN      5708/mysqld         
tcp        0      0 :::3308                     :::*                        LISTEN      5881/mysqld         
tcp        0      0 :::3309                     :::*                        LISTEN      6053/mysqld         
[root@db01 bin]# mysqladmin -uroot -p3307 -S /data/3307/mysql.sock shutdown   #停止3307 
Warning: Using a password on the command line interface can be insecure.
210907 13:13:37 mysqld_safe mysqld from pid file /data/3307/data/db01.pid ended
[1]   Done                    mysqld_safe --defaults-file=/data/3307/my.cnf  (wd: /service/mysql/scripts)
(wd now: /service/mysql/bin)
[root@db01 bin]# netstat -lntup |grep 330
tcp        0      0 :::3308                     :::*                        LISTEN      5881/mysqld         
tcp        0      0 :::3309                     :::*                        LISTEN      6053/mysqld         
[root@db01 bin]# 

 

 

 

 

 

 
 
 
posted @ 2021-09-12 17:21  奋斗的小孩_小小鸟  阅读(80)  评论(0)    收藏  举报