8种手动和自动备份MySQL数据库的方法

☆樱花仙子☆ 提交于 2020-03-02 06:03:35

1、使用MySQLDump进行MySQL备份

mysqldump是MySQL内置的工具,允许用户将数据库指定不同的选项备份到文件、服务器,甚至是压缩gzip文件中。mysqldump实用程序灵活,快速,可执行高级备份,并接受各种命令行参数,用户可通过这些参数来更改备份数据库的方式。

Windows操作系统中的c:mysqlbin和Unix / Linux系统的/usr/local/mysql/bin中可找到mysqldump实用程序,将不同的参数传递给mysqldump实用程序,就可以以下形式使用。

mysqldump ---user [user name] ---password= [password]

[database name] > [dump file]

手动备份,只需要MySQL数据库的密码,使用p选项作为密码,将命令发送到mysqldump。例如,要备份所有数据库,请使用all databases:

Mysqldump –u USER –p –all-databases> /mnt/backups/all

 

2、使用MySQLpump进行MySQL备份

MySQLpump类似于mysqldump,生成支持并行化的逻辑备份。MySQLpump以并行方式为多个数据库执行所有与转储相关的操作,这大大减少了执行逻辑备份所花费的时间。

但是,MySQLpump不备份performance_schema,sys schema和ndbinfo,因此您必须使用 – databases来命名它们,它也不会转储用户帐户定义。

Shell> mysqlpump –exclude-databases=% --users

 

3、使用AutoMySQLBackup进行MySQL备份

AutoMySQLBackup可以备份服务器上的数据库,无论是单个、多个还是所有数据库。每个数据库都保存在一个单独的文件中,可以压缩该文件。如何执行呢?只需下载一个文件bash脚本,保存并根据自己的喜好自定义,使其可执行。

手动运行脚本:./automysqlbackup.sh.2.5

由于此脚本不支持将备份文件夹保存到远程位置,因此可能需要安装远程空间或使用其他技术远程上传文件。

 

4、使用mydumper进行MySQL备份

Mydumper是一个实用的软件程序,可以保证快速可靠的多线程MySQL备份过程。众所周知,Mydumper可以很好地处理大型数据库,提供并行性。用户需要创建如下所示的备份,然后将变量($)替换实变量,压缩文件夹并将其放在首选位置。

Mydumper

--database=$DB_NAME

--host=$DB_HOST

--user=$DB_PASS

--rows=500000

--compress

--build-empty-files

--compress-protocol

 

快速和自动备份

5、使用PHPMyAdmin进行MySQL备份

PHPMyAdmin是一个流行的应用程序,用于管理MySQL数据库,可以免费使用。很多服务提供商都使用PHPMyAdmin,有可能你自己都安装了却不自知。

备份数据库所需要做的就是打开PHPMyAdmin,选择文件或文件夹,然后单击“导出”链接,另外,也有“另存为”和“压缩”等在本地保存数据的选项。

 

6、使用文件系统快照进行MySQL备份

可以使用Veritas,LVM或ZFS等文件系统进行系统快照。要使用文件系统快照,从客户端程序执行具有读锁定的刷新表,然后从另一个shell执行运行mount vxfs snapshot。从第一个客户端解锁表,然后将文件从快照复制到目标文件夹,稍后卸载快照。

 

7、通过复制表文件进行备份

通过将表文件复制为*.MYD,*.MYI文件来备份MyISAM表,使用时需要停止服务器或锁定并刷新相关表:

FLUSH TABLES tbl_list WITH READ LOCK;

在数据库中复制文件时,读锁允许其他客户机继续查询表,而刷新则确保在备份过程之前将所有活动索引页写入磁盘。

无论完全备份还是增量备份,MySQL数据库备份都是必不可少的,而且随着数据库大小的增加,您可能还需要更改备份策略。

 

8、MySQL自动备份与ottomatik

Ottomatik使用备用降落伞为您的MySQL数据库提供了极好的备份解决方案。Ottomatik支持云或本地服务器,通过安装脚本,它会自动安装连接到Linux服务器的SSH密钥,还可以为备份作业选择多个服务器。

 

备份工具

rsync:一个快速的单向增量备份和镜像工具(LCTT 译注:rsync 应是双向的)。常用于复制一个数据仓库到线下存储,可以选择通过SSH或stunnel的加密连接。

 

rdiff-backup:另一个有效利用带宽的增量备份工具。管理两个连续快照之间的差分。

 

duplicity:一个加密的增量备份工具。使用GnuPG加密备份,并通过SSH上传到远程服务器。

 

