专栏首页csxiaoyaomysql学习总结09 — 优化(架构层)-主从复制与读写分离

mysql学习总结09 — 优化(架构层)-主从复制与读写分离

架构层的优化大致有:分布式部署(集群)(主从复制、读写分离)

1. 主从复制

1.1 概述

数据库服务器压力增大,增加多台mysql数据库服务器,需要建立主从复制机制保证数据一致同步。

主服务器写,从服务器读,从服务器去主服务器复制/同步数据

主从复制适用范围:

(1) 主从复制后,可以用作后面业务的一个读写分离需求

(2) 从服务器作为主服务器的备份服务器

php业务实现读写分离

写读比例1/7,一般一个写服务器,多个读从服务器

1.2 主服务器配置

主服务器 server-id:1

Step1: 修改配置文件

主从复制会根据日志记录的位置来进行同步,my-bin.log

$ vim /etc/my.conf
log-bin=mysql-bin #开启二进制日志文件
binlog_format=mixed #日志文件存储方式
server-id=1 #服务器识别id 
# 启动mysql服务
$ /usr/local/mysql/bin/mysqld_safe -user=mysql &

Step2: 创建同步账号

# 登录
$ /usr/local/mysql/bin/mysql -uroot -p
# 在主服务器创建同步账号 slave(123456) 以便从服务器同步主服务器数据
mysql> grant replication slave on *.* to 'slave'@'%' identified by '123456';
mysql> flush privileges;

Step3: 创建远程登录账号

一般root用户权限太高,只设置为允许本地登录,所以再创建一个用户进行远程登录

mysql> grant all on *.* to 'api'@'%' identified by '123456';
mysql> flush privileges;

Step4: 在主服务器查看日志文件名称和记录位置

用于从服务器配置

mysql> show master status;

1.3 从服务器配置

从服务器 server-id:2

Step1: 修改配置文件

$ vim /etc/my.conf
log-bin=mysql-bin #开启二进制日志文件
binlog_format=mixed #日志文件存储方式
server-id=2 #服务器识别id
# 启动mysql服务
$ /usr/local/mysql/bin/mysqld_safe -user=mysql &

Step2: 创建用户

# 登录
$ /usr/local/mysql/bin/mysql -uroot -p
mysql> grant all on *.* to 'api'@'%' identified by '123456';
mysql> flush privileges;

Step3: 配置slave服务

master_log_file 和 master_log_pos 在主服务器通过 show master status 查看

# 在从服务器将slave同步服务关闭
mysql> slave stop;
# 配置
mysql> change master to master_host="192.168.0.1", master_user="slave", master_password="123456", master_log_file="mysql-bin.000001", master_log_pos=100;
# 启动
mysql> slave start;

Step4: 在从服务器查看当前从服务器状态

mysql> show slave status\G;

如果看到 Slave_IO_Running: YesSlave_SQL_Running: Yes 说明配置成功

在主服务器进行写操作,查看从服务器是否更新数据判断实际是否配置成功

2. 读写分离

$con_write = mysql_connect('192.168.0.1','api','123456');
$con_read = mysql_connect('192.168.0.2','api','123456');

然后在SQL中判断读写即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mysql 配置总结( linux & macos )

    csxiaoyao
  • mysql 命令完全总结

    csxiaoyao
  • mysql学习总结10 — 优化(sql语句层)-锁与sql优化

    **读锁:**共享锁S-lock,读操作时添加,所有用户(包括当前用户)只可读不可写

    csxiaoyao
  • mysql学习总结09 — 优化(架构层)-主从复制与读写分离

    数据库服务器压力增大,增加多台mysql数据库服务器,需要建立主从复制机制保证数据一致同步。

    CS逍遥剑仙
  • 关于mysql集群主从服务器搭建

    在高并发流量下,数据库往往是服务端的瓶颈,由于数据库数据需要确保落地,同时保证数据同步,数据即时性,有效性的问题,导致数据库不能像平常后端程序一样负载均衡.  ...

    仙士可
  • MySQL入门详解(三)---mysql如何进行主从配置

    GRANT REPLICATION SLAVE ON *.* to 'root'@'111.111.111.111' identified by '12345...

    步履不停凡
  • Linux + Apache + Mys

             APACHE:     http://www.fayea.com/apache-mirror/httpd/

    py3study
  • 如何保护PostgreSQL免受攻击

    服务器刚搭建,流量少,没有任何对黑客有价值的东西,你可能就会忽视相关的安全问题。但是,许多漏洞攻击都是自动化的,专门用于查找你服务中的BUG。这些服务器主要目的...

    独钓寒江雪_Ly
  • java架构之路(Sharding JDBC)mysql5.7yum安装和主从

    每个人都不一样,别复制我的。输入mysql -uroot -p,然后输入你的密码进入

    小菜的不能再菜
  • BAT 大厂的大型网站页面静态化你了解吗?

    我们小伙伴们在访问淘宝、网易等大型网站时有没有考虑到,网站首页、商品详情页以及新闻详情页面是如何处理的?怎么能够支撑这么大流量的访问呢?

    业余草

扫码关注云+社区

领取腾讯云代金券