使用percona-xtrabackup工具对mysql数据库的备份方案

需要备份mysql的主机 172.16.155.23
存放备份mysql的主机 172.16.155.22

目的:将155.23主机上mysql数据库每天全量备份一次,并且同步到远程主机中

1.安装备份工具

yum localinstall -y percona-xtrabackup-2.2.9-5067.el6.x86_64.rpm

2.编写备份数据库脚本:

vim /data/scripts/backdb.sh

#!/bin/bash

back_time=`date +%Y%m%d%H%M%S`
backpath="/app/mysqlbak"
cd $backpath && /bin/mkdir $back_time

echo "start back ${back_time}" >> /app/mysqlbak/backdb.log
# completely backup
/usr/bin/innobackupex --defaults-file="/etc/my.cnf" --user=root --password=pass --socket=/tmp/mysql.sock $backpath/$back_time

/usr/bin/scp -P 58422 -l 200000 -r $backpath/$back_time 172.16.155.22:/app/mysqlbak/

# delete 15 days ago backup
/bin/find /app/mysqlbak -type d -mtime +15 -exec rm -rf {} \;

echo "end back ${back_time}" >> /app/mysqlbak/backdb.log

chmod +x /data/scripts/backdb.sh

3.配置155.23免密码访问155.22
[[email protected] 20171127]# ssh-keygen -t rsa -P ‘‘
如果ssh端口非默认的22端口,使用如下命令:
ssh-copy-id -i /root/.ssh/id_rsa.pub "-p 58422 [email protected]"

计划任务,每天晚上1点1分备份一次:
1 1 * * * /bin/bash /data/scripts/bakdb.sh >/dev/null 2>&1

4.目标备份服务器配置,删除7天以前的备份:
mkdir -p /app/mysqlbak/

2 2 * * * /bin/find /app/mysqlbak/ -mtime +7 -exec rm -rf {} \;

数据库的临时方案:
1.配置两台服务器都启动mysql服务,其中一台是目前正在运行的服务器,另外一台作为备用
2.每天备份一次数据,然后传送到远程服务器,删除10天以前的备份
3.如果正在使用的mysql宕机则恢复最新数据到备用mysql,然后恢复最新数据到备用mysql
记得修改解析/etc/hosts文件
172.16.155.23 db.mysql.com

恢复的具体操作:

恢复准备工作:
目标服务器安装和原服务器一样的Mysql版本(见最下面的附录)

# 1.完整备份现有mysql的数据库
# completely backup
/usr/bin/innobackupex --defaults-file="/etc/my.cnf" --user=root --password=pass --socket=/tmp/mysql.sock /app/mysqlbak/back_time

# 2.传送备份数据到目标机器
scp -P 58422 -r 2017-11-27_16-52-50 172.16.155.22:/app/mysqlbak/

# 3.目标机器执行:

# 因此,我们现在就是要通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态
innobackupex --user=root --password=pass --defaults-file=/tmp/my.cnf --apply-log /app/mysqlbak/2017-11-27_16-52-50

# 4.关掉服务,迁移已有的数据目录
service mysqld stop
# cd /app/data
[[email protected] data]# mv mydata mydata_old
[[email protected] data]# mkdir mydata
[[email protected] data]# chown -R mysql.mysql mydata
# 5.执行innobackupex恢复命令
innobackupex --defaults-file=/etc/my.cnf --user=root --password=pass --copy-back /app/mysqlbak/2017-11-27_16-52-50

# 6.修改权限,启动服务
chown -R mysql.mysql /app/data/mydata
service mysqld start

安装数据库mysql5.6二进制版本
安装包mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

groupadd -r mysql
useradd -g mysql -r -s /sbin/nologin mysql
tar -zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz -C /usr/local

cd /usr/local
ln -sv mysql-5.6.36-linux-glibc2.5-x86_64 mysql