数据库备份有四种类型,分别应用于不同的场合?

  • 完全备份 这是大多数人常用的方式,它可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但它需要花费更多的时间和空间,所以,一般推荐一周做一次完全备份;

     

  • 事务日志备份 事务日志是一个单独的文件, 它记录数据库的改变, 备份的时候只需要复制自上次备份以来对数据库所做的改变, 所以只需要很少的时间。 为了使数据库具有鲁棒性,推荐每小时甚至更频繁的备份事务日志;

     

  • 差异备份 也叫增量备份。它是只备份数据库一部分的另一种方法,它不使用事务日志,相反,它使用整个数据库的一种新映象。它比最初的完全备 份小,因为它只包含自上次完全备份以来所改变的数据库。它的优点是存储和恢复速度快。推荐每天做一次差异备份;

     

  • 文件备份 数据库可以由硬盘上的许多文件构成。如果这个数据库非常大,并且一个晚上也不能将它备份完,那么可以使用文件备份每晚备份数据库 的一部分。由于一般情况下数据库不会大到必须使用多个文件存储,所以这种备份不是很常用;

 

常见问题  :

1. 怎么备份数据的,包括数据库备份?

回答:在生产环境下,不管是应用数据、还是数据库数据首先在部署的时候就会有主从架构,这本身就是是属于数据的热备份;

其实考虑冷备份,用专门一台服务器做为备份服务器,比如可以用rsync+inotify配合计划任务来实现数据的冷备份,如果是发版的包备份,正常情况下有台发布服务器,每次发版都会保存好发版的包。

2.热备份和冷备份区别?

    冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将要害性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。

      热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。所以,假如你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。


常见问题 : 

1.mysql的innodb如何定位锁问题:
在使用 show engine innodb status检查引擎状态时,发现了死锁问题
在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY引擎)

innodb_trx                           ## 当前运行的所有事务
innodb_locks                       ## 当前出现的锁
innodb_lock_waits               ## 锁等待的对应关系
mysql如何减少主从复制延迟:

如果延迟比较大,就先确认以下几个因素:

1. 从库硬件比主库差,导致复制延迟

2. 主从复制单线程,如果主库写并发太大,来不及传送到从库就会导致延迟。更高版本的mysql可以支持多线程复制

3. 慢SQL语句过多

4. 网络延迟

5. master负载

主库读写压力大,导致复制延迟,架构的前端要加buffer及缓存层

6. slave负载

一般的做法是,使用多台slave来分摊读请求,再从这些slave中取一台专用的服务器

只作为备份用,不进行其他任何操作.另外, 2个可以减少延迟的参数:

–slave-net-timeout=seconds 单位为秒 默认设置为 3600秒

#参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据
–master-connect-retry=seconds 单位为秒 默认设置为 60秒

#参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试

通常配置以上2个参数可以减少网络问题导致的主从数据同步延迟

MySQL数据库主从同步延迟解决方案

最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行

还有就是主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit
= 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog

innodb_flushlog也可以设置为0来提高sql的执行效率。另外就是使用比主库更好的硬件设备作为slave
 

2.如何重置mysql root密码?

一、 在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法:

1、 在SHELL环境下,使用mysqladmin命令设置:

mysqladmin –u root –p password “新密码”              回车后要求输入旧密码


2、 在mysql>环境中,使用update命令,直接更新mysql库user表的数据:

Update  mysql.user  set  password=password(‘新密码’)  where  user=’root’;
flush   privileges;
注意:mysql语句要以分号”;”结束.

 

3、 在mysql>环境中,使用grant命令,修改root用户的授权权限。

grant  all  on  *.*  to   root@’localhost’  identified  by  ‘新密码’;
二、 如查忘记了mysql数据库的ROOT用户的密码,又如何做呢?方法如下:

1、 关闭当前运行的mysqld服务程序:service mysqld stop(要先将mysqld添加为系统服务)

2、 使用mysqld_safe脚本以安全模式(不加载授权表)启动mysqld 服务

/usr/local/mysql/bin/mysqld_safe --skip-grant-table &

3、 使用空密码的root用户登录数据库,重新设置ROOT用户的密码

#mysql  -u   root
Mysql> Update  mysql.user  set  password=password(‘新密码’)  where  user=’root’;
Mysql> flush   privileges;
 

3.怎么备份数据的,包括数据库备份?

回答:在生产环境下,不管是应用数据、还是数据库数据首先在部署的时候就会有主从架构,这本身就是是属于数据的热备份;

其实考虑冷备份,用专门一台服务器做为备份服务器,比如可以用rsync+inotify配合计划任务来实现数据的冷备份,如果是发版的包备份,正常情况下有台发布服务器,每次发版都会保存好发版的包。

 

4.

 

5.

 

 

 

 

更多介绍  :  https://blog.csdn.net/singit/article/details/47724983

来源 : 小鸟云计算

8种手动和自动备份MySQL数据库的方法 : https://mp.weixin.qq.com/s/8dyZGCjTTfOMazlaC-96GA

作者:Singit 
来源:CSDN 
原文:https://blog.csdn.net/singit/article/details/47724983 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!