mysql 备份 和半同步

一,自带的软件备份mysqldump

1.mysqldump -uroot -p123456 --single-transaction --master-data=2 --all-databases > /root/date +%F.sql
--single-transaction,想当于启了镜像,数据库可正常写入。
--master-data=2 记录备份那一时刻的二进制日志的位置,并且注释掉,1是不注释的用于二进制日志恢复
--all-databases 备份全部数据库,--databases cs1 只备份cs1数据库,可以备份多个,空格隔开
head -30 2019-09-06.sql |grep MASTER_LOG_FILE ##查看二进制文件所在位置

2.使用二进制文件,生成恢复文件
二进制开启方法,在/etc/my.cnf 里添加 log_bin=(这里是路径名加名称),现网建议用网络盘,这个文件非常重要
先在刚才的备份过的数据里再写点数据

这里我用mysql -uroot -p123456 -e ‘show master status;‘ 查看了二进制文件位置已经发生了变化,应为我增添了数据,我们在数据库做的操作都会记录在二进制日志文件当中,如果数据库蹦了,我们用刚才备份记录的位置对二进制文件进行恢复,就能取得刚才备份过后到数据库蹦的这一时间的数据,在加上先前的备份就可以取得完整的数据
mysqlbinlog --start-position=245 /var/lib/mysql/log_bin.000008 >logbin.sql
#指定位置,二进制文件位置,恢复到那个目录起什么名称
3.恢复数据库

2019-09-06.sql 是第一次完整备份的,先恢复这,再恢复后面二进制文件生成的备份数据。

这样就完成数据完整备份恢复了,这种自带的之适用于小型备份,1G以内的

二.使用xtrabackup做完整和增量备份

1.先安装
yum install percona-xtrabackup.x86_64 -y
#软件在epel源里,在部署好epel源
2.完整备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password="" --backup /root

上图是软件正确执行的返回结果,成功后root 目录下会有个以日期命令的目录,里面就是备份了
3.增量备份
innobackupex --user=root --password= --incremental /root/ --incremental-basedir=/root/2019-09-06_11-33-50
#--incremental /root/ 指定备份的路径 --incremental-basedir= 这后面写上次备份的目录
4.对数据做同步,合并增量备份
innobackupex --apply-log --redo-only /root/2019-09-06_11-33-50/
#因为备份需要时间,备份的过程当中新的事物可能没有同步到数据里,这个命令就是把当前的新事物同步到数据里,如果是最后一个备份,可做可不做,这边后面还有一个增量备份,所用必须要做
innobackupex --incremental --apply-log --redo-only /root/2019-09-06_11-33-50/ --incremental-dir=/root/2019-09-06_11-40-39
#将后面增量备份的数据附加到完整数据里,这样完整数据就包含了第二次备份的数据了,恢复时只恢复完整数据即可,命令第一个路径是完整备份的路径
5.恢复
innobackupex --defaults-file=/etc/my.cnf --copy-back /root/2019-09-06_11-33-50/
#直接恢复完整备份即可
ps 恢复的时候,mysql的根目录不能有文件,需要删了,恢复完了注意修改属主,如果启动不起来看看sulinux 是否关闭

三.半同步

1.先配置主节点配置文件
vim /etc/my.cnf
[mysqld]
skip_name_resolve=ON ##开启跳过名称解析
innodb_file_per_table=ON ##开启独立表空间
server_id=1 ##ID 唯一
log_bin=log-bin ##开启二进制日志 必须的
rpl_semi_sync_master_enabled = ON #开机启动半同步,如果模块还没安装,先注释掉
从节点
[mysqld]
skip_name_resolve=ON
innodb_file_per_table=ON
server_id=2
relay_log=relay-log ##开启中继日志,从节点必须开的
rpl_semi_sync_slave_enabled = ON ; #开机启动半同步,如果模块还没安装,先注释掉
2.安装半同步模块
INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘;
#安装模块
set global rpl_semi_sync_master_enabled = ON;
#设置半同步状态为启动 注意如果要让它自动启动,要把它写到配置文件里
SHOW GLOBAL VARIABLES LIKE ‘%semi%‘;
#查看状态

从节点
配置下主从
CHANGE MASTER TO MASTER_HOST=‘192.168.0.14‘, MASTER_USER=‘rep‘, MASTER_PASSWORD=‘123456‘, MASTER_LOG_FILE=‘log_bin.000002‘, MASTER_LOG_POS=245;
INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘;
#安装从节点模块
set global rpl_semi_sync_slave_enabled = ON ;
#启动模块
SHOW GLOBAL VARIABLES LIKE ‘%semi%‘;
#看下启动模块启动状态

start slave;##启动主从复制
show slave status\G; #查看主从复制状态
3.查看状态
SHOW GLOBAL STATUS LIKE ‘%semi%‘