cd mysql
chown -R root.mysql ./*

mkdir /app/data/mydata -p
chown -R mysql.mysql /app/data/mydata
mkdir /app/data/binlogs
chown -R mysql.mysql /app/data/binlogs

cd /usr/local/mysql
scripts/mysql_install_db --datadir=/app/data/mydata --user=mysql

将服务脚本拷贝到启动项
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld

\cp my.cnf /etc/my.cnf

vim /etc/my.cnf

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8

[mysqld]
port = 3306
innodb_file_per_table = 1
init-connect = ‘SET NAMES utf8mb4‘
character-set-server = utf8mb4
default_storage_engine = InnoDB
skip-name-resolve
skip-external-locking

datadir = /app/data/mydata
log-bin=/app/data/binlogs/master-bin
binlog_format=row

socket=/tmp/mysql.sock

interactive_timeout = 28800
wait_timeout = 28800

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqldump]
quick
max_allowed_packet = 16M

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

# 启动服务
service mysqld start

删除匿名用户,配置root密码
mysql> delete from user where host=‘::1‘;
mysql> delete from user where host=‘sdtw03‘;
mysql> delete from user where host=‘localhost‘ and user=‘‘;

mysql> update user set password=PASSWORD(‘pass‘) where user=‘root‘;
mysql> flush privileges;

添加yun具有所有权限
mysql>grant all privileges on *.* to [email protected] identified by ‘pass‘;
mysql>flush privileges;

时间: 2024-10-07 18:36:51

使用percona-xtrabackup工具对mysql数据库的备份方案的相关文章

设置mysql数据库自动备份

由于项目需要,在windows下的mysql实现数据库自动备份.经资料查询和尝试,得出方法有两种: 1.使用windows自带的任务计划,然后定时执行一个数据库备份的脚本. 2.使用mysql管理工具navicat配置数据库的备份 这里,由于第二种方法比较简单实用,我就简单描述下第二种方法(因为简单). 工具: navicat for mysql mysql 5.5 步骤: 1.打开navicat客户端,连上mysql后,双击左边你想要备份的数据库.点击“计划”,再点击“新建批处理作业”. . 

Windows Server服务器端MySQL数据库自动备份

1.给root账户授权所有sql权限 grant all privileges on *.* to [email protected]"%" identified by "."; flush privileges; 2.建立bat批处理文件 @echo off set path=%path%;D:\Program Files\MySQL\MySQL Server 5.5\bin set y=%date:~0,4% set m=%date:~5,2% set d=%d

MySQL数据库-完全备份及恢复

MySQL数据库-完全备份及恢复 数据库备份的分类 物理角度: 冷备份:也称脱机备份,特点:关掉数据库再备份 热备份:也称联机备份,特点:开启数据库再备份 温备份:数据库只有可读权限的状态下备份 逻辑角度: 对数据库的对象的备份,例如数据表,及数据表中的一些sql语句等 备份策略角度: 完全备份:每次对数据进行整体的备份 差异备份:在第一次完整备份a数据后,以后的每次的备份是a+b,b就是针对于a数据发生变化的数据,称之为'差异数据'.缺点:b的数据内存会越来越大b+=b,导致数据恢复缓慢.恢复

mysqldump常用于MySQL数据库逻辑备份

mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文件(转储文件)中,比如: mysqldump -uroot -p123 test > test.dump 生成的test.dump文件中包含建表语句(生成数据库结构哦)和插入数据的insert语句. B. --opt 如果加上--opt参数则生成的du

[知了堂学习笔记]_Java代码实现MySQL数据库的备份与还原

通常在MySQL数据库的备份和恢复的时候,多是采用在cmd中执行mysql命令来实现. 例如: mysqldump -h127.0.0.1 -uroot -ppass test > d:/test.sql ---备份test数据库到 D 盘 mysql -h127.0.0.1 -uroot -ppass test< test.sql ---将D备份的数据库脚本,恢复到数据库中 更多命令参看:http://www.cnblogs.com/xcxc/archive/2013/01/30/28828

使用LVM快照实现对mysql数据库的备份

数据库备份有多种方法,今天介绍下使用lvm的快照功能完成对mysql数据库的备份.lvm在对数据进行备份的时候可以提供近乎热备的方式,它的工作机制是这样的:在某一时刻对数据库所在目录创建快照卷,由此,通过快照卷访问的数据就是保存快照那一刻时的数据,而后将快照卷中的数据拷贝至其他目录即可,之所以称他为近乎热备是因为在创建快照的时候需要对数据库施加读锁,在这期间数据库不能进行写操作. 使用lvm备份数据库的前提  1,数据文件必须在lv中 2,此逻辑卷所在的卷组必须有足够的空间使用快照卷 3, 数据

mysql数据库定时备份

操作步骤:1.将脚本放到任意位置下,不容易被误删即可2.定时任务,一周执行一次脚本 脚本如下:#!bin/bash backuppath=/data/mysql/backup date=$(date +%Y%m%d%H%M) SQLuser=root SQLpwd=password mysqldump=/usr/local/mysql/bin/mysqldump mysql=/usr/local/mysql/bin/mysql HIS_Date=`date -d $(date -d "-30 d

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: import pymysql # 导入py模块 conn= pymysql.connect("数据库ip","用户","密码","数据库" ) # 打开数据库连接 cursor.execute("SELECT VERSI

MySQL数据库的备份与恢复之xtrabackup工具的使用

一. 为什么需要备份 在实际生产环境中误删操作,硬件损坏都会导致数据不可用,这个时候我们就需要备份来实现灾难恢复.还需要硬件级的冗余,例如raid,也不能取代备份操作,因为数据误删之后数据也是没有的,所以备份必不可少. 二. 备份的分类 1.物理备份和逻辑备份 物理备份 : 它是直接拷贝mysql的存储在磁盘上的数据文件.这种备份使用的空间大,特别是innodb存储数据使用的表空间,因为表空间分配大小是按一定的比例增长,所以存在没有使用的空间.但是恢复时使用的时间少.逻辑备份 : 将数据以sql