返回顶部
首页 > 资讯 > 数据库 >初识MariaDB之3——MariaDB备份与还原
  • 638
分享到

初识MariaDB之3——MariaDB备份与还原

2024-04-02 19:04:59 638人浏览 泡泡鱼
摘要

一、基础知识数据的重要性无需多说,需要强调的是备份不是目的,能恢复才是目的,以下就Mariadb的一些概念进行说明。1.存储引擎的分类Mariadb5.1以后的版本,默认使用支持事务的InnoDB存储引擎,

一、基础知识

数据的重要性无需多说,需要强调的是备份不是目的,能恢复才是目的,以下就Mariadb的一些概念进行说明。

1.存储引擎的分类

Mariadb5.1以后的版本,默认使用支持事务的InnoDB存储引擎,之前的MyISAM存储引擎不支持事务,所谓事务型存储引擎,必须满足ACID原则:

A:atom(原子性),即一个事务中所有的操作必须全部完成执行或不执行

C:consistent(一致性),一个事务从开始到结束状态必须保持一致

I:isolation(隔离性),相同的数据不允许多个事务同时访问

D:durability (持久性),一经修改永久保存

2.事务隔离级别

InnoDB存储引擎分为4种隔离级别:

read-uncommitted:读未提交,可以读取其他会话未提交的事务,称为脏读

read-committed:读提交,可以读取其他会话已提交的事务,解决了脏读,引发不可重读

repeatable-read:可重读(默认),通过mvcC多版本机制让已发起的事务在提交前读取到的数据不发生变化,即使有其他会话已提交了事务,解决了不可重读,引发幻读

serializable:串行提交,在每个读的行上施加共享,在写的行上施加排他锁,解决了幻读,但是降低了并发

3.锁机制

行锁和表锁:依据粒度不同进行的划分,行锁的并发能力更强

读锁和写锁:读锁又称共享锁,施加读锁后所有事务只能进行读操作,不能再进行写操作;写锁又称排他锁,施加写锁后除当前事务外的其他事务不能进行读写操作

InnoDB存储引擎的行锁其实是加在索引上的

4.备份方式

数据库按照备份方法分为物理备份和逻辑备份,按照服务运行的状态又可以分为冷备和热备,对于不支持事物的MyISAM存储引擎,可以采用温备的方式进行(前提是必须使用lvm2或者Btree文件系统)。

物理备份:基于文件系统层的备份,优点是速度快,缺点是收到文件系统的约束

逻辑备份:备份时将数据库抽取为sql语句,优点是不受操作系统约束,可移植性强,缺点是当数据库较大时速度慢

二、使用工具

1.Mysqldump

--single-transaction 只对InnoDB引擎有效,用于保护数据的一致性,备份发起前,创建一个数据快照,直到备份结束都不会读取备份开始后提交的任何事务

--quick 配合--single-transaction加速大空间表备份

--all-databases(-A) 备份所有数据库

--where(-w) 按条件筛选要备份的数据

--databases(-B) 备份指定数据库,多个数据库之间用","分隔

--master-date=VALUE VALUE值有1|2两个值,如果是1会在备份出的文件添加一个CHANGE MASTER TO语句;如果是2会在备份出的文件添加一个CHANGE MASTER TO语句并注释,备份时建议使用该选项并将VALUE设置为2,原因是该参数备份时会携带当前时刻binlog日志的名称和位置,便于后期使用binlog恢复

初识MariaDB之3——MariaDB备份与还原初识MariaDB之3——MariaDB备份与还原

需要注意的是:mysqldump如果不带-A|-B选项默认不备份数据结构,在恢复时需要先创建数据库和表结构。单表恢复时只需要指定库名,不需要指定表名。

初识MariaDB之3——MariaDB备份与还原

2.mysqlbinlog

mysqlbinglog是一个客户端工具,它可以在其他终端以客户端的身份访问mysql服务器

