首页 > 数据库 >【linux下mysql主从复制操作流程】

【linux下mysql主从复制操作流程】

时间:2024-12-14 10:57:33浏览次数:13  
标签:主从复制 mysql linux server 复制 MASTER MySQL 服务器

linux下mysql主从复制操作流程

在Linux下实现MySQL主从复制(Master-Slave Replication)是一个常见的需求,用于读写分离、数据备份等场景。以下是一个详细的操作流程,包括每个步骤、注意事项以及总结。

一、准备环境

  1. 安装MySQL

    • 确保主服务器(Master)和从服务器(Slave)都已经安装了MySQL。
    • 可以通过包管理工具安装,例如:sudo apt-get install mysql-server(Debian/Ubuntu)或sudo yum install mysql-server(CentOS/RHEL)。
  2. 配置网络连通性

    • 确保主服务器和从服务器之间可以通过网络相互通信。

二、配置主服务器(Master)

  1. 编辑MySQL配置文件

    • 打开MySQL配置文件(通常是/etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf)。
    • 添加或修改以下内容:
      [mysqld]
      server-id = 1
      log-bin = mysql-bin
      binlog-do-db = your_database  # 仅复制特定的数据库,可选
      
    • server-id:每个服务器的唯一标识符,主服务器和从服务器不能相同。
    • log-bin:启用二进制日志。
    • binlog-do-db:仅复制特定的数据库,如果希望复制所有数据库,可以省略此行。
  2. 重启MySQL服务

    • 重启MySQL服务以使配置生效:
      sudo systemctl restart mysql
      
  3. 创建复制用户

    • 登录到MySQL:
      mysql -u root -p
      
    • 创建一个用于复制的用户,并授予必要的权限:
      CREATE USER 'replica_user'@'%' IDENTIFIED BY 'replica_password';
      GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
      FLUSH PRIVILEGES;
      
  4. 锁定表并获取二进制日志位置

    • 为了确保数据一致性,锁定表并获取当前二进制日志文件名和位置:
      FLUSH TABLES WITH READ LOCK;
      SHOW MASTER STATUS;
      
    • 记录下FilePosition的值,稍后从服务器上会用到。
  5. 备份数据库

    • 使用mysqldump备份数据库,并传输到从服务器:
      mysqldump -u root -p --all-databases --master-data=2 > all_databases.sql
      
    • 将生成的all_databases.sql文件复制到从服务器。
  6. 解锁表

    • 在主服务器上解锁表:
      UNLOCK TABLES;
      

三、配置从服务器(Slave)

  1. 编辑MySQL配置文件

    • 打开MySQL配置文件(路径同上)。
    • 添加或修改以下内容:
      [mysqld]
      server-id = 2
      relay-log = mysql-relay-bin
      
    • server-id:确保与主服务器不同。
    • relay-log:定义中继日志文件名。
  2. 重启MySQL服务

    • 重启MySQL服务以使配置生效:
      sudo systemctl restart mysql
      
  3. 导入主服务器的备份

    • 将之前在主服务器上生成的all_databases.sql文件导入到从服务器:
      mysql -u root -p < all_databases.sql
      
  4. 配置从服务器以连接到主服务器

    • 登录到从服务器的MySQL:
      mysql -u root -p
      
    • 配置从服务器:
      CHANGE MASTER TO
        MASTER_HOST='master_server_ip',
        MASTER_USER='replica_user',
        MASTER_PASSWORD='replica_password',
        MASTER_LOG_FILE='mysql-bin.000001',  # 使用SHOW MASTER STATUS得到的File值
        MASTER_LOG_POS= 12345;  # 使用SHOW MASTER STATUS得到的Position值
      
  5. 启动复制

    • 在从服务器上启动复制进程:
      START SLAVE;
      
  6. 检查复制状态

    • 检查从服务器状态:
      SHOW SLAVE STATUS \G;
      
    • 确保Slave_IO_RunningSlave_SQL_Running都为Yes,并且没有错误。

四、注意事项

  1. 防火墙和网络

    • 确保MySQL端口(默认3306)在主服务器和从服务器之间开放。
  2. 数据一致性

    • 在主服务器上进行备份和获取二进制日志位置时,确保没有写入操作,或者选择适当的备份策略(如使用Percona XtraBackup等工具)。
  3. 权限和安全性

    • 复制用户应仅授予必要的权限,并且密码应足够复杂。
    • 使用SSL加密复制连接以增加安全性。
  4. 监控和故障排查

    • 定期监控复制状态,及时发现并解决问题。
    • 使用工具如pt-table-checksumpt-table-sync来检查和修复数据不一致。

