MySQL主从同步、读写分离配置步骤

yizhihongxing

下面是MySQL主从同步、读写分离配置步骤的详细攻略。

一、MySQL主从同步

1. 配置主服务器

在主服务器上,需要配置MySQL的主从同步参数,具体步骤如下:

  • 编辑配置文件/etc/my.cnf,添加如下内容:
    [mysqld]
    log-bin=mysql-bin # 开启binlog日志
    server-id=1 # 主服务器的唯一ID

  • 重启MySQL服务,使配置生效。

  • 创建用于同步的账号,并授权其访问权限,例如:
    grant replication slave on *.* to 'slave'@'%' identified by 'slavepwd';
    flush privileges;

2. 配置从服务器

在从服务器上,需要配置MySQL的主从同步参数,具体步骤如下:

  • 编辑配置文件/etc/my.cnf,添加如下内容:
    [mysqld]
    server-id=2 # 从服务器的唯一ID

  • 重启MySQL服务,使配置生效。

  • 执行以下SQL语句,设置从服务器同步主服务器的参数:
    change master to
    master_host='主服务器IP',
    master_user='slave',
    master_password='slavepwd',
    master_log_file='主服务器的binlog文件名',
    master_log_pos=主服务器的binlog文件中的position值;

3. 同步数据

配置完成后,执行以下步骤,使从服务器同步主服务器的数据:

  • 执行以下SQL语句,开启从服务器的同步功能:
    start slave;

  • 执行以下SQL语句,查看从服务器同步主服务器的状态:
    show slave status\G;

如果状态为Slave_IO_Running和Slave_SQL_Running均为Yes,则表示同步成功。

二、MySQL读写分离

1. 配置主服务器

在主服务器上,需要配置MySQL的读写分离参数,具体步骤如下:

  • 编辑配置文件/etc/my.cnf,添加如下内容:
    [mysqld]
    log-bin=mysql-bin # 开启binlog日志
    server-id=1 # 主服务器的唯一ID

  • 重启MySQL服务,使配置生效。

2. 配置从服务器

在从服务器上,需要配置MySQL的读写分离参数,具体步骤如下:

  • 编辑配置文件/etc/my.cnf,添加如下内容:
    [mysqld]
    server-id=2 # 从服务器的唯一ID
    read-only=1 # 设置从服务器只可用于读取

  • 重启MySQL服务,使配置生效。

3. 配置中间件

在中间件上,需要配置MySQL的读写分离参数,具体步骤如下:

  • 安装MySQL Proxy,例如:
    yum install mysql-proxy

  • 编辑配置文件/etc/mysql-proxy.cnf,添加如下内容:
    ```
    [mysql-proxy]
    log-level = 1
    log-file = /var/log/mysql/mysql-proxy.log

[proxy-backend-0]
address = 主服务器IP:3306
weight = 1
is_rw = yes

[proxy-backend-1]
address = 从服务器IP:3306
weight = 1
is_rw = no

[proxy-listener]
address = 0.0.0.0:3306
proxy-backend-addresses = proxy-backend-0,proxy-backend-1
```

其中,proxy-backend-0表示主服务器,proxy-backend-1表示从服务器。参数is_rw用于指定该服务器是否可用于写入操作。

  • 启动MySQL Proxy:
    mysql-proxy --defaults-file=/etc/mysql-proxy.cnf

4. 测试读写分离

配置完成后,执行以下步骤,测试读写分离是否生效:

  • 执行以下SQL语句,连接中间件:
    mysql -h 中间件IP -u 用户名 -p 密码

  • 执行INSERT等写入操作,验证是否成功写入主服务器。

  • 执行SELECT等读取操作,验证是否从从服务器中读取数据。

示例说明

示例一

假设主服务器IP为192.168.1.1,从服务器IP为192.168.1.2,中间件IP为192.168.1.3,要实现主从同步和读写分离。具体操作如下:

  1. 在主服务器上,编辑配置文件/etc/my.cnf,添加如下内容:
    [mysqld]
    log-bin=mysql-bin
    server-id=1

  2. 在从服务器上,编辑配置文件/etc/my.cnf,添加如下内容:
    [mysqld]
    server-id=2
    read-only=1

  3. 在中间件上,安装MySQL Proxy,并编辑配置文件/etc/mysql-proxy.cnf,添加如下内容:
    ```
    [mysql-proxy]
    log-level = 1
    log-file = /var/log/mysql/mysql-proxy.log

[proxy-backend-0]
address = 192.168.1.1:3306
weight = 1
is_rw = yes

[proxy-backend-1]
address = 192.168.1.2:3306
weight = 1
is_rw = no

[proxy-listener]
address = 0.0.0.0:3306
proxy-backend-addresses = proxy-backend-0,proxy-backend-1
```

  1. 启动MySQL Proxy:
    mysql-proxy --defaults-file=/etc/mysql-proxy.cnf

示例二

