Linux 部署MySQL 一主一从一备

时间:2019-11-25
本文章向大家介绍Linux 部署MySQL 一主一从一备,主要包括Linux 部署MySQL 一主一从一备使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

主服务器搭建

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

  2. 在主服务器(master)下找到mysql配置文件。
    Window下为my.ini(一般在C:\ProgramData\MySQL\MySQL 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'@'10.104.114.116' IDENTIFIED BY 'luckytea';
# 从权限 赋权
GRANT REPLICATION SLAVE ON *.* TO 'luckytea'@'10.104.132.33' 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 status\G;

从服务器搭建

  1. 在从服务器(slave)下找到mysql配置文件。
    Window下为my.ini(一般在C:\ProgramData\MySQL\MySQL 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 status\G;
# 请确认 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 status\G;
 方法二:重新进行一次同步操作
  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 status\G;
  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,但是脚本需要自己编写,较复杂

原文地址:https://www.cnblogs.com/hyry/p/11927586.html