Home  >  Article  >  Database  >  MySQL主从热备份

MySQL主从热备份

WBOY
WBOYOriginal
2016-06-07 17:30:351043browse

多种方法实现Master数据的备份,该些数据都是在从服务器上恢复。备份之前记录主服务器上正在使用二进制日志文件的名字和POS

一、在Master不离线的前台下,去作复制的所有操作

回忆基本步骤:
1、前提:Master打开了二进制日志文件,并且设定server-id=1
2、在Master建立从服务连接所需要的帐号,权限: replication slave
3、多种方法实现Master数据的备份,该些数据都是在从服务器上恢复。备份之前记录主服务器上正在使用二进制日志文件的名字和POS
方法:
使用meb企业备份工具,自动实现记录二进制相关信息
  此种备份方法需要安装一个软件 meb ,软件默认安装在 /opt 目录下,安装过程略

          备份前在 my.cnf 中增加如下参数 (show variables like 'innodb%' )
              innodb_data_home_dir = /data/mysql                        #指定 datadir路径
              innodb_data_file_path = ibdata1:10M:autoextend
              innodb_log_group_home_dir = /data/mysql              #指定日志路径,一般同datadir路径相同
              innodb_log_files_in_group = 2
              innodb_log_file_size = 5242880
              log-bin = mysql 

方法2:
锁定所有表,记录二进制日志文件的信息。通过系统命令备份数据到从服务器。

方法3:
mysqldump做备份,通过相关参数可以上工具在热备的同时记录二进制日志文件的信息
--master-data --lock-all-tables --single-transaction

建立帐号

mysql> grant replication slave on *.* to slave@'%' identified by '123';
mysql> flush privileges;

二、使用meb去备份Master的数据
# mkdir /backup
# cd /opt/mysql/meb-3.5/
# ./bin/innobackup --user=root --password=123 --ibbackup=/opt/mysql/meb-3.5/bin/ibbackup --socket=/data/mysqld.sock /etc/my.cnf /backup  --slave-info
.....
ibbackup: A copied database page was modified at 44233.
ibbackup: Scanned log up to lsn 46136. 《---
ibbackup: Was able to parse the log up to lsn 46136.

innobackup: Backup created in directory '/backup/2011-05-19_15-21-21'
innobackup: MySQL binlog position: filename 'mysqld-binlog.000003', position 1662  《----
110519 15:21:55  innobackup: innobackup completed OK!

三、搭建从服务器Slave1
1、安装mysql服务器端,并且设定好参数,运行起来
[mysqld]
datadir=/data
user=mysql
socket=/data/mysqld.sock
innodb_data_home_dir=/data
innodb_data_file_path=ibdata1:10M:autoextend
innodb_log_group_home_dir=/data
innodb_log_files_in_group=2
innodb_log_file_size=5242880
innodb_flush_log_at_trx_commit=1
log-bin=/data/mysqld-binlog
sync_binlog=1
server-id=2  ##### 必须比自己的Master要大

log-slave-updates  #####

 


[mysqld_safe]
pid-file=/data/mysqld.pid
log-error=/data/mysqld.err
2、获得Master的备份数据,,然后恢复
1)在Master恢复数据(meb 是在备份上直接恢复,不会影响正在运行任何数据)
Master # ./bin/innobackup --apply-log --user=root --password=123 --ibbackup=/opt/mysql/meb-3.5/bin/ibbackup --socket=/data/mysqld.sock /etc/my.cnf /backup/2011-05-19_15-21-21/
2)把恢复好的数据拷贝到从服务器的数据目录
注意:强烈建议数据目录路径保持一致
Master # tar cvf master-data.tar  ./2011-05-19_15-21-21/
Master # scp master-data.tar 10.1.1.19:~/

Slave1 # tar xvf master-data.tar
Slave1 # mv 2011-05-19_15-21-21/*  /data
Slave1 # chown -R mysql:mysql  /data

3、启动,设定Master的相关信息,用于连接Master的
# service mysql start

mysql> change master to
    -> master_host='10.1.1.18',
    -> master_user='slave',
    -> master_password='123',
    -> master_log_file='mysqld-binlog.000003',
    -> master_log_pos=1662 ;
4、启用slave的相关线程
mysql> start slave;
mysql> show slave status\G;
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn