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

想做主从库,但是资源又有限,不得不在一台服务器上做主从库。在一台服务器上部署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)

1e18c1249b9b

创建用户时,-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

1e18c1249b9b

授权时,:前面是用户名,后面在组名

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

1e18c1249b9b

初始化成功结果图,产生临时密码

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

1e18c1249b9b

初始化成功结果图,产生临时密码

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

#逐一登录mysql,输入临时密码登录;

mysql -S /tmp/mysql_3306.sock -p

Enter password:

#设置新密码

set password for root@'localhost'=password('123456');

flush privileges;

1e18c1249b9b

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

主从同步##

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

#打开配置文件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;

1e18c1249b9b

主库授权

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

1e18c1249b9b

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

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

1e18c1249b9b

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

GRANT SElECT ON *.* TO 'root_readonly'@'%' IDENTIFIED BY "123456";

#执行刷新,刷新后;

flush privileges;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值