中企动力 > 商学院 > 如何导出sql数据库
  • ?

    MySQL教程之MySQL定时备份数据库

    猴子

    展开

    一、MySQL数据备份

    1.1、 mysqldump命令备份数据

    在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:

    #MySQLdump常用

    mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql

    1.2、 mysqldump常用操作示例

    1.备份全部数据库的数据和结构

    mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql

    2.备份全部数据库的结构(加 -d 参数)

    mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql

    3.备份全部数据库的数据(加 -t 参数)

    mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql

    4.备份单个数据库的数据和结构(,数据库名mydb)

    mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql

    5.备份单个数据库的结构

    mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql

    6.备份单个数据库的数据

    mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql

    7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)

    mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql

    8.一次备份多个数据库

    mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql

    1.3、 还原mysql备份内容

    有两种方式还原,第一种是在MySQL命令行中,第二种是使用SHELL行完成还原

    1.在系统命令行中,输入如下实现还原:

    mysql -uroot -p123456 < /data/mysqlDump/mydb.sql

    2.在登录进入mysql系统中,通过source指令找到对应系统中的文件进行还原:

    mysql> source /data/mysqlDump/mydb.sql

    二、 编写脚本维护备份的数据库文件

    在linux中,通常使用BASH脚本对需要执行的内容进行编写,加上定时执行命令crontab实现日志自动化生成。

    以下代码功能就是针对mysql进行备份,配合crontab,实现备份的内容为近一个月(31天)内的每天的mysql数据库记录。

    2.1、 编写BASH维护固定数量备份文件

    在Linux中,使用vi或者vim编写脚本内容并命名为:mysql_dump_script.sh

    #!/bin/bash

    #保存备份个数,备份31天数据

    number=31

    #备份保存路径

    backup_dir=/root/mysqlbackup

    #日期

    dd=`date +%Y-%m-%d-%H-%M-%S`

    #备份工具

    tool=mysqldump

    #用户名

    username=root

    #密码

    password=TankB214

    #将要备份的数据库

    database_name=edoctor

    #如果文件夹不存在则创建

    if [ ! -d $backup_dir ];

    then

    mkdir -p $backup_dir;

    fi

    #简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql

    $tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql

    #写创建备份日志

    echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt

    #找出需要删除的备份

    delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`

    #判断现在的备份数量是否大于$number

    count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`

    if [ $count -gt $number ]

    then

    #删除最早生成的备份,只保留number数量的备份

    rm $delfile

    #写删除文件日志

    echo "delete $delfile" >> $backup_dir/log.txt

    fi

    如上代码主要含义如下:

    1.首先设置各项参数,例如number最多需要备份的数目,备份路径,用户名,密码等。

    2.执行mysqldump命令保存备份文件,并将操作打印至同目录下的log.txt中标记操作日志。

    3.定义需要删除的文件:通过ls命令获取第九列,即文件名列,再通过

    head -1

    实现定义操作时间最晚的那个需要删除的文件。

    4.定义备份数量:通过ls命令加上

    wc -l

    统计以sql结尾的文件的行数。

    5.如果文件超出限制大小,就删除最早创建的sql文件

    2.2、 使用crontab定期执行备份脚本

    在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。

    cron的配置文件称为“crontab”,是“cron table”的简写。

    一、cron服务

    cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。

    service crond start //启动服务

    service crond stop //关闭服务

    service crond restart //重启服务

    service crond reload //重新载入配置

    service crond status //查看服务状态

    二、crontab语法

    crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的。

    在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。

    每个域之间使用空格或者制表符分隔。格式如下:

    minute hour day-of-month month-of-year day-of-week commands

    合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday)

    除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

    -l 在标准输出上显示当前的crontab。

    -r 删除当前的crontab文件。

    -e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。

    三、创建cron脚本

    第一步:写cron脚本文件,命名为mysqlRollBack.cron。

    15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt 表示,每隔15分钟,执行打印一次命令

    第二步:添加定时任务。执行命令 “crontab crontest.cron”。搞定

    第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

    注意:这操作是直接替换该用户下的crontab,而不是新增

    定期执行编写的定时任务脚本(记得先给shell脚本执行权限)

    0 2 * * * /root/mysql_backup_script.sh

    随后使用crontab命令定期指令编写的定时脚本

    crontab mysqlRollback.cron

    再通过命令检查定时任务是否已创建:

    crontab -l

    附crontab的使用示例:

    1.每天早上6点

    0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

    2.每两个小时

    0 */2 * * * echo "Have a break now." >> /tmp/test.txt

    3.晚上11点到早上8点之间每两个小时和早上八点

    0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

    4.每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

    0 11 4 * 1-3 command line

    5.1月1日早上4点

    0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/

    6.每小时执行/etc/cron.hourly内的脚本

    01 * * * * root run-parts /etc/cron.hourly

    7.每天执行/etc/cron.daily内的脚本

    02 4 * * * root run-parts /etc/cron.daily

    8.每星期执行/etc/cron.weekly内的脚本

    22 4 * * 0 root run-parts /etc/cron.weekly

    9.每月去执行/etc/cron.monthly内的脚本

    42 4 1 * * root run-parts /etc/cron.monthly

    注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。

    10.每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。

    5,15,25,35,45,55 16,17,18 * * * command

    11.每周一,三,五的下午3:00系统进入维护状态,重新启动系统。

    00 15 * * 1,3,5 shutdown -r +5

    12.每小时的10分,40分执行用户目录下的innd/bbslin这个指令:

    10,40 * * * * innd/bbslink

    13.每小时的1分执行用户目录下的bin/account这个指令:

    1 * * * * bin/account

    三、执行效果截图

    以下是我的测试每分钟的截图效果,其对应代码如下:

    * * * * * /root/mysql_backup_script.sh

    效果截图:

    其中的log.txt记录备份的操作详细日志:

  • ?

    SQL2000数据库的备份与还原

    陆寻芹

    展开

    一、数据库备份

    1、打开企业管理器,如图所示操作

    2、一般选择完全备份,添加备份目的

    3、选择备份目录,输入备份数据库名称,接着按下图操作即可,直至完成备份

    二、数据库还原

    2、如果之前备份了库,在此处可以直接还原,请选择“在现有数据库上强制还原”

    2、从设备还原,比如从别的服务器上拷过来的备份库,选择设备,添加还原设备,如下图操作即可,直至还原完成

    3、如果还原时提示数据库正在被占用,可通过分离功能清除连接再进行还原;注意:使用分离功能只是清除连接,不要点“确定”真的分离数据库

  • ?

    PL/SQL中如何导出表结构和表数据

    宣乌

    展开

    在数据库操作中,很多时候会发现数据库不兼容,但原来的数据库中又有很多数据,表结构也很复杂,这时候就会想到将这个表中的数据和表结构都移植到另一个数据库中,在PL/SQL的工具栏中,可以进行数据库表移植和数据转移。

    打开PL/SQL客户端,成功登录数据库后,就会进入到主操作界面,在最上方中,有工具菜单栏,其中就有Tools选项,如图

    点击【Tools】选项,会出现一列工具选项,其中就有【Export Tables】选项,选中该选项,就会跳转到表数据导出界面,如图

    再点击【Tools】选项,再在列表中选中【Export User Objects】选项,就会跳转到表结构导出界面,如图

    如果想导入数据库表结构,或表数据,也可以再点击【Tools】中的【Import Tables】选项,会跳转到导入数据表界面和导入数据表结构界面,如图

    在该界面中,切换到【SQL inserts】选项,在下方文件打开按钮中,选中已经准备好的sql语句文件,再点击impot按钮,就可以导入表数据了,如图

  • ?

    如何用好PostgreSQL的备份与恢复?

    凯里

    展开

    高可用性是数据库的关键指标,简单说就是要做到故障时间短,数据不丢失,能够回退到指定位置(时间/事务)。实现高可用的基础是数据库的备份与恢复技术。

    PostgreSQL备份与恢复操作涉及的参数和相关文件较多,内部逻辑关系较复杂,恢复分类方式容易混淆,这些都会影响到PostgreSQL高可用方案的实现。

    本文首先介绍通常的数据库故障场景与处理方案,然后通过梳理PostgreSQL数据库备份与恢复的相关文件、参数配置与主要流程,对PostgreSQL恢复方式进行了清晰分类,最后给出了应对典型故障,PostgreSQL备份与恢复的配置方案。

    一、故障场景和处理方案

    数据库采用数据文件加日志文件,两份数据的存储方式。为提高性能,数据库运行时操作的数据位于内存缓冲区,缓冲区的数据延迟写入数据文件,因此数据文件会处于不一致的状态。数据的变更记录称为日志记录,日志记录以日志文件方式存储在磁盘上。日志记录也是先写入日志缓冲区,再写入日志文件。通过两个简单的规则Write-ahead log(将数据写入数据文件前,先将对应的日志记录写入日志文件)和Force log at commit(事务提交时,将其所有日志记录写入日志文件),可以保证通过日志文件完整的恢复数据文件。

    传统的故障类型包括事务内部故障、系统故障、介质(磁盘)故障。对于事务内部故障和系统故障,数据库使用日志文件自动恢复,不需要人工干预。为应对介质故障,DBA需事先备份数据,发生故障后,使用备份数据恢复数据库。

    可靠的磁盘设备可以大幅降低介质故障概率,但不能减少数据备份工作。一个常见的故障是数据误操作,即修改了不应该修改的数据。从数据库的角度看,误操作是正常的操作,不会进行自动恢复,只有使用备份数据才能恢复。同时,提供一段时间内历史数据的访问,也是一个常见的需求。

    数据的备份与恢复可以分为逻辑与物理两种方式。

    逻辑备份与恢复:备份时,使用工具将数据全量导出为外部文件,恢复时,使用工具,将备份文件导入新建的数据库

    物理备份与恢复:备份时,配置实例处于归档模式,将生成的日志文件保持到指定位置。使用热备工具直接拷贝数据的数据目录,作为基线数据。恢复时,使用基线数据和日志文件将数据恢复到一致的状态。

    逻辑方式不支持增量方式,适用于数据较小情况下的备份与恢复。物理方式支持增量备份,适合大数据量的备份与恢复。本文只讨论物理备份与恢复,下图为物理备份与恢复的基本流程。

    在高可用需求中,当单台实例发生故障,需要快速提供备用实例。备份基线数据+日志文件的方式无法满足时间要求。通常采用主备(master/slave)方案,master与slave通过日志流复制进行同步,slave可以提供只读数据访问,当master发送故障后,直接将应用请求转发到slave。

    在高可用方案中,需要支持介质故障恢复,实时故障切换,误操作数据恢复,查看历史数据等功能。流复制技术和物理备份与恢复的结合,可以满足数据库高可用的基本要求。

    流复制

    物理备份与恢复

    介质故障恢复

    支持

    实时故障切换

    不支持

    误操作数据恢复

    查看历史数据

    PostgreSQL备份与恢复相关文件、参数配置与主要流程

    PostgreSQL日志文件的命名

    日志序号 (lsn:log sequence number) 标识日志记录在日志文件中的位置。lsn是一个64位的整数。PostgreSQL运行时生成的日志文件存放在数据目录下的pg_xlog目录,每个日志文件称为一个segment,日志文件大小固定,由wal_segment_size参数指定,日志文件内部划分为多个wal page,每个page的大小由wal_block_size参数指定。

    对于一个64位的lsn,可以计算出其所在的xlog文件名。lsn可以划分segment序号高位,segment序号低位和块内序号三个部分。对于segment大小为64M和16M的情况如下:

    16M:segment序号高位(32比特)+segment序号低位(8比特)+块内序号(24比特)

    64M:segment序号高位(32比特)+segment序号低位(6比特)+块内序号(26比特)

    Xlog文件名由三部分组成,格式为:时间线+segment序号高位+segment序号低位,每个部分都表示为一个8位16进制数字。取出lsn中的segment高位和segment低位数值,就可以确定其所在的xlog文件。

    使用pg_current_xlog_location()查询当前lsn为0/1C000090(16进制高32位/16进制低32位),当前时间线为1,wal segment大小为64M,

    根据64M大小日志文件名格式,可计算出lsn的segment序号高32位为0x0,segment序号低位为0x7, 块内序号为0x90,xlog文件名为000000010000000000000007

    使用pg_xlogfile_name_offset()可以查询lsn对应的文件名文件内偏移,与上述计算一致。

    checkpoint与control文件

    PostgreSQL的数据文件和日志文件互为冗余。当某lsn之前的操作已经全部写入了数据文件后,则该lsn号之前的日志文件可以丢弃。checkpoint机制实现此功能。

    checkpoint操作在以下场景执行:管理员手工执行check命令、数据库启动完成恢复、数据库正常关闭,以及后台Checkpoint进程的定期执行。

    checkpoint流程可以简单描述为,首先构造checkpoint记录(redo字段为当前已写入日志文件的lsn),然后将数据缓冲区中的脏数据写入磁盘,最后写入checkepoint日志记录(包含checkpoint记录),并将checkpoint记录写入control文件。

    512字节的control文件是PostgreSQL的关键数据,用于数据库启动时,判断数据库状态和恢复位置。controlfile文件中记录了数据库的状态,最近checkpoint记录,最小恢复lsn信息和基本的参数配置。数据库的状态包括:

    DB_SHUTDOWNED(数据库正常关闭)

    DB_SHUTDOWNED_IN_RECOVERY(数据库在恢复时关闭)

    DB_SHUTDOWNING(数据库启动到正常关闭过程中崩溃)

    DB_IN_CRASH_RECOVERY(数据库在恢复过程中崩溃),

    DB_IN_ARCHIVE_RECOVERY(数据库处于归档恢复)

    DB_IN_PRODUCTION(数据库处于正常工作状态,等待接受事务处理)

    日志文件的生成与归档

    PostgreSQL日志文件的segment序号从1开始,一个日志文件写完后,会写入下一个序号的日志文件。checkpoint之后,最近一次checkpoint.redo lsn之前的日志文件可以丢弃。PostgreSQL会循环使用日志文件。checkpoint操作中,会将可丢弃的日志文件改名为未来的日志文件名,并该日志文件重新初始化。PostgreSQL在写新的日志文件时,如果该文件已存在,则使用该文件,否则才会创建新的文件。因此不能从pg_xlog目录中的文件名直接判断当前的日志文件,需要使用pg_current_xlog_location和pg_xlogfile_name_offset函数进行判断。

    为持久保存日志文件,需要开启日志归档模式。在该模式下,可丢弃日志文件被删除前,被拷贝到指定目录。在postgres.conf配置文件中设置三个参数:

    wal_level=replica 或更高archive_mode = onarchive_command = 'cp %p /mnt/server/archivedir/%f'%p表示pg_xlog目录路径和日志文件名,%f表示日志文件名。 日志被拷贝到/mnt/server/archivedir目录

    日志的归档过程如下:

    checkpoint操作中,当一个日志文件X可丢弃时,在pg_xlog的archive_status目中生成X.ready文件。

    后台archive进程负责日志文件的拷贝。该进程监控archive_status目录,当发现有X.ready文件名后,使用archive_command拷贝文件,并将X.ready命名为X.done

    下一次checkpoint操作中,将archive_status目中X.done对应的X日志文件改名。

    crash recovery

    PostgreSQL正常运行中,直接kill主进程,重启PostgreSQL,将进入crash recovery处理流程,从control文件中checkpoint的redo lsn位置开始,

    使用pg_xlog目录中的日志文件进行恢复。PostgreSQL能进行上述处理,是因为将其状态和最近的checkpoint记录在在control文件中。

    初始化数据库后,control文件DB状态初始值为shutdown。pg启动时,当control文件DB状态为shutdown,则将状态设置为production,退出恢复过程。在正常关闭服务时,执行checkpoint,并将control文件DB状态设置shutdown。pg启动时,当control文件DB状态为production,则说明发生了crash,会从control文件读取最近checkpoint,从redo lsn开始进行恢复,恢复完成后,将状态设置为production。

    热备

    备份分为冷备和热备。冷备是正常关闭服务后拷贝文件。热备是服务正常运行中拷贝文件。由于采用数据缓冲区机制,拷贝的文件数据会不一致。根据数据库恢复基本原理,只要确定某lsn之前的日志已经全部写入了数据文件,则在拷贝后的数据文件上,应用该lsn号之后的日志文件,可将数据恢复到一致的状态。

    热备包括以下步骤

    执行pg_start_backup函数:该函数执行checkpoint,将checkpont信息写入数据目录下的backup_label文件。

    拷贝数据目录到指定位置

    执行pg_stop_backup函数:该命令删除backup_label文件,写XLOG_BACKUP_END日志,并在pg_xlog目录中写入backup文件,该文件记录了热备开始和结束的lsn信息。

    backup文件格式为:热备开始lsn对应的日志文件名.开始lsn的块内偏移.backup

    使用归档日志恢复

    Crash recovery只能使用pg_log目录中的日志文件进行恢复,启用archive recovery模式后,可以使用其它目录的日志文件(归档日志文件)进行恢复。

    在数据目录存创建recover.conf文件,PostgreSQL启动时,读取到该文件,会进入archive recovery流程。在recover.conf中设置日志拷贝命令restore_command,pg恢复过程中,使用该命令将归档日志拷贝到pg_xlog目录后进行恢复。

    restore_command = 'cp /mnt/server/archivedir/%f "%p"'%f表示日志文件名 %p表示目标路径和文件名

    使用流复制恢复

    流复制可以视为archive recovery的一种情况。使用归档日志文件进行恢复时,备机需要获取主机一个完整xlog文件,才可进行恢复。在流复制中,主机产生日志记录后,会及时发送到备机。

    在slave节点数据目录的recover.conf中,配置到主机的连接信息primary_conninfo并设置standby_mode为on。

    standby_mode = 'on'primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass'

    master节点的postgres.conf文件中指定wal_level和发送日志进程的数目max_wal_senders。

    wal_level=replica 或更高max_wal_senders=5

    在master的pg_hba.conf文件中允许复制连接建立

    host replication postgres 192.168.10.0/24 trust

    slave启动后会启动wal reciver进程,根据primary_conninfo向master发送连接请求。master收到请求后,启动wal sender进程,wal sender与reciver建立连接。 wal reciver将起始的lsn信息发送给wal sender,wal sender从该lsn开始,将日志记录持续发送给wal reciver,wal reciver将日志写入pg_xlog目录中的日志文件,并通知恢复进程读取文件进行恢复处理。

    恢复的退出与时间线

    Crash recovery模式下,应用完pg_xlog目录中的所有可用日志文件后,自动退出恢复,进入运行状态。Archive recovery模式下,recovery.conf文件中参数standby_mode为off时,应用完所有日志后,自动退出恢复,进入运行状态。standby_mode为on时,应用完所有日志后,恢复流程不会退出,持续读取可用日志(来自于归档日志文件或流复制),当收到pg_ctl工具发出的promote命令后,才退出恢复流程,进入运行状态。

    可以通过设置Recovery Target,使得archive recovery在指定的位置(时间或事务号)停止恢复。在recovery.conf文件配置如下参数,表示恢复流程在恢复完123947事务后结束。

    recovery_target_xid = '123947'

    时间线(Timeline)是PostgreSQL中的特有的概念。其初始值为1,退出archive recovery时,timeline增1,退出crash recovery时,timeline不变。Timeline反映在日志的文件名中,日志文件的命名格式为:时间线号+segment序号高位+segment序号低位。

    引入时间线概念后,日志位置的唯一标识从lsn变为时间线+lsn,checkpoint的结构中记录了当前的timeline。

    发生时间线切换时,在pg_xlog目录写入时间线history文件,文件名为"当前timelime.history",文件内记录了时间线切换的历史纪录,每一行记录一条时间线信息,格式为。

    parentTLI为时间线id,为切换发生后的lsn,为发生切换的原因。

    从时间线history文件中,可以计算出每条时间线的开始和结束lsn。

    时间线文件00000003.history,内容为1 0/14000060 no recovery target specified2 0/140420D0 no recovery target specified

    该文件含义为当前时间线为3,时间线1的lsn范围[0/0,0/14000060),

    时间线2的lsn范围[0/14000060,0/140420D0),时间线3从0/140420D0开始。

    使用timeline有以下优点:

    切换逻辑显得清晰。从时间线history文件,可以计算出每条时间线的开始和结束lsn。

    避免归档日志的覆盖。当备机与主机的归档目录相同时,备机升级为主机后,生成的日志文件名与原主机不同(时间线不同),拷贝到归档目录后,不会覆盖之前的日志文件。

    pg_basebackup、pg_rman工具

    pg_basebackup和pg_rman为备份与恢复提供良好的操作管理界面,避免手工管理配置文件。

    pg_basebackup是PostgreSQL自带的一个远程热备工具,可以将远程PostgreSQL热备到本地目录。其工作流程为,连接到一个远程PostgreSQL,执行pg_start_backup,将整个数据目录传输到本地,执行pg_stop_backup命令。

    将地址为192.168.0.1的PostgreSQL,备份到本地usr/local/pgsql/data目录pg_basebackup -h 192.168.0.1 -U test -D /usr/local/pgsql/data

    pg_basebackup支持在目标数据目录生成用于流复制的recovery.conf文件。

    pg_basebackup -h 192.168.0.1 -U test -R -D /usr/local/pgsql/data

    会在/usr/local/pgsql...

  • ?

    初探MySQL数据备份及备份原理

    慢半拍

    展开

    [来自IT168]  【IT168 评论】相信通过上一篇文章《数据丢失如当头棒喝,数据备份重如山!》,很多人对于数据备份的重要性有了深刻的认识,本文将以MySQL为例带大家进一步了解数据备份的原理和初步实践。  根据需求的不同,数据备份的方式也不同,MySQL官方给定的备份方式有三种,分别是冷备、热备和温备;如果以备份的数据集为划分标准,那么可划分为完全备份和部分备份;如果是以备份时的接口为划分标准,那么可分为物理备份、逻辑备份、完全备份、增量备份和差异备份。  后面两种备份的分类方式比较容易理解,下面我们着重介绍一下冷备、热备和温备。  ·冷备:简单来说,就是数据必须下线后备份。在备份之前,停止MySQL实例的运行,并且在整个备份过程中,用户都无法访问数据库。  ·热备:简单来说,就是数据不离线,读写可以正常进行,MySQL实例始终处于运行状态。  ·温备:简单来说,就是全局施加共享锁,只能读,不能写。在备份过程中,MySQL实例虽然仍是运行的,但是不能进行更新或修改等操作。  数据、配置文件、代码(存储过程、存储函数、触发器)、os相关的配置文件、复制相关的配置以及二进制日志都是我们要备份的对象。那么问题来了,如何来备份上述这些呢?我们以文件系统快照(LVM)、逻辑备份工具Mysqldump、Mydumper以及物理备份工具Xtrabackup这四种方案为例,剖析一下MySQL数据备份的原理。  快照备份  快照备份是我们上文提到的热备份的一种,通过文件系统支持的快照功能对数据库进行备份。在MySQL中使用快照备份只需将数据文件、日志文件都放在一个逻辑卷中,并对该逻辑卷快照备份。快照备份倾向于防范误操作,一旦操作失误,就可以利用快照恢复到之前的时间点,不过,因为快照只能是在本地,如果磁盘损坏,那么快照也就损坏,备份也就消失了。

    图源网络  Mysqldump  Mysqldump是MySQL自带的备份工具,通过create table、drop table和insert into 等SQL语句,将数据库中的数据导出成.sql文件。由于Mysqldump依赖数据库层的转换,并不关心底层的存储引擎,所以适用范围更广泛,并且可以在不同MySQL版本之间切换。也同样是因为此,Mysqldump生成的备份文件很大、速度较慢,且在备份过程中对数据库的访问有较大的影响,不适用于数据量大、业务压力高的实例。  Mydumper  Mydumper与Mysqldump的原理类似,但其有一个特点就是可以采用多线程并行备份,大大提高了数据导出的速度。该工具由MySQL、Facebook、skysql公司的开发人员一起开发维护,由轻量级C语言开发。据说,执行速度比mysqldump快10倍,支持事务和非事务表的一致性备份、导出binlog、多线程备份、以守护进程的形式工作,定时备份等等。

    图源网络  XtraBackup  XtraBackup可能是现在最为广泛的备份方式,它是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle)、Percona Server 和 MariaDB,并且全部开源。因为XtraBackup是物理备份,所以其是靠拷贝数据库文件和日志来完成备份,速度更快,其中最主要的工具集是 innobackupex(备份InnoDB表) 和 xtrabackup(备份非InnoDB表),前者是一个 perl 脚本,后者是 C/C++ 编译的二进制。

    图源网络

  • ?

    数据库导出的一个比较方便快捷的方式及注意事项

    巴恩斯特珀尔

    展开

    本篇重点推出一个手动的快捷导表的方式.

    mysqldump的特殊用法

    在很多的场景,我们需要搭建测试服务器等相同结构的数据库,这样通过导出数据,再导入的方式,就比较繁琐。我们可以通过下面一句话的方式实现。

    整表迁移

    mysqldump -h 'xxxx' -uroot -pmlt110825 --opt --compress mail --skip-lock-tables | mysql -h localhost -uroot -p123456 mail

    某张表的迁移

    mysqldump -hrdsqr7ne2.rds.aliyuncs -uwan1 -p5137104 ecmall51_2 --table ecm_attribute|mysql -h118.89.190.8 -uroot -p123456 ecmall51_2

    缺点:如果数据量比较大,那么,我们可以需要单独对某些表进行迁移;

    单独对某个表导出

    mysqldump -hrdsqr7ne2m2i.aliyuncs -uwang51 -p58b104 -t ecmall51_2 --table ecm_attribute>attr.sql

    再mysql -uroot -pxxx ecmall

    ------------------------------------------------------------------------

    以上场景属于数据库之间的链接都正常且顺畅。连接条件比较宽松。下面针对连接条件有限制的

    (1) 两台主机不在同一个内网地址 ,这样传输会比较慢;如果遇到不允许外部链接的情况 ,还需要做下面授权。

    grant all privileges on *.* to joe@localhost identified by '1';

    flush privileges;

    如果是云主机,还需要开放安全组的端口。

    (2)如果是阿里云或者腾讯云的方式。RDS等。

    在这种情况 下,理论上我们上面的方式都挺好,但RDS出于安全,性能等考虑,会做了各种time_out的限制,以至你的方式,会被各种中断!

    在这样的情况下,请联系客服,使用官方推荐的方式及工具,进行数据库的迁移。

    RDS->local ,local->RDS,RDS->RDS,ECS->ECS都有相应的指导说明。

  • ?

    phpmyadmin导入恢复和导出备份mysql数据库(适用虚拟主机)

    南茜

    展开

    虚拟主机。

    主机控制面板点击数据库,然后点击 管理mysql数据库(UTF8版)

    选择自己的数据库,然后点击导出按钮即可导出。

    点击导入按钮,即可选择本地的sql文件导入恢复数据库。

    注意:导入恢复数据时,请确认备份好当前数据,以免导入后覆盖重要数据,导入时会因为主键冲突无法导入,这时需要清空数据库才可以导入,同样,若要清空也请先做好备份。

  • ?

    sql数据库怎么备份

    沛儿

    展开

    这里主要介绍使用多备份进行sql数据库的方法

    登录到控制面板,点击“go”,这里也讲了三步55秒实现备份

    在弹出框里,我们选择右边的数据库备份

    你的数据库是否可以远程备份?我们一般都选择是

    按照流程输入数据库的账号,密码,ip等等

    制定备份策略,包括什么时间点备份,以什么频率,备份到哪个网盘

    返回到控制面板基本就算备份准备好了,等待自动备份

  • ?

    SQL2008数据库的备份与还原

    Ernest

    展开

    一、上期我们分享了SQL2000数据库的备份与还原,这期我们再来分享下SQL2008数据库的备份与还原。

    二、SQL2008数据库的备份

    1、登录sql server management studio

    2、选择要备份的数据库,右键—任务—备份

    3、添加备份目标,并输入备份文件的名称

    4、这是选择好后的显示页面,确定再确定即开始备份并完成

    三、数据库还原

    1、选择要还原的数据库—右键—任务—还原

    2、如图,刚才备份的数据库会直接显示,可以直接还原

    3、注意选项中要勾选“覆盖现有数据库”,“还原为”的路径一定确保正确

    4、另外一种情况是通过源设备选择还原的文件

    5、“文件类型”要选择所有文件,否则看不到备份是文件

    6、勾选“还原”,确定即可完成还原

  • ?

    MySQL数据库备份的11种方法

    维多利亚

    展开

      MySQL是开发交互式网站最流行的开源数据库管理系统之一。如果你在你的网站上使用MySQL数据库,那么你肯定需要定期备份你的敏感数据,以便在任何情况下恢复它。

      你可能会喜欢以下的文章:

    3个出色的MySQL替代品

      MongoDB vs. MySQL

      这里有10种方法可以自动或手动备份MySQL数据库,您可以根据您的需求、易用性或访问服务器的权限采用这些方法。

      1. 用MySQLDump备份

      在本文中,我们将介绍如何使用MySQL附带的mysqldump实用程序来备份数据库。将使用mysqldump检查几个示例,包括将数据库备份到文件,另一个服务器,甚至压缩的gzip文件。

      2. MySQL导出:如何备份您的MySQL数据库?

      您可以轻松创建帐户使用的数据库的转储文件(导出/备份)。为此,您应该访问您的cPanel中提供的phpMyAdmin工具。

      3. 自动备份MySQL数据库到Amazon S3

      许多用户使用Amazon S3来备份他们的mysql数据库。这是一个自动化的脚本,负责完成MySQL数据库的备份,然后将其移动到Amazon S3。

      4. 如何将MySQL数据库、Web服务器文件自动备份到FTP服务器

      这是一个简单的备份解决方案,用于在专用盒或VPS上运行自己的Web服务器和MySQL服务器的人员。使用FTP或NAS备份的主要优点是防止数据丢失。首先需要使用mysqldump命令备份每个数据库,使用tar自动执行备份任务,安装cron作业并生成FTP备份脚本。

      5. 如何通过电子邮件自动备份您的MySQL数据库表与PHP

      该脚本将使用附加的.sql文件向您发送电子邮件,从而使您能够轻松备份特定的表。您甚至可以设置一个电子邮件帐户来接收这些备份...

      6. 如何使用PHP来备份MySQL数据库

      从PHP文件执行数据库备份查询。要恢复备份,您只需要运行LOAD DATA INFILE查询:

      7. 备份你的数据库使用PHP的XML文件

      这将显示一个以XML格式输出数据库的PHP代码段。XML不是恢复表的最简单的格式,但它可以更容易阅读。

      8. 使用AutoMySQLBackup自动备份您的MySQL数据库

      AutoMySQLBackup有一些很好的功能:备份单个数据库,多个数据库或服务器上的所有数据库; 每个数据库保存在一个可压缩的文件中(使用gzip或bzip2); 它将旋转备份,并没有使他们填充你的硬盘(正常情况下,每天备份只剩下最后7天的备份,如果每周启用,每周都有一次备份,等等。

      9. 通过SSH备份mysql数据库

      简单解决方案通过SSH备份大型MySQL数据库。您需要在cPanel或Plesk控制面板中启用shell访问,并使用PuTTY等实用程序通过SSH登录到您的服务器。

      10. 如何自动备份MySQL数据库(对于Linux用户)

      这篇文章将告诉你如何备份MySQL数据库,如果自动你是一个Linux用户。您可以自动使用cron来备份你的MySQL数据库。称为“Cron”是在Unix / Linux的操作系统的基于时间的调度实用程序。

      11. Ubuntu Linux备份MySQL服务器脚本

      如果你有一个专用的VPS服务器运行Ubuntu Linux。下面是如何将所有MySQL服务器数据库备份到FTP服务器。

      欢迎您对本列表添加任何建议。您可以使用下面的评论提出任何建议。

      也许你会喜欢:

      MySQL数据库管理(安全设置+管理授权用户+备份还原)视频课程

      Oracle11g-RMAN备份与恢复基础到进阶视频教程

      搭建中小规模集群之数据同步备份知识及实战-15视频教程

      以上课程课课家都有,可以前往学习哦!

如何导出sql数据库

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP