sql多实例,复制,读写分离结构&MySQL综合知识

sql多实例,复制,读写分离结构

mysql多实例管理

多实例:基于一套mysql应用,生成多个数据目录
意义:可有效利用服务器资源,为充分利用剩余资源提供更多服务
做法:一台Linux上同时运行多个mysql,也就是多个实例(区别不同端口 例如3306、3307、3308),进行资源的逻辑隔离
查看已使用的端口:netstat -a
查看mysql占用端口的语句:netstat -tunlp|grep mysql

原因:
eg.一个网站需要多个数据库
eg.一个虚拟机开不同数据库,但一个公司开不同数据库,需要很多物理机(为了避免数据的紊乱,一个物理机一个数据库,成本很高)
eg.你只有一台电脑,但需要同时展示单车管理系统与图书管理系统

多实例中不同实例的区别

不同数据库的特点:在同一Linux机器下不同文件夹与目录下
具体呈现的区别是:不同的端口;不同的数据目录,不同的配置文件;不同的mysql进程,不同的pid
图片呈现
一个数据库即为一个卧室,为该数据库单独活动的场所,而厨房,客厅是公用的,当启动相应的数据库时,数据库会调用相应的软硬件去实现操作,也就是使用厨房和客厅。当多个实例,多个数据库共同启动时,对于同一个Linux来说,会发生 抢占等待。(这一句话也是弊端)
(厨房与客厅对应一套服务器中的软件资源CentOS操作系统,硬件资源CPU mem disk

数据库的主从性质,读写分离需求

mysql主从&读写
多实例读写架构图
逻辑顺序:客户端发送请求给负载均衡,再发送给应用服务器(eg.Java、python、PHP),再进行请求分析

该图中数据库可用功能:

主库:(可读)可写
从库(start时从主库copy一份):数据读取

部署MySQL多实例

基于一个musql应用,初始化三次,生成三个独立的mysql数据目录,即为三个mysql独立的实例

部署多实例的几种方式:

部署多实例的几种安装方式
rpm和源码安装的优缺点

步骤(仅为Linux系统下二进制安装mysql):

1.wget命令下载
2.安装所需要基础依赖
3.环境的清除(先前下载过mysql):清空PATH有关的mysql;停止当前Linux的mysql(如果发现mysql端口);创建mysql用户(有则无需重新下载)
mkdir -p /my_mysql/{3306,3307}
4.解压缩二进制软件包
5.查看mysql安装包信息

mysql多实例部署

多实例 基于一套mysql应用生成多个数据目录
每一个实例都有单独的
1.配置文件
2.启动脚本
3.数据目录

配置文件代码如下

实例1 3306的配置文件
cat /my_mysql/3306/my.cnf


[client]

[mysqld]
port=3306
socket=/my_mysql/3306/mysql.sock
#二进制mysql的目录
basedir=/application/mysql-5.6.40-linux-glibc2.12-x86_64/
#mysqld初始化数据往哪里写入
datadir=/my_mysql/3306/data
#实例名字为3306,日志名字为mysql_bin
log-bin=/my_mysql/3306/mysql-bin
#对当前数据库的唯一标识id
server-id=1

[mysqld_safe]
#错误日志书写位置
log-error=/data/3306/mysql_3306_error.log
pid-file=/data/3306/mysqld_3306.pid

#实例2 3307的配置文件
cat /my_mysql/3307/my.cnf


[client]

[mysqld]
port=3307
socket=/my_mydql/3307/mysql.sock
#二进制mysql的目录
basedir=/application/mysql-5.6.40-linux-glibc2.12-x86_64/
#mysqld初始化数据往哪里写入
datadir=/my_mysql/3307/data
#实例名字为3307,日志名字为mysql_bin
log-bin=/my_mysql/3307/mysql-bin
#对当前数据库的唯一标识id
server-id=2

[mysqld_safe]
#错误日志书写位置
log-error=/data/3307/mysql_3307_error.log
pid-file=/data/3307/mysqld_3307.pid

MySQL综合知识

1.设置mysql多实例开机自启(Linux)

cat /etc/rc.local
echo "/my_mysql/3306/mysql_3306 start" >> /etc/rc.local
echo "/my_mysql/3307/mysql_3307 start" >> /etc/rc.local

2.多种登录方式

  • mysql客服端命令 :p+port
    (基于端口区分的多实例登录方法)
    格式为 mysql -u用户名 -p[密码] -h服务端mysql的地址 -P端口
    注意点(-P端口 处为大写P)
    该方法好处:
    1.可以用于登录本地mysql(mysql客户端和服务端一起的情况下)
    2.可用于远程登录mysql服务端
mysql -uroot -p -h127.0.0.1 -P3306
  • 通过mysql.sock套接字文件登录(通俗讲就是根目录找到文件夹的方式)
    可以进行该方法登录的条件:
    1.mysql进制存在
    2.sock文件存在
    3.pid文件存在

mysql多实例密码

mysqladmin -uroot -S /my_mysql/3306/mysql.sock password

如何远程登录mysql

注意必须在服务端找,不是在客户端上找

mysql -uroot -p -h深圳某家公司数据库服务器ip -P3306
#查询ip,Linu系统可用
ip a

可能出现问题解决方案:

  1. 被主机拒绝连接(权限不够、需要授权)
  2. 想运维同学,也就是DBA要权限

主机授权SQL语句:
格式为
grant all privileges on . to root @ ‘网站.%’ identified by ‘密码’;
对应意思为
限制连接用户必须在这个 网址 凭借这个 密码 登录数据库 访问 所有数据库所有数据表

grant all privileges on *.* to root @ '127.0.0.1.%' identified by 'root';
flush privileges;#对权限表进行刷新

之后在客户端机上远程登录就不会受到阻碍了

ps:当前趋势:目前云计算服务正在盛行

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值