欢迎光临
我们一直在努力

MySQL高可用架构实战:备份恢复、主从复制、读写分离与MHA

MySQL高可用架构实战:备份恢复、主从复制、读写分离与MHA

一、MySQL备份与恢复

1.1 备份分类
  • 物理备份:直接复制数据库文件(冷备、热备、温备)。
  • 逻辑备份:导出SQL语句(如mysqldump)。
  • 增量备份:基于二进制日志。
1.2 冷备份(物理冷备)

systemctl stop mysqld
tar czf /backup/mysql-backup-$(date +%F).tar.gz /var/lib/mysql
systemctl start mysqld
# 恢复时停止服务,解压覆盖,修改权限后启动

1.3 逻辑备份(mysqldump)

# 备份单个数据库
mysqldump -u root -p school > /backup/school.sql
# 备份多个数据库
mysqldump -u root -p –databases school mysql > /backup/school_mysql.sql
# 备份所有数据库
mysqldump -u root -p –all-databases > /backup/all.sql
# 备份指定表
mysqldump -u root -p school student > /backup/student.sql

  • 恢复:mysql -u root -p school < /backup/school.sql 或在mysql内 source /backup/student.sql
1.4 增量备份(基于binlog)
  • 启用binlog:log-bin=mysql-bin
  • 完整备份后刷新日志:mysqladmin flush-logs
  • 后续所有变更记录在新binlog中。
  • 恢复时:先恢复完整备份,再使用 mysqlbinlog 重放增量binlog。
  • mysqlbinlog mysql-bin.000003 | mysql -u root -p

    二、主从复制

    2.1 核心原理
    • binlog:主库记录所有变更。
    • IO线程:从库请求并接收binlog,写入relay log。
    • SQL线程:从库重放relay log。
    2.2 配置步骤(基于5.7)

    主库:

    [mysqld]
    server-id=1
    log-bin=master-bin
    log-slave-updates

    创建复制用户:

    GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.%' IDENTIFIED BY '123456';
    FLUSH PRIVILEGES;
    SHOW MASTER STATUS; — 记录File和Position

    从库:

    [mysqld]
    server-id=2
    relay-log=relay-log-bin
    relay-log-index=slave-relay-bin.index

    执行:

    CHANGE MASTER TO
    MASTER_HOST='主库IP',
    MASTER_USER='myslave',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='master-bin.000001',
    MASTER_LOG_POS=604;
    START SLAVE;
    SHOW SLAVE STATUS\\G; — 查看两个YES

    三、读写分离(Amoeba中间件)

    3.1 原理
    • 应用连接Amoeba代理(端口8066)。
    • Amoeba解析SQL,写操作(INSERT/UPDATE/DELETE)发往主库池,读操作(SELECT)发往从库池,并轮询负载均衡。
    3.2 配置要点
    • 安装JDK,解压Amoeba。
    • 修改 conf/amoeba.xml:设置客户端认证账号、defaultPool、writePool、readPool。
    • 修改 conf/dbServers.xml:定义后端MySQL节点(主库和从库地址、用户名密码、库名)。
    • 启动Amoeba:/usr/local/amoeba/bin/amoeba start
    • 客户端连接Amoeba:mysql -u amoeba -p123456 -h amoeba_ip -P 8066

    四、MHA高可用

    4.1 MHA概述
    • 解决MySQL主从复制中主库单点故障,实现自动故障转移(0-30秒)。
    • 组成:Manager(管理节点)+ Node(数据节点)。
    • 原理:监控主库,宕机后从候选从库中选举新主库,并让其他从库指向新主库。
    4.2 实验环境(一主两从)
    主机名IP角色
    mysql-master 192.168.108.131 主库,安装node
    mysql-slave01 192.168.108.132 从库(候选主),安装node
    mysql-slave02 192.168.108.133 从库,安装node
    mha 192.168.108.130 管理节点,安装node+manager
    4.3 配置步骤
  • 配置主从复制(如上)。
  • 所有节点安装MHA node,manager节点安装MHA manager。
  • 配置SSH免密登录(manager到所有节点,所有节点之间互相免密)。
  • 准备虚拟IP脚本(master_ip_failover),设置VIP如 192.168.108.200。
  • 创建MHA配置文件 /etc/masterha/app1.cnf,指定用户、密码、复制用户、日志路径、VIP脚本等。
  • 检查SSH和复制状态:
  • masterha_check_ssh –conf=/etc/masterha/app1.cnf
    masterha_check_repl –conf=/etc/masterha/app1.cnf

  • 手动在主库绑定VIP:ifconfig ens33:1 192.168.108.200/24
  • 启动MHA:
  • nohup masterha_manager –conf=/etc/masterha/app1.cnf \\
    –remove_dead_master_conf –ignore_last_failover \\
    < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

    4.4 故障模拟与恢复
    • 停止主库MySQL:systemctl stop mysql
    • MHA自动切换,VIP漂移到候选从库(slave01),其他从库重新指向新主库。
    • 原主库恢复后,重新配置为从库指向新主库。

    五、补充:MySQL 5.7源码编译安装

    • 安装依赖:gcc, cmake, ncurses-devel, bison等。
    • 下载MySQL源码和boost库。
    • cmake指定安装路径、字符集、存储引擎、boost路径等。
    • make && make install
    • 初始化数据库:mysqld –initialize-insecure –user=mysql
    • 配置systemd服务文件,设置环境变量。
    赞(0)
    未经允许不得转载:171主机测评 » MySQL高可用架构实战:备份恢复、主从复制、读写分离与MHA
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址