--database=DATABASE 只适用于本地日志,查看二进制日志中指定数据库的信息(默认是所有库),导出二进制日志时建议使用该选项,否则还原时遇到该服务器上没有的数据库会报错,无法正常恢复

--start-position=N 查看指定位置以后的事务

--to-last-log(-t) 在MySQL服务器中请求的二进制日志结尾处不停止,而是继续打印直到最后一个二进制日志的结尾,如果发送给同一台服务器则会无限循环。需要同时使用--read-from-remote-server选项

--result-file=FILENAME 输出为指定文件,同重定向">"

三、操作步骤

本次实验操作系统版本为Centos7.4,数据库版本为Mariadb5.5.6,为避免干扰,关闭selinux和iptables,172.16.10.30/24为数据库服务器,172.16.10.40/24为备用服务器

1.冷备

(1)停止172.16.10.30/24的MariaDB服务

systemctl stop mariadb.service

(2)使用scp命令将172.16.10.30/24服务器上的hellodb数据库拷到172.16.10.40/24服务器datadir目录下

scp -r hellodb root@172.16.10.40:/var/lib/mysql/

(3)修改拷贝后172.16.10.40/24服务器hellodb数据库的属主和属组

chown -R mysql.mysql /var/lib/mysql/hellodb

(4)启动172.16.10.40/24的MariaDB服务

systemctl start mariadb.service

2.热备

(1)备份172.16.10.30/24上的数据库

mysqldump -uroot -ppassWord1! --database hellodb --master-data=2 --single-transaction --quick > /tmp/hellodb.sql

(2)根据/tmp/hellodb.sql中记录备份时使用的binlog及其位置将后续的sql语句备份到指定文件中,如果不止一个二进制日志后续以追加方式进行

mysqlbinlog --database hellodb --start-position=245  mysql-binlog.000005 > /tmp/binlog.sql

(3)将hellodb.sql和/tmp/binlog.sql传输到172.16.10.40/24服务器

scp -r {binlog.sql,hellodb.sql} root@172.16.10.40:/tmp/

(4)导入数据库过程无需记录二进制日志,把以先暂时关闭

MariaDB [hellodb]>set sql_log_bin=0

(5)在172.16.10.40/24服务器执行sql语句恢复数据库

mysql -uroot -p < hellodb.sql

mysql -uroot -p < binlog.sql

(6)开启二进制日志

MariaDB [hellodb]>set sql_log_bin=1

由于二进制日志的重要性,生产环境中建议将数据文件和二进制文件放在不同的磁盘上,如果有专门的日志服务器也可以远程同步二进制日志中的sql语句

mysqlbinlog  --read-from-remote-server --host=172.16.10.30 --port=3306  --user=root --password=password1! --start-position=733 --to-last-log  mysql-binlog.000005 --result-file=/tmp/bin_log.sql

3.温备

温备是针对不支持事务的MyISAM存储引擎采取的一种折中的备份方式,它通过lvm2的快照功能结合二进制日志,实现了几乎热备的效果

(1)将172.16.10.30/24服务器上的表同步到磁盘并且锁表

MariaDB [hellodb]> flush tables with read lock;

(2)刷新172.16.10.30/24服务器日志

MariaDB [hellodb]> flush logs;

初识MariaDB之3——MariaDB备份与还原初识MariaDB之3——MariaDB备份与还原

(3)记录172.16.10.30/24服务器上当前二进制日志文件及位置

[root@host3 ~]# mysql -uroot -ppassword1! -e 'show master status;' > /tmp/position.txt

(4)为datadir目录所在的设备创建一个快照

[root@host3 ~]# lvcreate -L 1G -s -n mylv_snap /dev/myvg/mylv

(5)解除读锁

MariaDB [hellodb]> unlock tables;

(6)挂载快照

mount /dev/myvg/mylv_snap /mnt/

