Linux小白,MySQL多实例安装 + 主从配置

2021-03-12  本文已影响0人  程就人生

想做主从库,但是资源又有限,不得不在一台服务器上做主从库。在一台服务器上部署MySQL多实例,目前主要有两种策略:
1.配置多个实例,每个实例对应不同的配置文件,曾经在windows服务器上就是这么做的;
2.通过官方自带的 mysqld_multi 一个单独的配置文件来实现多实例,集中管理。
这一次,在Linux服务器上安装MySQL多实例,就决定使用第二种策略。

MySQL多实例安装

第一步,安装MySQL之前的准备工作;

#下载安装包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.32-el7-x86_64.tar.gz

#解压安装包
tar zxvf mysql-5.7.32-el7-x86_64.tar.gz

#迁移,保证放在合适的位置,方便日后维护;
mv mysql-5.6.21-linux-glibc2.5-x86_64 /usr/local/mysql

第二步,MySQL的相关配置;

1.为MySQL创建专属用户;

#创建mysql用户组
groupadd -g 27 mysql

#创建该组下的用户
useradd -u 27 -g mysql-admin mysql

#查看用户的id信息
id mysql-admin
uid=27(mysql-admin) gid=27(mysql) groups=27(mysql)
创建用户时,-g 后第一个是用户名,第二个是组名

2.创建MySQL多实例放置的目录

#为每个实例创建单独的文件,以便存放对应的数据文件、日志文件、临时文件
mkdir -p /mnt/databases/mysql/{mysql_3306,mysql_3307}
mkdir /mnt/databases/mysql/mysql_3306/{data,log,tmp}
mkdir /mnt/databases/mysql/mysql_3307/{data,log,tmp}

#更改目录权限
chown -R mysql-admin:mysql /mnt/databases/mysql/ 
chown -R mysql-admin:mysql /usr/local/mysql/

#添加环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' >>  /etc/profile 
source /etc/profile 
授权时,:前面是用户名,后面在组名

3.创建配置文件my.cnf

#使用vim打开配置文件,文件不存在会新建一个
vim /usr/local/mysql/support-files/my.cnf
#输入i进入插入模式
i

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=/mnt/databases/mysql/mysqld_multi.log

[mysqld]
user=mysql-admin
basedir=/usr/local/mysql
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld3306]
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/mnt/databases/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=/mnt/databases/mysql/mysql_3306/log/slow.log
log-error=/mnt/databases/mysql/mysql_3306/log/error.log
binlog_format=mixed
log-bin=/mnt/databases/mysql/mysql_3306/log/mysql3306_bin

[mysqld3307]
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/mnt/databases/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=/mnt/databases/mysql/mysql_3307/log/slow.log
log-error=/mnt/databases/mysql/mysql_3307/log/error.log
binlog_format=mixed
log-bin=/mnt/databases/mysql/mysql_3307/log/mysql3307_bin

4.操作完成后,保存退出

#按ESC按钮退出编辑
esc
#强制保存修改内容
:wq! 

5.复制my.cnf文件到etc目录

cp /usr/local/mysql/support-files/my.cnf /etc/my.cnf

第三步,初始化数据库;
1.初始化数据库

#进入到mysql的bin目录下
cd /usr/local/mysql/bin
#执行初始化3306数据库
./mysqld --initialize --user=mysql-admin --basedir=/usr/local/mysql/ --datadir=/mnt/databases/mysql/mysql_3306/data

#初始化3307数据库
./mysqld --initialize --user=mysql-admin --basedir=/usr/local/mysql/ --datadir=/mnt/databases/mysql/mysql_3307/data
初始化成功结果图,产生临时密码

2.拷贝启动文件

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

3.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 

#停止实例命令失效时,使用如下命令:
mysqladmin -u root -p -S /tmp/mysql_3306.sock shutdown
Enter password:

#查看启动进程
netstat -tlnap | grep mysql
初始化成功结果图,产生临时密码

使用临时密码登录数据库,登录后重置密码,最后再重启;

#逐一登录mysql,输入临时密码登录;
mysql -S /tmp/mysql_3306.sock -p
Enter password:
#设置新密码
set password for root@'localhost'=password('123456'); 
flush privileges; 

到目前为止,数据库多实例已经安装好,接下来做主从同步;

主从同步##

第一步,主从库配置文件修改;

#打开配置文件my.cnf
vim /usr/local/mysql/support-files/my.cnf
#在 主库[mysqld3306] 下增加配置,忽略同步的数据库名称;
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

配置更改后,进行数据库重启;

#关闭3306,启动3306;3307没有修改,不需要进行重启;
mysqladmin -u root -p -S /tmp/mysql_3306.sock shutdown
mysqld_multi start 3306

第二步,主从库授权;
1.主库授权

grant replication slave on *.* to 'test'@'127.0.0.1' identified by '123456';
#授权后需要刷新后,才能生效;
flush privileges; 
#查看主库授权状态
show master status; 
主库授权

2.从库授权

#注意:从库的几个参数一定要和主库的保持一致
change master to master_host='127.0.0.1',master_user='test',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=154;
#启动主从拷贝
start slave; 
#查看拷贝状态
show slave status;
 #清除授权,授权信息也被清除掉
reset slave all;
#查看状态
show slave status \G

当查看从库的slave状态,下面两个状态都是yes时,代表主从库配置成功了。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

最后,加点补充,为了防止从库被篡改,建立一个新的只读账户,对外只开放这个只读账号,禁止对从库数据库的操作,只能读,不能写。这样主从库的同步又多了一个保障。

GRANT SElECT ON *.* TO 'root_readonly'@'%' IDENTIFIED BY "123456";
#执行刷新,刷新后;
 flush privileges;

参考文章:
https://blog.csdn.net/lihuarongaini/article/details/100119827
https://blog.csdn.net/weixin_42793426/article/details/81329720
Win10下Mysql主从库配置二次整理:https://www.jianshu.com/p/70913d116f31
Linux小白,初次安装MySQL,大神请绕路:https://www.jianshu.com/p/757663b26d82

上一篇下一篇

猜你喜欢

热点阅读