• ADADADADAD

    使用XtraBackup备份MySQL[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 10:29:36

    作者:文/会员上传

    简介:

    一、使用每表单个表空间这样ibdata1文件不会过大。
    xtrabackup可以使用部分备份了,需要在一个表一个文件的状况下才能使用。1.在使用xtrabackup之前,我们需要查看我们当前mysq

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    一、使用每表单个表空间

    这样ibdata1文件不会过大。

    xtrabackup可以使用部分备份了,需要在一个表一个文件的状况下才能使用。

    1.在使用xtrabackup之前,我们需要查看我们当前mysql是否是使用每表单个表空间,如果不是则必须将其修改为每表单独表空间:


    1

    mysql>showglobalvariableslike'%innodb_file_p%';

    2

    +-----------------------+-------+

    3

    |Variable_name|Value|

    4

    +-----------------------+-------+

    5

    |innodb_file_per_table|OFF|

    6

    +-----------------------+-------+

    7

    1rowinset(0.00sec)

    这里是关闭状态,由此我们要启动这个功能,将来一旦要用到xtrabackup或各种高级功能的话建议刚安装mysql的时候直接将默认配置去写进配置文件,中途再更改的话会非常麻烦。


    2.重新导出导入数据,修改为每表一个文件:


    1

    [root@test2~]#mysqldump-uroot--lock-all-tables--all-databases--master-data=2--events>./1.sql

    2

    关闭数据库

    3

    [root@test2~]#/etc/init.d/mysqldstop

    4

    ShuttingdownMySQL..SUCCESS!

    5

    编辑配置文件加入以下参数

    6

    [root@test2~]#vim/etc/my.cnf

    7

    innodb_file_per_table=1

    8

    而后删除数据文件并重新初始化

    9

    [root@test2data]#pwd

    10

    /mydata/data

    11

    删除所有数据文件

    12

    [root@test2data]#rm-fr*

    13

    初始化mysql

    14

    [root@testmysql]#pwd

    15

    /usr/local/mysql

    16

    [root@testmysql]#scripts/mysql_install_db--user=mysql--datadir=/mydata/data/--basedir=/usr/local/mysql/

    17

    [root@testmysql]#/etc/init.d/mysqldstart

    18

    再次查看是否是每表单独表空间

    19

    mysql>showglobalvariableslike'%innodb_file_per%';

    20

    +-----------------------+-------+

    21

    |Variable_name|Value|

    22

    +-----------------------+-------+

    23

    |innodb_file_per_table|ON|

    24

    +-----------------------+-------+

    25

    1rowinset(0.00sec)

    26

    恢复数据

    27

    mysql>source~/1.sql

    28

    [root@test2data]#llwpdb/

    29

    total220

    30

    -rw-r--r--.1mysqlmysql61Apr611:05db.opt

    31

    -rw-r--r--.1mysqlmysql8646Apr611:05students.frm

    32

    -rw-r--r--.1mysqlmysql98304Apr611:05students.ibd

    33

    -rw-r--r--.1mysqlmysql8556Apr611:05tb4.frm

    34

    -rw-r--r--.1mysqlmysql98304Apr611:05tb4.ibd

    35

    如上所示每个表都有单独对应的表空间了

    36


    3.指定datadir:


    1

    vim/etc/my.cnf

    2

    添加一行:

    3

    datadir=/data/server/mysql/data

    二、安装percona-xtrabackup


    1

    解决依赖关系

    2

    [root@test~]#yum-yinstalllibaioperl-Time-HiResperl-DBD-MySQLperl-IO-Socket-SSL

    安装percona-xtrabackup:

    1.rpm

    [root@test2 tools]#rpm -ivh percona-xtrabackup-2.1.4-656.rhel6.x86_64.rpm

    使用wget下载rpm包,然后通过rpm包安装

    参考:http://www.cnblogs.com/cosiray/archive/2012/03/02/2376595.html

    参考:http://blog.163.com/ji_1006/blog/static/10612341201382355716623/

    2.yum


    1

    自动

    2

    $rpm-Uhvhttp://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

    3

    然后会看到:

    4

    Retrievinghttp://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

    5

    Preparing...###########################################[100%]

    6

    1:percona-release###########################################[100%]

    7

    手动

    8

    [percona]

    9

    name=CentOS$releasever-Percona

    10

    baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/

    11

    enabled=1

    12

    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona

    13

    gpgcheck=1

    14

    测试安装库

    15

    使用yumlist|greppercona来确保安装

    16

    yumlist|greppercona

    三、使用percona-xtrabackup

    innobackupex是perl脚本对xtrabackup的封装,和功能扩展。

    1.配置权限


    1

    grantRELOAD,LOCKTABLES,REPLICATIONCLIENTON*.*TO'back'@'localhost'identifiedby'back';

    2.创建全备


    1

    innobackupex--user=back--password=back--no-timestamp/tmp/mysqlback/

    内部机制:在备份的时候innobackupex会调用xtrabackup来备份innodb表,并复制所有的表定义,其他引擎的表(MyISAM,MERGE,CSV,ARCHIVE)

    --no-timestamp,指定了这个选项备份会直接备份在BACKUP-DIR,不再创建时间戳文件夹。

    --default-file,指定配置文件,用来配置innobackupex的选线。


    3.使用innobackupex预备全备(备份好了,先不要做这个,直接保存。只有需要直接用来还原时候做这个)


    1

    innobackupex--apply-lopmysqlback/

    --user-memory:指定预备阶段可使用的内存,内存多则速度快,默认为10MB


    1

    innobackupex--apply-log--use-memory=4G/path/to/BACKUP-DIR

    4.全备还原

    1)停止服务:

    service mysqld stop

    2) 删除datadir目录数据

    rm -rf data/*

    3)使用innobackupex --copy-back来还原备份,会根据my.cnf复制所有备份到datadir下:


    1

    <spandata-wiz-span="data-wiz-span">innobackupex--copy-backmysqlback/</span>

    注:datadir必须是为空的,innobackupex –copy-back不会覆盖已存在的文件,还要注意,还原时需要先关闭服务,如果服务是启动的,那么就不能还原到datadir。

    4) 修改数据的所有者和权限


    1

    <spandata-wiz-span="data-wiz-span">chown-Rmysql:mysqldata/</span>

    5) 启动服务

    service mysqld start

    5.创建增量备份

    在创建增量备份之前需要一个全备,不然增量备份是没有意义的.


    1

    innobackupex/data/backups

    创建第一个增量备份


    1

    <spandata-wiz-span="data-wiz-span">innobackupex--incremental/data/backups--incremental-basedir=BASEDIR</span>

    6.还原增量备份

    在全备上,使用—redo-only只做已提交事务,不回滚未提交事务


    1

    <spandata-wiz-span="data-wiz-span">innobackupex--apply-log--redo-onlyBASE-DIR</span>

    应用第一个增量备份


    1

    <spandata-wiz-span="data-wiz-span">innobackupex--apply-log--redo-onlyBASE-DIR--incremental-dir=INCREMENTAL-DIR-1</span>

    回滚未提交事务


    1

    <spandata-wiz-span="data-wiz-span">innobackupex--apply-logBASE-DIR</span>
    还原增量备份,还原增量备份其实和还原全备一样

    1

    innobackupex--copy-backBASE-DIR

    6. 单表备份:

    备份单表:


    1

    innobackupex--user=root--password=simlinux.com--defaults-file=/etc/my.cnf--include='se.searchaccount'--slave-info--safe-slave-backup--stream=tar/data/backup>/data/backup/searchaccount.tar.gz

    多个表: --include='test.*|pms.*'

    复制到其他服务器后,解压:


    1

    tar-ixfsearchaccount.tar.gz-C/data/databak/

    innobackupex预备:


    1

    innobackupex--apply-log--export/data/databak

    7.单表还原:

    定义表,先创建一个表,表结构需要和被还原的一样 (若是表已存在则不需要创建):


    1

    CREATETABLE`searchaccount`...

    然后discard表空间 (discard完表空间后再复制文件过来,再import,这样就不需要重启)


    1

    mysql>ALTERTABLEse.searchaccountDISCARDTABLESPACE;

    文件复制到databdir相应的目录下(注意文件的所有者和文件权限),mysql需要.ibd和.cfg文件,mysql 5.6之后可以不使用cfg来进行import,XtraDB需要.ibd和.exp,mariadb 10.0可以直接通过ibd和frm文件import


    1

    cp/data/databak/se/{searchaccount.ibd,searchaccount.cfg}/usr/local/mysql/data/se/

    1

    chownmysql.mysql/usr/local/mysql/data/se/

    然后import表空间


    1

    mysql>ALTERTABLEse.searchaccountIMPORTTABLESPACE;

    8.使用xbstream流备份

    1

    innobackupex--stream=xbstream/root/backup/>/root/backup/backup.xbstream

    9.使用tar备份


    1

    innobackupex--stream=tar./>/root/backup/out.tar

    10.使用tar流并备份到其他服务器

    1

    ssh-keygen

    2

    ssh-copy-id-imysql@127.0.0.1

    1

    innobackupex--stream=tar./|gzip|sshuser@destination"cat->/data/backup.tar"

    加密码


    1

    innobackupex--stream=tar./|gzip|sshpass-p'root123'sshuser@destination"cat->/data/backup.tar"

    11.压缩流


    1

    innobackupex--stream=tar./|gzip->backup.tar.gz

    12.提取tar流,需要加i参数


    1

    tar-xizfbackup.tar.gz

    参考:

    innobackupex --user=root --password=root --stream=tar ./ | gzip | sshpass -p 'root123' ssh root@10.6.32.28 "cat - > /usr/programs/xtraback/backup.tar.gz"


    innobackupex --defaults-file=/etc/my.cnf --user=root --password='123' --host=localhost --rsync --compress --compress-threads=5 --compress-chunk-size=64K--slave-info/root


    使用XtraBackup备份MySQL.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlxtrabackup