zoukankan      html  css  js  c++  java
  • Linux 部署MySQL 一主一从一备

    主服务器搭建

    1. 准备三台服务器,一主一从一备

    2. 在主服务器(master)下找到mysql配置文件。
      Window下为my.ini(一般在C:ProgramDataMySQLMySQL Server 5.7下); Linux下为/etc/my.cnf

    3. 在[mysqld]下添加如下配置

    # 服务的唯一编号
    server-id=1
    # 开启mysql binlog功能 slave会基于此log-bin来做replication
    log-bin=master-bin
    log-bin-index=master-bin.index
    # binlog记录内容的方式,记录被操作的每一行
    binlog_format=ROW
    # 减少记录日志的内容,只记录受影响的列
    binlog_row_image=minimal
    # 指定需要复制的数据库名
    # 如果没有指定会监听复制所有的库,新建库操作也会复制,反之只监听复制指定的库
    binlog-do-db=test
    #不用于master-slave的具体数据库
    binlog_ignore_db=mysql 
    binlog_ignore_db=information_schema
    
    1. 授权
      我们需要给slave配置一个用户/密码的权限
    # 只读赋权
    GRANT SELECT ON *.* TO 'lucky'@'slave服务器IP' IDENTIFIED BY 'luckytea';
    # 从权限 赋权
    GRANT REPLICATION SLAVE ON *.* TO 'luckytea'@'slave服务器IP' IDENTIFIED BY 'luckytea';
    # 刷新权限
    FLUSH PRIVILEGES;
    
    1. 重启mysql
    系统 命令
    Linux service mysqld restart;
    Window net stop mysql;
    net start mysql;

    6、 查看主服务器状态
    注意!更改配置或者数据库重启,主库日志的Position会改变,从库需要重新配置

    # 确保主从库数据库结构一致
    # 查看server-id 是否和配置一致,从服务器id需要大于主服务器id
    show variables like '%server_id%'
    # 将下列结果中 File和 Position 记录后交给从服务器搭建人员
    show master statusG;
    

    从服务器搭建

    1. 在从服务器(slave)下找到mysql配置文件。
      Window下为my.ini(一般在C:ProgramDataMySQLMySQL Server 5.7下); Linux下为/etc/my.cnf
    2. 在[mysqld]下添加如下配置
    log-bin=relay-bin
    #先全局查找注释原来的server-id
    server-id=2
    #保存配置进行重启查看server-id
    show variables like '%server_id%';
    
    1. 进入slave的mysql命令行 执行
    CHANGE MASTER TO
    MASTER_HOST='master所在服务器的IP',
    MASTER_USER='master授权的账号',
    MASTER_PASSWORD='master授权的密码',
    MASTER_LOG_FILE='master的日志文件名',
    MASTER_LOG_POS=master的日志所在位置;
    
    1. 执行服务 并查看状态
    # 关闭防火墙或者打开端口权限
    # 查看server-id 是否和配置一致,从服务器id需要大于主服务器id
    show variables like '%server_id%'
    start slave;
    show slave statusG;
    # 请确认 Master_Log_File = 主服务器的File, Read_Master_Log_Pos = 主服务器的Position
    # 请确认 Slave_IO_Running = Slave_SQL_Running = yes
    
    1. 如果Slave_SQL_Running = No
    方法一:说明从库执行了错误操作,请进行回滚
     stop slave ;
     set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
     start slave ;
     show slave statusG;
     方法二:重新进行一次同步操作
      stop slave ;
      CHANGE MASTER TO
    MASTER_HOST='master所在服务器的IP',
    MASTER_USER='master授权的账号',
    MASTER_PASSWORD='master授权的密码',
    MASTER_LOG_FILE='master的日志文件名',
    MASTER_LOG_POS=master的日志所在位置;
    start slave;
    show slave statusG;
    
    1. 修改主库数据库,如从库变化,则配置成功

    主主互备

    主主互备:服务器1是服务器2的主服务器,服务器2也是服务器1的主服务器,互相进行主从备份。主从备份过程参考如上。
    注意,为了避免主键id冲突,需要加入如下配置
    主服务器1 在/etc/my.cnf下[mysqld]加入如下语句,使得新增id全为奇数

    # 自增id起始值
    auto_increment_offset=1
    # 每次自增数字
    auto_increment_increment=2
    

    主服务器2 在/etc/my.cnf下[mysqld]加入如下语句,使得新增id全为偶数

    # 自增id起始值
    auto_increment_offset=2
    # 每次自增数字
    auto_increment_increment=2
    

    注意,本教程未考虑灾备和脑裂的情况,暂行方案是连接客户端时捕获异常,切换ip连接。
    灾备+脑裂 推荐使用keepaliver,但是脚本需要自己编写,较复杂
    只灾备不考虑集群,可以先上nginx,用upstream的backup做简单灾备 参考官网文档

  • 相关阅读:
    1082 射击比赛 (20 分)
    1091 N-自守数 (15 分)
    1064 朋友数 (20 分)
    1031 查验身份证 (15 分)
    1028 人口普查 (20 分)
    1059 C语言竞赛 (20 分)
    1083 是否存在相等的差 (20 分)
    1077 互评成绩计算 (20 分)
    792. 高精度减法
    791. 高精度加法
  • 原文地址:https://www.cnblogs.com/hyry/p/11927586.html
Copyright © 2011-2022 走看看