mysql 配置主从复制_mysql主从配置详解

mysql 配置主从复制_mysql主从配置详解1 环境准备 192.168.1.34 服务器A(主机) 192.168.1.35 服务器B(从机) 2 安装mysql MySQL版本: 这里采用Server version: 5.7.35 MyS

配置MySQL5.7主从复制

1 环境准备

192.168.1.34 服务器A(主机)
192.168.1.35 服务器B(从机)

2 安装mysql

MySQL版本:

这里采用Server version: 5.7.35 MySQL Community Server (GPL)

我们把安装在“服务器A”的数据库称作“主数据库”、安装在“服务器B”的数据库称作“从数据库”。

2.1 开放端口

确保服务器A与服务器B上的3306端口可以互访。

3 设置主库

进行下面的配置前,假设你已经在两台服务器AB上安装成功MySQL服务。

192.168.1.34 服务器A(主机)

3.1 修改MySQL配置文件

编辑mysql配置文件/etc/my.cnf,添加如下的内容:

[mysqld]
log-bin=mysql-bin
server-id=1

保存修改内容并重启MySQL服务。

3.2 创建一个用户用于复制

所谓复制用户,即供从数据库使用的,从主数据库拷贝二进制日志信息的用户。

用客户端连接上MySQL服务,执行以下语句创建一个用于复制的用户:

mysql> CREATE USER "repl"@"192.168.1.%" IDENTIFIED BY "Abc!@#123";
mysql> GRANT REPLICATION SLAVE ON *.* TO "repl"@"192.168.1.%";

3.3 获取二进制文件位置

这些信息在后面配置从数据库时用到。

1、阻塞数据库写语句

mysql> FLUSH TABLES WITH READ LOCK;

2、获取当前二进制文件的名称和位置

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

3.4 使用mysqldump创建数据快照

本指南默认使用InnoDB存储引擎。

如果在启用主从复制前,主数据库已存在数据,那么你就需要先把这些数据拷贝到从数据库。下面给出一个例子,将所有数据库备份到一个叫做dbdump.db的文件:

shell> mysqldump --all-databases --master-data > dbdump.db

其中--master-data选项会自动追加 CHANGE MASTER TO语句,该语句在从数据库启动复制进程时需要到。

注意:

如果你没有使用--master-data选项的话,那么你需要在一个单独的会话中锁定所有数据表。详情见 Section 16.1.2.3, “Obtaining the Replication Source”s Binary Log Coordinates”.

4 设置从库

192.168.1.35 服务器B(从机)

4.1 修改MySQL配置文件

编辑mysql配置文件/etc/my.cnf,添加如下的内容:

[mysqld]
server-id=2
skip_slave_start=ON

这里主要解释一下skip_slave_start配置,ON表示数据库启动时不启动从机的复制进程,需要通过手动的方式进行启动。

保存修改内容并重启MySQL服务。

4.2 设置从库对应的主库

这里主要用到 CHANGE MASTER TO语句,其基本语法如下:

mysql> CHANGE MASTER TO
    ->     MASTER_HOST="source_host_name",
    ->     MASTER_USER="replication_user_name",
    ->     MASTER_PASSWORD="replication_password",
    ->     MASTER_LOG_FILE="recorded_log_file_name",
    ->     MASTER_LOG_POS=recorded_log_position;

