失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > mysql innodb备份恢复和主从复制 xtrabackup工具的使用

mysql innodb备份恢复和主从复制 xtrabackup工具的使用

时间:2023-04-12 10:00:13

相关推荐

mysql innodb备份恢复和主从复制  xtrabackup工具的使用

网上关于这方面的知识还是比较多的,不过比较零散。其中比较好的文章链接查看,

/Linux/-10/71919p2.htm

用XtraBackup实现MySQL的主从复制快速部署【主不锁表】

/content/12/0321/14/834950_196286503.shtml

mysql热备工具xtrabackup

xtrabackup有两个主要的工具:xtrabackup、innobackupex

(1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 (2)innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的,innobackupex是一个perl脚本封装,封装了xtrabackup,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项,如slave-info可以记录备份恢复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。

1,安装xtrabackup

[root@bs-db2 data]# wget '/redir/downloads/XtraBackup/LATEST/RPM/rhel6/x86_64/percona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm'

[root@bs-db2 data]# rpm -ivh percona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm

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

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

innobackupex是一个perl脚本封装,如果安装提示缺少perl库可以搜索安装

[root@bs-db2 data]# yum install perl-DBD-MySQL

[root@bs-db2 data]# yum install perl-Time-HiRes

其他的搜索安装即可。

在linux shell中查看是否有

[root@bs-db2 data]# xtrabackup

xtrabackup xtrabackup_55 xtrabackup_56

[root@bs-db2 data]# innobackupex

innobackupex innobackupex-1.5.1

如果没有 可以尝试重新登录。其他情况欢迎留言。

2,备份

首先注意一点:确保在f中存在[mysqld]并且在[mysqld]后面存在 datadir = ....

这里的参数datadir为mysql源码编译安装存放数据的目录。如我的mysql编译安装在/opt/mysql

这里的datadir=/opt/mysql/data

备份指令

[root@bs-db2 data]# innobackupex --defaults-file=/etc/f --user=root --password=Abcd1234 --stream=tar ./ |gzip >mysql_back.tar.gz

其中参数--stream=tar

备份文件输出格式, tar时使用tar4ibd , 该文件可在XtarBackup binary文件中获得.如果备份时有指定--stream=tar, 则tar4ibd文件所处目录一定要在$PATH中(因为使用的是tar4ibd去压缩, 在XtraBackup的binary包中可获得该文件)。

在使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。

注意备份完成后 innobackupex 提示解压时要加上i参数

3,还原

[root@bs-db2 data]# scp mysql_back.tar.gz root@192.168.11.41:/opt/mysql/inno

复制备份文件到slave上

[root@bs-db2 inno]# pwd

/opt/mysql/inno

[root@bs-db2 inno]# ll

total 1481752

-rw-r--r-- 1 root root 1517306755 Dec 12 10:40 mysql_back.tar.gz

[root@bs-db2 inno]# tarzxvfimysql_back.tar.gz

./backup-f

ibdata1

.

.

.

mysql/ndb_binlog_index.frm

mysql/proc.MYI

mysql/help_relation.MYD

mysql/user.MYD

mysql/servers.MYI

mysql/ndb_binlog_index.MYI

xtrabackup_logfile

xtrabackup_checkpoints

./xtrabackup_binary

[root@bs-db2 inno]innobackupex --defaults-file=/etc/f --user=root --password=Abcd1234 --apply-log /opt/mysql/inno/

--apply-log

对xtrabackup的--prepare参数的封装

(--prepare

实施对备份文件进行恢复前的准备(生成InnoDB log file)xtrabackup指令)

--copy-back

做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir ;

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright , Innobase Oy

and Percona LLC and/or its affiliates -. All Rights Reserved.

This software is published under

the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.

Get the latest version of Percona XtraBackup, documentation, and help resources:

/xb/p

IMPORTANT: Please check that the apply-log run completes successfully.

At the end of a successful apply-log run innobackupex

prints "completed OK!".

131212 12:20:01 innobackupex: Starting ibbackup with command: xtrabackup_55 --defaults-file="/etc/f" --defaults-group="mysqld" --prepare --target-dir=/opt/mysql/inno --tmpdir=/tmp

.

.

.

[notice (again)]

If you use binary log and don't use any hack of group commit,

the binary log position seems to be:

InnoDB: Last MySQL binlog file position 0 32661, file name ./mysql-bin.000026

xtrabackup: starting shutdown with innodb_fast_shutdown = 1

131212 12:20:07 InnoDB: Starting shutdown...

131212 12:20:12 InnoDB: Shutdown completed; log sequence number 11667029516

131212 12:20:12 innobackupex: completed OK!

注意此文件

[root@bs-db2 inno]# more xtrabackup_binlog_info

mysql-bin.000026 32661

记录了master的备份时状态,一会儿slave同步的时候设置为master_log_file 和master_log_pos

[root@bs-db2 inno]# innobackupex --defaults-file=/etc/f --user=root --password=Abcd1234 --copy-back /opt/mysql/inno/

其中/opt/mysql/inno/为备份出来的文件位置。

[root@bs-db2 data]# chown mysql.mysql * -R 修改数据文件的权限

[root@bs-db2 data]# /etc/init.d/mysql restart

3,同步

配置主从

#master

# required unique id between 1 and 2^32 - 1

# defaults to 1 if master-host is not set

# but will not function as a master if omitted

server-id = 1

#slave

# required unique id between 1 and 2^32 - 1

# defaults to 1 if master-host is not set

# but will not function as a master if omitted

server-id = 2

更多配置参考度娘。

登入mysql shell中

mysql> change master to master_host='192.168.11.43',

-> master_port=3333,

-> master_user='slave1',

-> master_password='Abcd1234',

-> master_log_file='mysql-bin.000026',

-> master_log_pos=32661;

Query OK, 0 rows affected (0.05 sec)

这里的log_file和log_pos通过mysql数据目录下的xtrabackup_binlog_pos_innodb文件获得

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.11.43

Master_User: slave1

Master_Port: 3333

Connect_Retry: 60

Master_Log_File: mysql-bin.000026

Read_Master_Log_Pos: 32852

Relay_Log_File: bs-db2-relay-bin.000002

Relay_Log_Pos: 444

Relay_Master_Log_File: mysql-bin.000026

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

同步ok

如遇其他问题欢迎留言,共同探讨。

如果觉得《mysql innodb备份恢复和主从复制 xtrabackup工具的使用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。