MySQL备份利器之Xtrabackup--生产应用

innobackupex 的综合应用

热备份意味着你不能通过offline 掉数据库或者停止它的服务。这对于创建一个新的复
制备库非常有用。热备数据库是几分钟的事,但是dump/import 数据库却就要花上几个
小时的事了。假设我们的数据库表都是InnoDB 表,但是Percona 有个innobackupex
脚步同样可以备份MyISAM 表(如果是备份MyISAM 表的话就应该停止传送数据,并为
表加锁)

在主库备份,然后在异机创建从库(A--->B)

首先在主库上做一个全备,假设此时刻为2013-02-19_12-20-49,则会在
/home/backup 下生成一个以该时间戳为名的目录:
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf
/home/backup
并在主库上运行show master logs 查看当前的日志信息、
mysql> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 524453149 |
接着在从库上应用主库A 的全备
1)innobackupex --apply-log /home/mysqlbackup/2013-02-19_12-20-49
2)innobackupex --defaults-file=/home/mysql/mysqldata/3307/my.cnf --copy-back
/home/mysqlbackup/2013-02-19_12-20-49
下面就开始主从复制模式搭建
首先:在主库A 上创建一个复制用户
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 
repl@'192.168.0.%'
IDENTIFIED BY 'p4ssword';

其次:配置主库B 的my.cnf 配置文件
[mysqld]
log-bin=mysql-bin
server-id=10
重启主库10.16.131.202。
接着:配置从库10.16.131.201,的my.cnf 配置文件
log_bin = mysql-bin
server_id = 2
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1
重启从库10.16.131.201,并查看是否配置成功
再接下去: 就在从库上运行CHANGE MASTER 命令, 应用日志( 可以从
xtrabackup_binlog_info 查看知道备份时刻二进制日志的位置),使主从同步
mysql> CHANGE MASTER TO MASTER_HOST='server1',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='p4ssword',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=524453149;
最后,启动备库,并查看是否复制成功
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: server1
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 524453149
Relay_Log_File: mysql-relay-bin.000001

Relay_Log_Pos: 164
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...omitted...
Seconds_Behind_Master: 0
本例主要是想说明了数据库备份在数据库复制中的应用。所以对于数据库复制方面仅仅
是大概讲了一下操作过程,详细的说明文档可以查看官方文档。

在已经有的从库上备份,然后在异机创建从库
由于xtrabackup 支持在线备份,所以可以不必停止主从服务,在不影响服务及同步
的情况下,实现对从库的在线备份。原有主从模式是A-->B。现在在基础上搭建主从架构
A-->C
首先在从库B 上做一个全备,假设此时刻为2013-02-19_14-30-45,则会在
/home/backup 下生成一个以该时间戳为名的目录:
innobackupex --user=root --password=123456 --slave-info
--defaults-file=/etc/my.cnf /home/backup
接着,在主机C 上,做一次全备的还原
1)innobackupex --apply-log /home/mysqlbackup/2013-02-19_14-30-45
2)innobackupex --defaults-file=/home/mysql/mysqldata/3307/my.cnf --copy-back
/home/mysqlbackup/2013-02-19_14-30-45
再者,在主机C 上,配置my.cnf,并重启主机C 上的mysqld 服务
log_bin = mysql-bin
server_id = 3
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1
在生成的备份目录中,有一个xtrabackup_slave_info 文件,里面记录了复制结构中,主库的二进制日志位置。主要用于从库的CHANGE MASTER。
应用这个查看到的二进制位置,可以开始主从复制搭建了。剩下步骤与之前的有所重复,
所以省略不写。

 

你可能感兴趣的:(mysql,Crash,备份恢复,xtrabackup,recovery)