status 状态 为 ON 说明 半同步配置成功

原文地址:https://blog.51cto.com/13620944/2436127

时间: 2024-08-02 00:35:56

mysql 备份 和半同步的相关文章

MySQL主从复制:半同步、异步

MySQL主从复制:半同步.异步 大纲 前言 如何对MySQL进行扩展? MySQL Replication WorkFlow MySQL主从复制模式 实战演练 MySQL异步复制实现 MySQL半同步复制实现 实验中的思考 总结 前言 本篇我们介绍MySQL Replication的相关内容, 我们首先介绍MySQL CLuster的实现原理和如何一步步构建一个MySQL Replication Cluster 看懂本文需要了解: MySQL基本操作,MySQL日志类型及其作用 如何对MySQ

mysql主从复制、半同步复制、主主复制、及从库升级为主库讲解

一.主从复制结构 binlog dump --- io thread  ---  relay log ---- sql thread 1.总体讲解 主从复制时是异步的 半同步是在主从架构下安装插件来达到半同步的 半同步的优点:保证至少一个节点的数据和主节点的数据一致,缺点影响性能 导致主从不同步的原因是 现在的服务器都是单核多线程或者多核多线程,导致主节点可以同时执行多条读写操作,而记录二进制日志则必须按顺序有先后的记录,从节点在一条一条复制过去,生成中继日志,再执行语句. 多个库复制的话,可以

mysql主从之半同步复制和lossless无损复制

一 MySQL 的三种复制方式 1.1 简介 asynchronous 异步复制 fully synchronous 全同步复制 Semisynchronous 半同步复制 从MySQL5.5 开始,MySQL 以插件的形式支持半同步复制. 1.2 异步复制(Asynchronous replication) MySQL 默认的复制是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash 掉了,此时主上已经提交的事务可

mysql主从复制异步半同步实例

建立mysql的复制 node1: mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+-----

Mysql 主从复制之半同步复制(基于gtid)

Mysql主从复制mysql主从复制原理:从库有两个线程IO线程和SQL线程1.从库的IO线程向主库的主进程发送请求,主库验证从库,交给主库IO线程负责数据传输;2.主库IO线程对比从库发送过来的master.info里的信息,将binlog文件信息,偏移量和binlog文件名等发送给从库3.从库接收到信息后,将binlog信息保存到relay-bin中,同时更新master.info的偏移量和binlog文件名4.从库的SQL线程不断的读取relay-bin的信息,同时将读到的偏移量和文件名写

MySQL主从复制、半同步复制和主主复制

同步,异步,半同步复制的比较: 同步复制:Master提交事务,直到事务在所有的Slave都已提交,此时才会返回客户端,事务执行完毕.缺点:完成一个事务可能会有很大的延迟. 异步复制:当Slave准备好才会向Master请求binlog.缺点:不能保证一些事件都能够被所有的Slave所接收. 半同步复制:半同步复制工作的机制处于同步和异步之间,Master的事务提交阻塞,只要一个Slave已收到该事务的事件且已记录.它不会等待所有的Slave都告知已收到,且它只是接收,并不用等其完全执行且提交.

MySQL 5.5 主从复制异步、半同步以及注意事项详解

大纲 一.前言 二.Mysql 基础知识 三.Mysql 复制(Replication) 四.Mysql 复制(Replication)类型 五.Mysql 主从复制基本步骤 六.Mysql 主从复制(异步) 七.Mysql 主从复制(半同步) 八.Mysql 复制工具 九.Mysql 复制注意事项 十.Mysql 复制过滤 一.前言 从这一篇博客开始我们就来学习mysql的高级课程,在前面的几篇博客我们讲解了mysql基础知识.mysql日志类型.mysql配置文件.mysql备份策略,这一篇

Mysql实现数据库主从复制、主主复制、半同步复制

--------------Mysql实现数据库主从复制架构---------------- 一.环境准备: centos系统服务器2台.一台用户做Mysql主服务器,一台用于做Mysql从服务器,配置好yum源.防火墙关闭.各节点时钟服务同步.各节点之间可以通过主机名互相通信 192.168.41.145   master 192.168.41.137  slave 二.准备步骤: 1.iptables -F && setenforce 清空防火墙策略,关闭selinux 2.①vim

Mysql的ssl主从复制+半同步主从复制

准备工作 1.主从服务器时间同步 [[email protected] ~]# crontab -e */30 * * * * /usr/sbin/ntpdate 172.16.0.1 &>/dev/null ? ? MariaDB(10以上版本)的编译安装 部署配置 2.mysql说明 (1) 主服务器 hostname:master ? ?IP:172.16.21.2 ? (1) 从服务器 hostname:master ? ?IP:172.16.21.3 ? (3) 数据目录 ? /m