篇首语:本文由编程笔记#小编为大家整理,主要介绍了MySql多实例搭建相关的知识,希望对你有一定的参考价值。
mysql多实例
概述:在一台物理主机上运行多个数据库服务
作用:节约运维成本,提高硬件利用率
配置步骤说明
我们以mysql-5.7.20 为例
1– 安装支持多实例服务的软件包
1.1解压软件
[[email protected]~]# tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
1.2– 修改目录名
[[email protected] mysql-20]# mv mysql-5.7.20-linux-glibc2.12-x86_64/ /usr/local/mysql
1.3– 修改 PATH 变量
[[email protected] local]# vim /etc/profile
[[email protected] ~]# echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
[[email protected] local]# source /etc/profile
2– 修改主配置文件
[[email protected] local]# vim /etc/my.cnf
[mysqld_multi] // 启用多实例
mysqld = /usr/local/mysql/bin/mysqld_safe // 指定进程文件的路径
mysqladmin = /usr/local/mysql/bin/mysqladmin // 指定管理命令路径
user = root // 指定调用进程的用户
[mysqld1] // 实例进程名称 ,X 表示实例名称 , 如 [mysql1]
port=3307 // 端口号
datadir=/dataone // 数据库目录 ,要手动创建
socket=/dataone/mysqld.sock // 指定 sock 文件的路径和名称
log-error=/dataone/mysqld.log // 错误日志位置
pid-file=/dataone/mysqld.pid // 进程 pid 号文件位置
[mysqld2] // 实例进程名称 ,X 表示实例名称 , 如 [mysql1]
port=3308 // 端口号
datadir=/datatwo // 数据库目录 ,要手动创建
socket=/datatwo/mysqld.sock // 指定 sock 文件的路径和名称
log-error=/datatwo/mysqld.log // 错误日志位置
pid-file=/datatwo/mysqld.pid // 错误日志位置
– 根据配置文件做相应设置
[email protected] ~]# mkdir -p /dataone
[[email protected] ~]# mkdir -p /datatwo
[[email protected] ~]# useradd mysql
c[[email protected] ~]# chown mysql:mysql /data*
*为了安全可以更改文件权限
chown mysql:mysql /data*
– 初始化授权库
[[email protected] bin]# ./mysqld --user=mysql --basedir= 软件安装目录 --datadir= 数据库目录 – initialize // 初始化授权库
]#mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/dataone --initialize
]#mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/datatwo --initialize
– 启动服务
[[email protected] ~]# mysqld_multi start实例编号 //启动实例进程
– 客户端访问
[root[email protected]~]# mysqld_multi start 1
[[email protected] ~]# mysqld_multi start 2
[email protected] ~]# netstat -utnlp | grep :3308
tcp6 0 0 :::3308 :::* LISTEN 1156/mysqld
[[email protected] ~]# netstat -utnlp | grep :3307
tcp6 0 0 :::3307 :::* LISTEN 927/mysqld
[[email protected] ~]#
[[email protected] bin]# ./mysqld_multi --user=root --password=
密码 stop 实例编号 // 停止实例进程
6 访问多实例服务
连接实例服务1
[[email protected] ~]#mysql -uroot -p‘bXk.5j!pjto#‘ -S /dataone/mysqld.sock
mysql> ALTER USER user() identified by "123456";
mysql> quit;
]# mysql -uroot -p123456 -S /dataone/mysqld.sock
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql>
连接实例服务2
[[email protected] ~]#mysql -uroot -p‘bKsaf+xzk0V3‘ -S /datatwo/mysqld.sock
mysql> alter user user() identified by "123456";
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> quit
Bye
[[email protected] ~]# mysql -uroot -p123456 -S /datatwo/mysqld.sock
停止启动的实例服务
]# mysqld_multi --user=root --password=密码 stop 实例编号
[[email protected]~]# netstat -utnlp | grep :3307
tcp6 0 0 :::3307 :::* LISTEN 927/mysqld
[[email protected] ~]#
[[email protected] ~]#
[[email protected]~]# netstat -utnlp | grep :3308
tcp6 0 0 :::3308 :::* LISTEN 1156/mysqld
[[email protected] ~]# mysqld_multi --user=root --password=123456 stop 1
[[email protected] ~]# netstat -utnlp | grep :3307
[[email protected] ~]# netstat -utnlp | grep :3308
tcp6 0 0 :::3308 :::* LISTEN 1156/mysqld
[[email protected] ~]#
[[email protected] ~]#
[[email protected]~]#
[[email protected] ~]# mysqld_multi --user=root --password=123456 stop 2
[[email protected]~]# netstat -utnlp | grep :3308
[[email protected]~]# mysql -uroot -p123456 -S /datatwo/mysqld.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/datatwo/mysqld.sock‘ (2)