一、使用每表单个表空间
专注于为中小企业提供成都网站设计、成都网站制作、外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业南昌县免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。这样ibdata1文件不会过大。
xtrabackup可以使用部分备份了,需要在一个表一个文件的状况下才能使用。
1.在使用xtrabackup之前,我们需要查看我们当前mysql是否是使用每表单个表空间,如果不是则必须将其修改为每表单独表空间:
1
mysql> show global variables like '%innodb_file_p%';2
+-----------------------+-------+3
| Variable_name | Value |4
+-----------------------+-------+5
| innodb_file_per_table | OFF |6
+-----------------------+-------+7
1 row in set (0.00 sec)这里是关闭状态,由此我们要启动这个功能,将来一旦要用到xtrabackup或各种高级功能的话建议刚安装mysql的时候直接将默认配置去写进配置文件,中途再更改的话会非常麻烦。
2.重新导出导入数据,修改为每表一个文件:
1
[root@test2 ~]#mysqldump -uroot --lock-all-tables --all-databases --master-data=2 --events> ./1.sql2
关闭数据库3
[root@test2 ~]#/etc/init.d/mysqld stop4
Shutting down MySQL.. SUCCESS!5
编辑配置文件加入以下参数6
[root@test2 ~]# vim/etc/my.cnf7
innodb_file_per_table= 18
而后删除数据文件并重新初始化9
[root@test2 data]#pwd10
/mydata/data11
删除所有数据文件12
[root@test2 data]# rm -fr *13
初始化mysql14
[root@test mysql]#pwd15
/usr/local/mysql16
[root@test mysql]# scripts/mysql_install_db --user=mysql--datadir=/mydata/data/ --basedir=/usr/local/mysql/17
[root@test mysql]#/etc/init.d/mysqld start18
再次查看是否是每表单独表空间19
mysql> showglobal variables like '%innodb_file_per%';20
+-----------------------+-------+21
|Variable_name | Value |22
+-----------------------+-------+23
|innodb_file_per_table | ON |24
+-----------------------+-------+25
1 row in set (0.00sec)26
恢复数据27
mysql> source~/1.sql28
[root@test2 data]#ll wpdb/29
total 22030
-rw-r--r--. 1 mysqlmysql 61 Apr 6 11:05 db.opt31
-rw-r--r--.1 mysql mysql 8646 Apr 6 11:05 students.frm32
-rw-r--r--.1 mysql mysql 98304 Apr 6 11:05students.ibd33
-rw-r--r--. 1 mysql mysql 8556 Apr 6 11:05 tb4.frm34
-rw-r--r--. 1 mysql mysql 98304 Apr 6 11:05 tb4.ibd35
如上所示每个表都有单独对应的表空间了36
3.指定datadir:
1
vim /etc/my.cnf2
添加一行:3
datadir = /data/server/mysql/data二、安装percona-xtrabackup
1
解决依赖关系2
[root@test ~]# yum-y install libaio perl-Time-HiRes perl-DBD-MySQL perl-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 -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm3
然后会看到:4
Retrieving http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm5
Preparing... ########################################### [100%]6
1:percona-release ########################################### [100%]7
手动8
[percona]9
name = CentOS $releasever - Percona10
baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/11
enabled = 112
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona13
gpgcheck = 114
测试安装库15
使用yum list | grep percona来确保安装16
yum list | grep percona三、使用percona-xtrabackup
innobackupex是perl脚本对xtrabackup的封装,和功能扩展。
1.配置权限
1
grant RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'back'@'localhost'identified by '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-lop mysqlback/--user-memory:指定预备阶段可使用的内存,内存多则速度快,默认为10MB
1
innobackupex --apply-log --use-memory=4G /path/to/BACKUP-DIR4.全备还原
1)停止服务:
service mysqld stop
2) 删除datadir目录数据
rm -rf data/*
3) 使用innobackupex --copy-back来还原备份,会根据my.cnf复制所有备份到datadir下:
1
innobackupex --copy-back mysqlback/注:datadir必须是为空的,innobackupex –copy-back不会覆盖已存在的文件,还要注意,还原时需要先关闭服务,如果服务是启动的,那么就不能还原到datadir。
4) 修改数据的所有者和权限
1
chown -R mysql:mysql data/5) 启动服务
service mysqld start
5.创建增量备份
在创建增量备份之前需要一个全备,不然增量备份是没有意义的.
1
innobackupex /data/backups创建第一个增量备份
1
innobackupex --incremental /data/backups --incremental-basedir=BASEDIR6.还原增量备份
在全备上,使用—redo-only只做已提交事务,不回滚未提交事务
1
innobackupex --apply-log --redo-only BASE-DIR应用第一个增量备份
1
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1回滚未提交事务
1
innobackupex --apply-log BASE-DIR1
innobackupex --copy-back BASE-DIR6. 单表备份:
备份单表:
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 -ixf searchaccount.tar.gz -C /data/databak/innobackupex预备:
1
innobackupex --apply-log --export /data/databak7.单表还原:
定义表,先创建一个表,表结构需要和被还原的一样 (若是表已存在则不需要创建):
1
CREATE TABLE `searchaccount`...然后discard表空间 (discard完表空间后再复制文件过来,再import,这样就不需要重启)
1
mysql > ALTER TABLE se.searchaccount DISCARD TABLESPACE;文件复制到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
chown mysql.mysql /usr/local/mysql/data/se/然后import表空间
1
mysql > ALTER TABLE se.searchaccount IMPORT TABLESPACE;8.使用xbstream流备份
1
innobackupex --stream=xbstream /root/backup/ > /root/backup/backup.xbstream9.使用tar备份
1
innobackupex --stream=tar ./ > /root/backup/out.tar10.使用tar流并备份到其他服务器
1
ssh-keygen2
ssh-copy-id -i mysql@127.0.0.11
innobackupex --stream=tar ./ | gzip | ssh user@destination "cat - > /data/backup.tar"加密码
1
innobackupex --stream=tar ./ | gzip | sshpass -p 'root123' ssh user@destination "cat - > /data/backup.tar"11.压缩流
1
innobackupex --stream=tar ./ | gzip - > backup.tar.gz12.提取tar流,需要加i参数
1
tar -xizf backup.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
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。