假设有多个从服务器,需要实现主从同步和读写分离。具体操作如下:

  1. 在主服务器上,编辑配置文件/etc/my.cnf,添加如下内容:
    [mysqld]
    log-bin=mysql-bin
    server-id=1

  2. 在每个从服务器上,编辑配置文件/etc/my.cnf,添加如下内容:
    [mysqld]
    server-id=从服务器的唯一ID
    read-only=1

  3. 在中间件上,安装MySQL Proxy,并编辑配置文件/etc/mysql-proxy.cnf,添加如下内容:
    ```
    [mysql-proxy]
    log-level = 1
    log-file = /var/log/mysql/mysql-proxy.log

[proxy-backend-0]
address = 192.168.1.1:3306
weight = 1
is_rw = yes

[proxy-backend-1]
address = 192.168.1.2:3306
weight = 1
is_rw = no

[proxy-backend-2]
address = 192.168.1.3:3306
weight = 1
is_rw = no

...

[proxy-listener]
address = 0.0.0.0:3306
proxy-backend-addresses = proxy-backend-0,proxy-backend-1,proxy-backend-2,...
```

  1. 启动MySQL Proxy:
    mysql-proxy --defaults-file=/etc/mysql-proxy.cnf

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL主从同步、读写分离配置步骤 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Thinkphp使用mongodb数据库实现多条件查询方法

    接下来我将详细讲解“Thinkphp使用mongodb数据库实现多条件查询方法”的完整攻略,其中包含两条示例说明。 确认环境 在开始之前,我们需要确认自己的运行环境中是否已经配置好了mongodb数据库。如果还没有安装mongodb数据库,可以自行搜索相关教程进行安装。 导入Mongo类库 在Thinkphp中通过composer导入Mongo类库,可以通过…

    database 2023年5月21日
    00
  • docker Compose部署springboot+vue前端端分离

    下面是完整攻略: 1. 前置条件 在进行 Docker Compose 部署 Spring Boot + Vue 前端后端分离前,需要确保已经具备一下前置条件: 熟悉 Docker 和 Docker Compose 的基本使用方法 已经安装好 Docker 和 Docker Compose 环境 已经有 Spring Boot 和 Vue 的项目代码,并能正…

    database 2023年5月22日
    00
  • 【MySQL】MySQL知识图谱

    文章目录 MySQL 表 锁 索引 连接管理 事务 日志系统 简单记录 极客时间 – MySQL实战45讲 MySQL知识图谱 表 表 引擎选择 编码问题 表空间管理 字段设计 备份和恢复 压缩表 分区表 锁 锁 全局锁 表锁 行锁 索引 索引 主键索引 唯一索引 前缀索引 选择策略 change buffer 空间利用率 索引设计 排序优化 连接管理 连接…

    MySQL 2023年4月13日
    00
  • PHP数据缓存技术

    PHP数据缓存技术 在Web开发中,数据缓存技术是一个非常重要的话题。懂得使用合适的缓存策略可以极大地提升Web应用的性能和响应速度。本文将介绍PHP中常用的缓存技术及其使用方法。 常见的缓存类型 文件缓存:将数据写入硬盘,下次使用时直接读取硬盘数据。适用于缓存数量较小的场景。 Memcached缓存:将数据缓存在内存中,适用于高并发、频繁读写的场景。 Re…

    database 2023年5月19日
    00
  • mysql时间戳转成常用可读时间格式的两种方法

    下面我将详细讲解如何将 MySQL 的时间戳转换成常用的可读时间格式。我将介绍两种方法,分别是使用 MySQL 函数和使用 PHP 函数。 方法一:使用 MySQL 函数 MySQL 中有几个转换时间戳的函数,最常用的有 FROM_UNIXTIME 和 DATE_FORMAT,分别可以将时间戳转换成标准日期时间格式和自定义格式。 1. 用 FROM_UNIX…

    database 2023年5月22日
    00
  • Windows7下如何在命令行使用MySQL

    在Windows 7下使用MySQL命令行,需要以下步骤: 步骤一:安装MySQL 下载MySQL Windows版安装程序安装包,从MySQL官网下载对应版本的安装程序: https://dev.mysql.com/downloads/installer/ 打开安装程序并选择Custom类型安装,选择需要安装的MySQL版本,以及要安装的MySQL工具和驱…

    database 2023年5月22日
    00
  • docker容器如何优雅的终止详解

    下面是关于“docker容器如何优雅的终止”的详细讲解及示例说明。 什么是优雅的终止 在docker容器运行中,需要进行终止操作。但是,如果直接使用docker stop 命令终止容器,在终止时,容器会直接被强制关闭,可能会导致数据丢失或意外错误发生。为了优雅地终止容器,可以使用一种更加安全和有效的方式,也就是所谓的“优雅终止(Graceful Termin…

    database 2023年5月22日
    00
  • redis集群搭建以及在SpringBoot中的配置

    redis的安装:https://www.cnblogs.com/knightdreams6/p/11270400.html 集群搭建: 两台虚拟机模拟6个节点,一台机器3个节点,创建3 master, 3 salve 环境 redis采用 redis-5.0.5版本。 两台虚拟机都是CentOS7,一台ip(192.168.3.222),另一台(192.1…

    Redis 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部