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

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

Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github.com/csxiaoyaojianxian Email: sunjianfeng@csxiaoyao.com QQ: 1724338257

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

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中判断读写即可。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java开发者杂谈

Redis(1):入门

在Linux下安装redis: wget http://download.redis.io/redis-stable.tar.gz tax xzf redi...

33380
来自专栏达摩兵的技术空间

docker下部署jenkins(一)

本文带你在docker中安装jenkins服务,为入门级别的介绍,建议阅读时间10-15min.

1.4K30
来自专栏叔叔的博客

Docker Swarm

docker-machine ls, 看看有没有虚拟主机,没有就Docker Machine创一个

18520
来自专栏holer

如何从公网访问内网SQLServer数据库

本地安装了SQLServer数据库,只能在局域网内访问,怎样从公网也能访问本地SQLServer数据库?

39310
来自专栏Coding01

一步一步搭建 PHP 服务器环境

这两天翻了翻之前的技术文档,发现有一篇文档值得拿出来和大家分享:如何给一台全新的阿里云服务器,搭建环境 —— 来部署 PHP 项目,Node.js 项目等。

53620
来自专栏bluesummer

Windows下docker的安装,将ASP.NET Core程序部署在docker中

参考文章: https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html https...

54960
来自专栏黑白安全

W8ay 一句话管理网页端

第二版本完成了自定义命令 在include\model\PHPShell_Build_mothod.php中自定义命令即可,将自动完成编码加密过程

18520
来自专栏杨焱的专栏

【腾讯云的1001种玩法】在 CVM 上使用腾讯云 Docker 镜像加速构建

国内网络访问 docker 官方的仓库速度不快,最近腾讯云提供了 Docker 镜像接入,相比之下下提速显著。下面跟大家分享下如何在CVM上使用腾讯云Docke...

2K00
来自专栏calvin

解决jenkins slave 中文乱码 encoding=ANSI_X3.4-1968

jenkins配置slave进行构建时,发现slave构建的控制台输入中文乱码,查看master,slave的jenkins系统信息 file.encodin...

31810
来自专栏静下来

腾讯云Linux系统盘网站数据更换至数据盘

主要看你原网站的目录叫什么名称,如果原网站目录文件夹是用的一键安装包,也就是叫:alidata 那就不能按照第四步来了,这样可能会出错的。 今天来把腾讯云的也挂...

72360

扫码关注云+社区

领取腾讯云代金券