MySQL主从备份

数据库的裸奔时代

如何解决单点问题

MySQL主从复制架构

  1. 主库将变更写入到主库的binlog
    > 一些MySQL版本并不会开启二进制日志,所以一定要检查是否开启
    > 增量备份也需要开启二进制日志
  2. 从库的IO进程读取主库的binlog内容存储到relay log日志中
  3. 从库的SQL进程读取relay log日志中内容在从库中重放

MySQL主从配置步骤

  1. 配置主从数据库服务器参数
    > 主服务器配置
log_bin = /data/mysql/sql_log/mysql-bin
server_id= 100  ##建议用ip的最后一段

从服务器配置

log_bin = /data/mysql/sql_log/mysql-bin
server-id = 101
relay_log = /data/mysql/sql_log/relay-bin
read_only = on
super_read_only = on
skip_slave_sart = on
master_info_repository = TABLE
relay_log_info_repository = TABLE
  1. 在Master服务器上创建用于复制的数据库账号
    用于IO进程连接master服务器获取binlog日志
    需要replication slave权限
create user 'repl'@`ip段` identified by 'password';
grant replication slave on *.* to 'repl'@`ip段`;
  1. 备份master服务器上的数据并初始化slave服务器数据

    建议主从数据库服务器采用相同的MySQL版本
    建议使用全库备份的方式初始化slave数据
    mysqldump --master-data=2 -uroot-p -A --single-transcation -R --triggers --routines --all-databases > all.sql

  2. 启动基于日志点的复制链路

change master to 
    master_host = 'master_host_ip',
    master_user = 'repl',
    master_password = 'password',
    master_log_file = 'mysql_log_file_name',
    master_log_pos = xxx;
start slave;
show slave status \G;
#查看SLAVE_IO_Running 和SLAVE_SQL_Running的状态
  1. 启动基于GTID的复制链路
gtid_mode = on
enforce_gtid-consistency
log-slave-updates = on

change master to 
    master_host = 'master_host_ip',
    master_user = 'repl',
    master_password = 'password',
    master_auto_position = 1

gtid复制的限制
– 无法再使用create table .. select 简历表
– 无法在事务中使用create temporary table建立临时表
– 无法使用关联更新同时更新事务表和非事务表

引入复制后的数据库架构

虚拟ip(vip)

就是一个未分配给真实主机的ip,也就是说对外提供服务器的主机除了有一个真实ip外还有一个虚ip

设置虚拟ip有很多种方法

主主复制配置调整

保证只有一个主提供服务 另一个提供只读的服务
master 数据库配置修改

auto_increment_increment = 2
auto_increment_offset = 1
1,3,5,7,9...

主备数据库配置修改

auto_increment_increment = 2
auto_increment_offset = 2
2,4,6,8,10...

keepalived简介

keeplived 基于arrp网络协议
yum install keepalived y
vim /etc/keepalived/keeplived.conf
chmod a+x /etc/keepalived/check_mysql.sh
systemctl keepalived start

All posts

Other pages

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注