(7)将备份拷贝至172.16.10.40/24服务器,并修改属主和属组

[root@host3 mysql]#scp -r /mnt/hellodb root@172.16.10.40:/data/mysql

[root@host3 mysql]#chown -R mysq.mysq /data/mysql/

(8)导入数据库过程无需记录二进制日志,把以先暂时关闭

MariaDB [hellodb]>set sql_log_bin=0

(9)将172.16.10.30/24上的二进制文件同步至172.16.10.40/24

[root@host4 mysql]# mysqlbinlog  --read-from-remote-server --host=172.16.10.30 --port=3306  --user=root --password=password1! --start-position=245 --to-last-log  mysql-binlog.000006 --result-file=/tmp/bin_log.sql

(10)执行快照之后的sql语句

[root@host4 mysql]# mysql -uroot -p'password1!' < /tmp/bin_log.sql

(11)开启二进制日志

MariaDB [hellodb]>set sql_log_bin=1

(12)删除172.16.10.30/24上的快照,至此操作完成

[root@host3 mysql]#umount /mnt/

[root@host3 ~]# lvremove mylv_snap

补充说明:

mysql5.6以后的版本中可以将远程服务器上的服务器复制到本地,其中mysqldump命令中的-raw(以binlog形式将远程服务器的日志存储到本地)和--stop-never(连接远程mysql服务器读取日志,知道服务器关闭后才会退出或被kill掉)选项在mariadb10.1中未找到,不确定是否有该功能


您可能感兴趣的文档:

--结束END--

本文标题: 初识MariaDB之3——MariaDB备份与还原