五、总结

MySQL主从复制是一个强大且灵活的功能,可以显著提高数据库的可用性和可扩展性。通过遵循上述步骤,您可以轻松地在Linux下实现MySQL的主从复制。重要的是,要仔细规划配置,确保网络连通性和安全性,以及定期监控复制状态以维护数据一致性。

标签:主从复制,mysql,linux,server,复制,MASTER,MySQL,服务器
From: https://blog.csdn.net/qq_44734705/article/details/144462632

相关文章

  • centos 7 普通用户安装mysql8 安装包2. 使用lsb_release a命令1. 使用cat /etc/redhat
       [root@bigdatapackage333]#rpm-qa|grepmariadbmariadb-libs-5.5.64-1.el7.x86_64[root@bigdatapackage333]#rpm-qa | grepmysql[root@bigdatapackage333]#[root@bigdatapackage333]#rpm-e--nodepsmariadb-libs-5.5.64-1.el7.x86_64[root@bigdatapack......
  • 我们来学mysql -- 事务并发之不可重复读(原理篇)
    事务并发之不可重复读题记不可重复读系列文章题记在《事务之概念》提到事务对应现实世界的状态转换,这个过程要满足4个特性这世界,真理只在大炮射程之类,通往和平的道路,非“常人”可以驾驭一个人生活按部就班,人多起来,难免鸡飞狗跳同理现实世界的状态转换映射到数据库,满......
  • 我们来学mysql -- 隔离级别简介(原理篇)
    隔离级别别记题记隔离级别后记系列文章别记烧香拜佛要是有用,还需要我们来过吗…从个人情感角度,巴沙尔·阿萨德辜负了东大对他的期望他可是从正门踏进了灵隐寺俄乌战争即将进入第三年(此时202412)此时的加沙正成为以色列建国初期所宣扬的无人之地,何止!是人间炼狱此时南......
  • 【Linux】:多线程(POSIX 信号量 、基于环形队列的生产消费者模型)
    ......
  • 使用xtrabackup实现mysql定时热备份
    1、原理:方案选型mysqldump是逻辑备份解决方案,备份恢复速度慢,工具获取方便,数据量少推荐主要用途是导出数据xtrababckup是物理热备份,速度快,适合大数据量xtrababckup支持innodb和MyISAM存储引擎,支持集成shell脚本,支持管道传输InnoDB支持完整和增量备份,不上只读锁MyISAM只有全量......
  • MYSQL安装和版本选择
    下载mysql下载地址:https://dev.mysql.com/downloads/mysql/系统版本选择进入后如图,需要选择版本与系统版本selectVersion:选择版本mysql官网只支持部分版本,如果需要其他版本,需要在其他地方下载selectOperatingSystem:选择系统平台如windows,linux,macOs等需要安装到的......
  • 手残党都可以学会的mysql手工注入
    1.布尔&报错&延迟1.1布尔盲注(需要页面正常回显)通过判断页面上的某个元素变化,来判断是否注入成功#检查当前数据库名称的长度是否为7。andlength(database())=7;#检查当前数据库名称的第一个字符是否为'p'。andleft(database(),1)='p';#检查当前数据库名称的前两......
  • 【MySQL运维】mysql数据被误删的恢复方案
    前言在数据库管理过程中,数据误删是一个常见且令人头疼的问题。无论是由于人为错误还是系统故障,数据丢失都可能导致严重的后果。幸运的是,MySQL提供了多种方法来恢复误删的数据。一、使用备份恢复原理备份是最常见的数据恢复方法。通过定期备份数据库,可以在数据丢失时快速恢复到......
  • linux web终端wetty食用方法
    学校有些机房电脑性能贼垃但又不得不去那些机房上课我也不想带电脑,于是弄台廉价的服务器本来想拿个公网ip配frp连我电脑完事想到vim是在终端中运行的编辑器于是想弄个web终端然后就找到了wetty别问为什么不用面板的终端面板终端没一个好用官网:https://github.com/butlerx/w......
  • 一条 SQL 语句在 MySQL 中的执行过程
    一条SQL语句在MySQL中的执行过程当一条SQL语句被提交到MySQL时,它会经历多个步骤,包括解析、优化、执行等。以下以SELECT语句为例,详细描述整个执行流程。1.客户端与服务器连接客户端通过TCP/IP、Unixsocket等协议与MySQL服务器建立连接。MySQL服务器验证客户......