博客
关于我
mysql主从复制及故障修复
阅读量:789 次
发布时间:2023-02-11

本文共 2219 字,大约阅读时间需要 7 分钟。

主MySQL数据库的配置

在三台主机(chen2/10.110、chen3/10.120、chen4/10.130)中安装MySQL数据,其中chen2/10.110作为主MySQL服务器,其余两台作为从MySQL服务器。以下将详细介绍主MySQL数据库的部署和配置过程。

部署MySQL数据库

在主MySQL服务器上部署MySQL数据库脚本,可以通过一键部署脚本完成对应版本的MySQL数据库安装。安装完成后,系统将自动配置数据库环境,包括数据目录、日志文件和socket文件等。

修改MySQL配置文件

在主MySQL服务器上修改配置文件,开启二进制日志功能,并进行其他必要的配置。具体操作如下:

  • 打开配置文件:vim /etc/my.cnf.d/mysql-server.cnf

  • 添加以下内容到配置文件末尾:

    [mysqld]server-id=1skip_name_resolve=1log-bin=somepath/mysql.sock  # 根据实际路径调整datadir=somepath/mysql  # 根据实际路径调整log-error=somepath/mysql.log  # 根据实际路径调整pid-file=/tmp/mysql.sock

    确保server-id设置为主机的IP地址,以避免与其他主机冲突。

  • 保存并退出编辑器。

  • 创建MySQL账号和密码

    为了实现主从数据库的复制功能,需要在主MySQL服务器上创建一个具有复制权限的账号。以下是具体操作步骤:

  • 使用MySQL命令创建账号:
    CREATE USER 'repluser'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  • 为账号授予复制权限:
    GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'%;
  • 查看账号信息:
    SELECT user, host, authentication_string FROM mysql.user;
  • 验证配置

    完成配置后,需要验证主MySQL服务器的二进制日志是否正常运行。可以通过以下命令查看二进制日志状态:

    SHOW MASTER STATUS\G

    从MySQL数据库的配置

    从MySQL数据库的配置与主MySQL服务器有所不同,主要区别在于从服务器的读写权限设置和复制功能的开启。

    修改从MySQL配置文件

    在从MySQL服务器上修改配置文件,开启二进制日志功能,并设置为仅读模式。具体操作如下:

  • 打开配置文件:vim /etc/my.cnf
  • 添加以下内容到配置文件末尾:
    [mysqld]server-id=2skip_name_resolve=1log-bin=somepath/mysql.sock  # 根据实际路径调整datadir=somepath/mysql  # 根据实际路径调整log-error=somepath/mysql.log  # 根据实际路径调整pid-file=/tmp/mysql.sockread_only=1
  • 保存并退出编辑器。
  • 配置主从复制

    在从MySQL服务器上配置主从复制,确保从服务器能够连接到主服务器并启动复制线程。具体操作如下:

  • 使用MySQL命令设置从服务器的主服务器信息:

    CHANGE MASTER TO     MASTER_HOST='192.168.10.110',    MASTER_USER='repluser',    MASTER_PASSWORD='123456',    MASTER_PORT=3306,    MASTER_LOG_FILE='chen2-bin.000002',    MASTER_LOG_POS=157;
  • 启动从服务器的复制线程:

    START REPLICA;
  • 重启MySQL服务:

    service mysqld restart
  • 验证从节点状态

    验证从节点是否正常接收数据。可以通过以下命令查看从节点的复制状态:

    SHOW REPLICA STATUS\G

    此外,还可以查看当前活跃的连接线程:

    SHOW PROCESSLIST;

    故障修复

    测试阻塞从节点

    在实际运行中,可能会遇到从节点因数据冲突或网络问题而阻塞的情况。为了避免这种情况,可以在从节点上设置仅读权限,防止写入操作导致的冲突。

  • 查看当前从节点的读写状态:

    SHOW VARIABLES LIKE 'read_only%';
  • 确认从节点上设置为仅读模式:

    SELECT @@global.read_only;
  • 如果需要修改,可以通过以下命令设置为可写模式:

    SET GLOBAL read_only=0;
  • 恢复阻塞节点

    当从节点出现阻塞时,可以采取以下步骤进行恢复:

  • 关闭复制线程:

    STOP REPLICA;
  • 删除冲突数据:

    DELETE FROM table_name WHERE ...;  # 根据具体情况调整SQL语句
  • 重启复制线程:

    START REPLICA;
  • 查看从节点状态,确保复制已恢复:

    SHOW REPLICA STATUS\G
  • 总结

    通过以上步骤,可以完成主MySQL数据库的配置以及从MySQL数据库的设置,实现主从数据库的数据复制功能。在实际应用中,建议定期备份数据并对配置文件进行验证,以确保数据库运行稳定。

    转载地址:http://mtbfk.baihongyu.com/

    你可能感兴趣的文章
    mysql中json_extract的使用方法
    查看>>
    mysql中json_extract的使用方法
    查看>>
    mysql中kill掉所有锁表的进程
    查看>>
    mysql中like % %模糊查询
    查看>>
    MySql中mvcc学习记录
    查看>>
    mysql中null和空字符串的区别与问题!
    查看>>
    MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
    查看>>
    MYSQL中TINYINT的取值范围
    查看>>
    MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
    查看>>
    Mysql中varchar类型数字排序不对踩坑记录
    查看>>
    MySQL中一条SQL语句到底是如何执行的呢?
    查看>>
    MySQL中你必须知道的10件事,1.5万字!
    查看>>
    MySQL中使用IN()查询到底走不走索引?
    查看>>
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>
    MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
    查看>>
    mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>
    MySQL中地理位置数据扩展geometry的使用心得
    查看>>