本文链接: https://lsjlt.com/news/42272.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 初识MariaDB之3——MariaDB备份与还原
    一、基础知识数据的重要性无需多说,需要强调的是备份不是目的,能恢复才是目的,以下就Mariadb的一些概念进行说明。1.存储引擎的分类Mariadb5.1以后的版本,默认使用支持事务的InnoDB存储引擎,...
    99+
    2024-04-02
  • 初识MariaDB之4——Xtrabackup备份与还原
    一、基础知识mysqldump是mysql自带的一个单线程的逻辑备份工具,当数据量很大时,使用mysqldump备份的时间会非常长,且无法做增量备份,xtrabackup是一款基于底层块复制、开源的备份工...
    99+
    2024-04-02
  • 初识MariaDB之10——MariaDB Galera Cluster
    一、背景介绍无论是采用binlog或者GTID的方式,其本质都是通过I/O_thread和sql_thread的形式进行的同步,因为无法避免复制延迟而饱受诟病,基于上述MariaDB引入了Galera Cl...
    99+
    2024-04-02
  • 初识MariaDB之1——MariaDB的安装
    一、MariaDB介绍MariaDB是Mysql在被Oracle收购后由原作者重新开发的一种关系型数据库程序,由于是同一个作者,所以在操作上与Mysql十分类似,版本也是相互对应,如:MariaDB5.5对...
    99+
    2024-04-02
  • 初识MariaDB之2——MariaDB多实例安装
    一、背景介绍MariaDB多实例就是在一台机器上开启多个不同的服务端口,运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的、互不干涉的服务,各个实例可以根据不同的配置文件设置相...
    99+
    2024-04-02
  • 初识MariaDB之7——MHA高可用
    一、背景介绍在传统的MySQL一主一从或一主多从结构中,主节点存在单点故障隐患,为了解决该故障,进而引入了MHA高可用的方式。MHA由manager和node两部分组成,manager可以安装在一个独立的服...
    99+
    2024-04-02
  • 初识MariaDB之5——主从复制原理及部署
    一、原理简介当前主流的数据库为了保证数据一致性,都采用支持事务类型的数据存储引擎,如innodb等,当一个事务提交后先写到事务日志中,在进行数据修改,并且将对数据产生任何影响的语句都记录在二进制日志中,主从...
    99+
    2024-04-02
  • 初识MariaDB之8——GTID主从复制
    一、背景介绍在MySQL5.6之前,主从复制是通过binlog和position实现的,当A主机宕机后,B主机成为新的主节点,此时在C主机上需要使用sql语句:CHANGE MASTER TO MASTER...
    99+
    2024-04-02
  • 初识MariaDB之6——半同步复制
    一、背景介绍MySQL主从复制能解决一定的单点故障问题,但其异步的工作特性存在一定的隐患,比如主节点事务提交后还未写入binlog,此时主节点故障后,但主节点认为事务已提交,从节点无法从主节点获取到该事务的...
    99+
    2024-04-02
  • 通过Docker Compose、Nginx和MariaDB实现PHP应用程序的数据备份与还原
    随着云计算和容器化技术的快速发展,越来越多的应用程序选择使用Docker来部署和运行。在Docker生态系统中,Docker Compose是一个非常受欢迎的工具,它可以通过一个单一的配置文件来定义和管理多个容器。本文将介绍如何使用Dock...
    99+
    2023-10-21
    Docker 数据备份 数据还原
  • MySQL备份与还原
    当数据文件发生损坏、MySQL服务出现错误、系统内核崩溃、计算机硬件损坏或者数据被误删等事件时,使用一种有效的数据备份方案,尽量挽回损失。 MySQL备份方案 逻辑备份 物理备份 全备份 增量备份 ... 逻辑备份 逻辑备份通过保存代表...
    99+
    2017-09-11
    MySQL备份与还原
  • Linux环境下MariaDB怎么备份与恢复
    在Linux环境下,可以使用以下方法备份和恢复MariaDB数据库: 备份MariaDB数据库: 使用mysqldump命令备份数...
    99+
    2024-05-06
    Linux MariaDB
  • 初识MariaDB之9——keepalive+GTID双主实现高可用
    一、背景介绍传统的主从复制架构下,尽管可以使用半同步的方式进行读写分离,但是主节点仍然存在单点隐患,在规模不大的情况下可以采用keepalive+双主的模式对主节点进行高可用保护,客户端通过VIP访问MyS...
    99+
    2024-04-02
  • 基于逻辑卷LVM的MySQL、mariadb数据库备份还原详细实现
    前提是数据库的数据是放在逻辑卷上的; 数据库数据和日志分开存放;正常情况下数据和日志是放在两个独立的磁盘上,如果是raid的话,那么就无所谓了。创建分区:    &...
    99+
    2024-04-02
  • 数据库的备份与还原系列——全备份+两增量的备份与还原
    场景:周日全备份,周一,周二增量备份,周三出现问题,数分钟后发现; 数据库的安装: yum install mariadb-server -y systemctl s...
    99+
    2024-04-02
  • SQL按月备份与还原
    ----------------------------------------------备份数据库----------------------------------------------------...
    99+
    2024-04-02
  • Cacti数据备份与还原
    一.备份1.将数据库文件导出来,执行以下命令:mysqldump -ucactiuser -pcactipw cacti > mysql123.sql     意思是:m...
    99+
    2024-04-02
  • Mongodb 数据备份与还原
    1. mongodb 数据库的备份与还原 1.1 mongodump 命令参数mongodump --helpUsage:mongodump <options> Export the conte...
    99+
    2024-04-02
  • MySQL 增量备份与还原
    说明:所谓增量备份,就是备份自上一次备份之后增加或改变的文件或内容。然而MySQL没有提供直接的增量备份方法,但是却可以通过MySQL的二进制日志间接实现增量备份。下面有关操作方法进行测试。..实验环境:装...
    99+
    2024-04-02
  • MySQL 备份与还原详解
    大纲 一、MySQL备份类型 二、MySQL备份都备份什么? 三、MySQL备份工具 四、MySQL备份策略 五、备份准备工作 六、备份策略具体演示 注:系统版...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作