我们的例子对应如下(当中的参数见上文[设置主数据库](#3 设置主数据库)一节):

mysql> CHANGE MASTER TO
    ->     MASTER_HOST="192.168.1.34",
    ->     MASTER_USER="repl",
    ->     MASTER_PASSWORD="Abc!@#123",
    ->     MASTER_LOG_FILE="mysql-bin.000001",
    ->     MASTER_LOG_POS=1030;

4.3 导入全新的数据的情况

即主库和备库都是新建的,不存在旧库旧表旧数据,且主库已经启用二进制日志,备库已指定主库及当前位置。这时你想要将其它的数据库备份下来导入到当前的主备数据库中,你只需要在主库中执行导入命令即可(不能再备库执行导入语句):

shell> mysql -h "192.168.1.34" < fulldb.dump

4.4 主库已存在数据的情况

即主库在启用二进制日志前已存在数据,你在启用从库复制进程前需要把主库的备份快照导入到从库中,然后才能启用从库的复制进程。

1、新建主库快照

shell> mysqldump --all-databases --master-data > dbdump.db

2、导入到从库中

shell> mysql -h "192.168.1.35" < fulldb.dump

4.5 启用从库复制进程

mysql> START SLAVE;

验证主从复制是否启动成功

mysql> show slave statusG
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.34
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 2096
               Relay_Log_File: 192-relay-bin.000007
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
......

如上,只有Slave_IO_RunningSlave_SQL_Running同时都是Yes的时候表示主从复制配置成功。

5 互为主从设置

前面两个章节讲了如何配置主从复制,即服务器A的数据库作为主库,服务器B的数据库作为从库;那么只要按照相反的步骤再设置一遍,即服务器B的数据库作为主库,服务器A的数据库作为从库。这样就可以使得服务器A的数据库和服务器B的数据库互为主从了。

原文地址:https://www.cnblogs.com/youbins/archive/2022/11/01/16848783.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4591.html

(0)
上一篇 2023-06-13
下一篇 2023-06-13

相关推荐

  • 奥利奥海盐奶油怎么做_sql按某个字段排序

    奥利奥海盐奶油怎么做_sql按某个字段排序如何让mysql按照两个或多个字段排序 错误方式: 这种方式两个字段都是降序的(and隔开哪个,第二个参数不起作用。) 正确方式:

    2023-02-17
    142
  • Python实现合并list的方法

    Python实现合并list的方法在Python编程中,list是非常常见的数据类型,但在实际应用中,我们有时需要将多个list进行合并。对于初学者来说,这可能会是一个比较困难的问题,因此我们需要寻找一种简单有效的解决方案。在本文中,我们将介绍Python实现合并list的几种方法。

    2024-09-20
    19
  • python中def函数的用法

    python中def函数的用法在Python编程语言中,函数是一种重要的编程结构,通过函数可以将算法、任务、操作等封装为一个固定的代码块,并且可以通过参数灵活地传递数据和返回结果,简化了代码的复杂性和重用性。其中,def是Python中定义函数的关键字,用于声明函数并指定函数名、参数和执行内容等信息。本文将从不同方面,详细阐述def函数在Python中的用法,旨在帮助初学者更深入地理解Python函数编程。

    2024-09-09
    27
  • 神奇的 SQL 之 ICP → 索引条件下推[亲测有效]

    神奇的 SQL 之 ICP → 索引条件下推[亲测有效]开心一刻 楼主:来,我们先排练一遍 小伙伴们:好 嘿、哈、嚯 楼主:非常好,就是这个节奏,我们开始吧 楼主:啊、啊、啊,疼 ! 你们是不是故意的 ? 回表与覆盖索引 正式讲 ICP 之前了,我们先将相

    2023-02-04
    148
  • 数据库cpu占用高_oracle数据库cpu过高 排查方法

    数据库cpu占用高_oracle数据库cpu过高 排查方法数据库CPU使用率100%报警频繁起来。第一个想到的就是慢Sql,我们对未合理运用索引的表加入索引后,问题依然没有得到解决,深入排查时,发现在 order by id asc limit n时,即使w

    2023-06-03
    160
  • 技术分享 | InnoDB 的索引高度

    技术分享 | InnoDB 的索引高度作者:洪斌 爱可生南区负责人兼技术服务总监,MySQL ACE,擅长数据库架构规划、故障诊断、性能优化分析,实践经验丰富,帮助各行业客户解决 MySQL 技术问题,为金融、运营商、互联网等行业客户提…

    2023-03-07
    141
  • 企业组织架构图流程_运营部架构

    企业组织架构图流程_运营部架构 前言: MySQL数据库自己用了也有两三年了,基本上只是掌握增删改查的sql语句,从没有思考过MySQL的内部到底是怎么根据sql查询数据的,包括索引的原理,只知道加了索引查的就快,不知道为…

    2023-03-21
    140
  • 如何搭建数据库自动化运维体系框架_大数据平台搭建与运维

    如何搭建数据库自动化运维体系框架_大数据平台搭建与运维
    需求背景: 随着业务的增长、对运维效率和质量的要求不断提高,对自动化运维体系的需求也不断增强。 目前笔者服务的很多中大型企业客户,运维其实还停留在“刀耕火种…

    2023-04-06
    164

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注