mysql读写分离

优化,web网站的优化

缓存技术
	数据库缓存 redis
⽂件缓存
	图⽚ fastdfs
负载均衡
	nginx
数据库主从备份,读写分离

·
  在⼯作中,为了防⽌数据损坏,使⽤主从备份这种架构(复制集),为了满⾜mysql的性能要求,为了提⾼吞吐量使⽤复制集之后还可搭建读写分离去提⾼性能。
  在这里插入图片描述
  在这里插入图片描述
·
  ⒈搭建主从
  
    两台centos环境,安装mysql
    master. 10.10.14.154
    slave 10.10.14.244
·
  mariadb 是使用yum 安装的,默认是一种宽松的开放模式。任何账号都可以登录、没有密码。配置mariadb为生产模式。

在master 和slave 都需要操作的
mysql 安全向导
mysql_secure_installation

在这里插入图片描述
在这里插入图片描述·
    systemctl restart mariadb 重启服务
    mysql -u root -p 使⽤密码登陆
·
——————————————————————————————————————————————
  ⒉Master 库 操作

create database OurBlog charset=utf8;

设置权限
grant replication slave on *.* to "root"@"%" identified by "111111" with grant option;

刷新授权
flush privileges;

使⽤库
use OurBlog

创建表
create table article(id int primary key auto_increment,title char(32));

退出数据库
exit
cd /opt/

导出库,原因:主从备份只备份数据,不会备份库,表,需要导出库,然后在从库中导⼊
mysqldump -h localhost -u root -p111111 OurBlog>OurBlog.sql

将导出的sql⽂件。拷⻉到salve服务器上
scp OurBlog.sql root@10.10.14.244:/opt/

·
  ⒊slave库操作

systemctl restart mariadb

mysql -uroot -p

create database OurBlog charset=utf8;

exit

将刚导⼊的sql⽂件导⼊到salve库中
mysql -h localhost -u root -p111111 OurBlog < /opt/OurBlog.sql

·
  ⒋主从服务器同时关闭防火墙,临时关闭安全模式

systemctl stop firewalld
setenforce 0

——————————————————————————————————————————————
  ⒌master修改配置⽂件

vim /etc/my.cnf

增加代码
server-id=1
log_bin=mysql-bin?
binlog-do-db=OurBlog
binlog-ignore-db=mysql

保存⽂件
重启 mariadb服务
systemctl restart mariadb

第一行代码:设置服务器id, =1表示主服务器
第二行代码:启动mysql二进制日志系统
第三行代码:需要同步的数据库名字。如果有多个数据库,可重复此行代码,只需要修改库名。每一库占用一行
第四行代码:不同步mysql系统库

在这里插入图片描述·
  ⒍slave库修改配置文件

修改配置⽂件
vim /etc/my.cnf

增加下⾯代码
server-id=2
log_bin=mysql-bin?
binlog-do-db=OurBlog
binlog-ignore-db=mysql

保存
重启mariadb服务
systemctl restart mariadb

此处=2表示从库服务器

在这里插入图片描述
·
  ⒎master配置

在主库服务器上输入命令:
show master status;
查看主库状态

file:二进制的文件

position:位置(从哪开始,类似于指针)

在这里插入图片描述
·
  ⒎slave配置

关闭备份
stop slave

根据主库状态信息输入命令:
change master to master_host="10.10.14.154",master_user="root",master_password='111111',mast er_log_file="mysql-bin?.000001",master_log_pos=245;

开始备份
start slave 

输入命令查看slave库状态
show slave status \G;

当
	slave_IO_Running:Yes
	slave_SQL_Running:Yes

此时说明配置成功

否则:
	IO线程出问题:就是master 与 slave链接出问题了。可能账号、密码(授权的密码,而不是数据库密码)或配置文件等出问题。
	
	SQL线程出问题:就是slave 与中继器日志之间出现问题。

在这里插入图片描述·
  如果数据表中已有数据,那么我们如果要搭建主从关系。就在主表导出数据的时候,把导出的数据直接导入从表之中,然后从表从一开始就拥有主表之前的数据,再对主表进行实时监听。

在从库中:
	start slave与slave start
	stop slave与slave stop
	效果是一样的
	
在master库中查看状态:
	不需要\G
	因为它显示出来的就是一个表

·
——————————————————————————————————————————————
  在 master 中写入数据,然后在 slave 中查看数据。
  在这里插入图片描述

①、Master 主库
   slave 从库

②、binary log 二进制文件。
   relay log 中继器日志

③、I/O thread  I/O线程
   SQL thread  sql线程

执行原理:
  ⒈当客户端发起 更新(insert delete update)操作, 操作的 master 库(事务)由 master 服务将 sql 语句转为二进制,存储到二进制日志文件中,然后执行 commit 操作,将事务结果存储到 master 库当中。
  ⒉slave 开通一个 io 线程,线程阻塞等待,一直监听二进制文件是否有更新。如果有,读取到中继器当中,但提交到中继器中的内容不会及时更新,如果没有,继续等待。
  ⒊sql 线程会定期查看中继器中的内容,它如果觉得改动比较小,算不得一次版本升级,就不一定会将更新内容写入 slave 库当中。但是,它会无限重复第二步的操作。其中,当它觉得达到版本升级要求时,会更新到 slave库。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值