腾讯云ubuntu服务器配置MySQL单机多实例记录(使用mysqld_multi)

原创内容,转载请注明处出处


〇、前言

本例使用了mysql-server-5.7.26版本,并同时使用了MySQL自带的 mysqld_multi 来配置和管理多实例

由于分布式计算课程的作业需要多个数据库,手头正好有一个腾讯云服务器,正好拿来试验,服务器系统是ubuntu server 16.04
如何购买或者远程登陆你的服务器此处不赘述。
若想了解同款服务器可从我的推广链接进入【精选秒杀】热卖云产品限量抢,云服务器20元/月起,服务稳定,价格更优
腾讯云ubuntu服务器配置MySQL单机多实例记录(使用mysqld_multi)


一、安装MySQL

在终端命令行输入:

sudo apt-get install mysql-server mysql-common

由于我自己在这之前用过mysql的二进制压缩包进行了手动安装MySQL 8.0,可能导致了出错信息如下:

grep: /etc/mysql/: No such file or directory
Unpacking mysql-server-5.7 (5.7.26-0ubuntu0.16.04.1) ...
Selecting previously unselected package mysql-server.
Preparing to unpack .../mysql-server_5.7.26-0ubuntu0.16.04.1_all.deb ...
Unpacking mysql-server (5.7.26-0ubuntu0.16.04.1) ...
Processing triggers for systemd (229-4ubuntu21.2) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up apparmor (2.10.95-0ubuntu2.10) ...
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Setting up mysql-server-5.7 (5.7.26-0ubuntu0.16.04.1) ...
update-alternatives: error: alternative path /etc/mysql/mysql.cnf doesn't exist
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 2
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

解决方法是删除关于MySQL的内容(实际上这个说法不准确),并且重新安装mysql-server

sudo apt-get remove apparmor
sudo apt-get remove --purge mysql-\*
sudo apt-get install mysql-server mysql-common

期间会有提示需要重置root用户的密码,自己输入即可

最后出现了如图的结果:
腾讯云ubuntu服务器配置MySQL单机多实例记录(使用mysqld_multi)

二、使用MySQL命令行

在终端输入:

mysql -u root -p	# 以root身份启动

输入安装MySQL时设置的 root 的密码,出现如图即表示启动成功:
腾讯云ubuntu服务器配置MySQL单机多实例记录(使用mysqld_multi)
输入 quit 先退出MySQL的终端,然后终端输入:

cd /etc/mysql/mysql.conf.d && ls # 进入MySQL的默认配置文件所在目录
# 在输入下方语句之前你可以先输入:cat ./mysqld.cnf 来查看该文件的内容
sudo vim ./mysqld.cnf # 编辑默认配置文件

Vim的用法另行百度吧

我在原先的内容基础上,添加了如***意:此处/home/ubuntu/不可用 ~/ 代替,但是datadir、socket、pid-file、log-error等你完全可以自己指定别的位置,端口port同样也是可以自定义

#自定义配置
[mysqld1]
user					=mysql
performance_schema		=off
skip-name-resolve 		=0
datadir					=/home/ubuntu/mysql/data/10001/data/	# 多实例必须不同
socket					=/home/ubuntu/mysql/data/10001/shanghai.sock	# 多实例必须不同
pid-file       			=/home/ubuntu/mysql/data/10001/shanghai.pid	# 多实例必须不同
server-id				=10001	# 多实例必须不同
port					=10001	# 多实例必须不同
bind_address 			=0.0.0.0
log-error				=/home/ubuntu/mysql/data/10001/log/shanghai.log# 多实例必须不同

[mysqld2]
user					=mysql
performance_schema     	=off
skip-name-resolve       =0
datadir					=/home/ubuntu/mysql/data/10002/data/
socket					=/home/ubuntu/mysql/data/10002/beijing.sock
pid-file        		=/home/ubuntu/mysql/data/10002/beijing.pid
server-id       		=10002
port					=10002
bind_address    		=0.0.0.0
log-error				=/home/ubuntu/mysql/data/10002/log/beijing.log

改好配置文件之后,需要初始化(这里只列举一个实例的例子,其它是同理的):

此处先初始化其中一个,basedir参考了文件中默认的用的是/usr

此处命令二选一,我选了第一个,而第二个是密码的

sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/home/ubuntu/mysql/data/10001/data
sudo mysqld --initialize-insecure --user=mysql --basedir=/usr --datadir=/home/ubuntu/mysql/data/10001/data

得到如下,记一下所生成的密码:

腾讯云ubuntu服务器配置MySQL单机多实例记录(使用mysqld_multi)
使用mysqld_multi report命令可以查看当前实例状态,但是如果不用==–defaults-file=/etc/mysql/mysql.conf.d/mysqld.cnf==来指定配置文件的话,只能看到下方这样的结果,目前我并未了解其中的原因,若有人知道可以在评论告诉我~~~

# 直接输入了 mysqld_multi report
WARNING: Log file disabled. Maybe directory or file isn't writable?
mysqld_multi log file version 2.16; run: Thu May  2 17:09:36 2019
Reporting MySQL servers
No groups to be reported (check your GNRs)

所以正确做法是这样:

# sudo mysqld_multi --defaults-file=/etc/mysql/mysql.conf.d/mysqld.cnf report
# 得到如下结果
Reporting MySQL servers
MySQL server from group: mysqld1 is not running
MySQL server from group: mysqld2 is not running

三、连接实例

1.启动实例

输入命令:
注意命令执行的位置

# cd /etc/mysql/mysql.conf.d
# sudo mysqld_multi --defaults-file=./mysqld.cnf start 1
如果你省略了‘ start’ 后的数字 ‘1’ 则表示启动所有配置文件中写出的实例
# sudo mysqld_multi --defaults-file=./mysqld.cnf report
上述的report用法也是同理,此处report的结果是:
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is not running

2.连接、修改密码

注意参数大小写,以及-p后不要有空格,单引号中就是刚刚需要记住的密码

# sudo mysql -S /home/ubuntu/mysql/data/10001/shanghai.sock -p'jKt?wXnmD0d<'

得到如下结果:

腾讯云ubuntu服务器配置MySQL单机多实例记录(使用mysqld_multi)

自动生成的密码不好记,要改:

输入:

mysql> set password = '你自己想要设的密码'; # 注意分号结束

腾讯云ubuntu服务器配置MySQL单机多实例记录(使用mysqld_multi)

至此,我们虽然配置了2个实例,但本文仅展示了针对第一个实例的操作,对另外一个实例操作是一样的

参考 出处
1 【Linux】01_腾讯云Ubuntu安装及远程访问MySql
2 linux操作系统安装5.7.17MySQL以及单机多实例
3 Linux:mysql允许远程连接
4 linux操作系统安装5.7.17MySQL以及单机多实例
5 (转)linux mysql 安装,重装遇到问题
6 官方文档——安装好 MySQL 后的操作

教程结束,如果发现有什么坑的话以后再填~~~


支付宝搜索8645962,每天领红包哦~~~你们懂得

腾讯云ubuntu服务器配置MySQL单机多实例记录(使用mysqld_multi)


原创内容,转载请注明处出处

相关文章: