栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

003MySQL性能调优006读写分离

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

003MySQL性能调优006读写分离

1 主从复制 1.1 简介

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。

因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。

通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

1.2 解决的问题 1.2.1 数据备份

从服务器相当于主服务器的一个备份。

1.2.2 高可用

主服务器宕机时,可以将从服务器切换为主服务器,保证服务器的稳定运行。

1.2.3 读写分离

在主服务器上进行写入和更新,在从服务器上进行查询和分析,提高整个服务器的性能。

1.3 原理

主服务器称为Master服务器,从服务器称为Slave服务器。每个Slave只有一个Master,每个Master可以有多个Slave。

当Master上的数据发生改变时,将其改变写入二进制日志中,这个过程称为二进制日志事件。

Slave会在一定时间间隔内对Master上的二进制日志进行探测,若发现日志有改变,则开启I/O线程请求获取Master的二进制事件并保存至Slave的中继日志。

Master会为每个I/O线程启动一个线程,用于发送二进制事件。

Slave将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得Slave的数据和Master的数据保持一致,最后I/O线程和SQL线程将进入睡眠状态,等待下一次被唤醒。

MySQL复制是异步的并且是串行化的。

如图:

 

1.4 配置 1.4.1 配置Master

必选配置:

[mysqld]
# 主服务器唯一ID
server-id=1
# 是否只读,0表示读写
read-only=0
# 配置二进制日志
log_bin=/var/log/mysql/mysql-bin
log_bin_index=/var/log/mysql/mysql-bin

可选配置,二选一:

[mysqld]
# 不同步哪些数据库,除此之外别的都同步
binlog-ignore-db = information_schema
binlog-ignore-db = mysql
# 只同步哪些数据库,除此之外别的都不同步
binlog-do-db = test
1.4.2 配置Slave

必选配置:

[mysqld]
# 从服务器唯一ID
server-id=10
# 是否只读,1表示只读
read-only=1

可选配置:

[mysqld]
# 配置二进制日志
log_bin=/var/log/mysql/mysql-bin
log_bin_index=/var/log/mysql/mysql-bin
# 配置中继日志
relay_log=/var/log/mysql/mysql-relay
relay_log_index=/var/log/mysql/mysql-relay
1.4.3 重启Master

重新启动Master:

systemctl restart mysql
1.4.4 配置用户

在Master上创建用于主从复制的用户:

create user 'doSlave' identified by '123456';

授权:

grant replication slave on *.* to 'doSlave' identified by '123456';

刷新:

flush privileges;
1.4.5 查看状态

查看Master的状态:

mysql> show master status;
+------------------+----------+--------------+--------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set |
+------------------+----------+--------------+--------------------------+-------------------+
| mysql-bin.000009 |     1811 |              | information_schema,mysql |                   |
+------------------+----------+--------------+--------------------------+-------------------+
1 row in set (0.00 sec)

记录下File和Position的值。

1.4.6 重启Slave

重新启动Slave:

systemctl restart mysql
1.4.7 建立主从关联

在Slave上执行命令:

CHANGE MASTER TO
MASTER_HOST='192.168.15.130',
MASTER_USER='doSlave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000009',
MASTER_LOG_POS=1811;

说明:

MASTER_HOST:主服务IP地址。
MASTER_USER:主服务上用于主从同步的用户。
MASTER_PASSWORD:主服务上用于主从同步的用户密码。
MASTER_LOG_FILE:主服务上状态查询得到的File。
MASTER_LOG_POS:主服务上状态查询得到的Position。
1.4.8 执行同步

在Slave上执行命令:

start slave;

查看同步状态:

show slave statusG;

如果Slave_IO_Running参数和Slave_SQL_Running参数都是Yes,则说明主从同步成功。

1.4.9 测试

在Master上执行SQL语句,在Slave上查看是否从Master上同步了。

1.4.10 停止

使用命令停止主从同步:

stop slave;
2 读写分离

读写分离基于主从复制,可以配置一主一从,主服务器读写,从服务器只读。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675962.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号