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

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

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

1.安装备份工具

yum localinstall -y percona-xtrabackup-2.2.-.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" --host='127.0.0.1' --user=root --password=pass --socket=/tmp/mysql.sock $backpath/$back_time /usr/bin/scp -P -l -r $backpath/$back_time 172.16.155.22:/app/mysqlbak/ # delete days ago backup
/bin/find /app/mysqlbak -type d -mtime + -exec rm -rf {} \; echo "end back ${back_time}" >> /app/mysqlbak/backdb.log

chmod +x /data/scripts/backdb.sh

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

计划任务,每天晚上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" --host='127.0.0.1' --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
[root@sdtw03 data]# mv mydata mydata_old
[root@sdtw03 data]# mkdir mydata
[root@sdtw03 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

max_connections = 2000  # 最大连接数

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 yunva@106.75.74.38 identified by 'pass';
mysql>flush privileges;

修改主机名后,mysql无法正常重启,报错如下:

[root@sdtw04 ~]# /etc/init.d/mysqld restart
ERROR! MySQL server PID file could not be found!
Starting MySQL.........

是因为mysql的错误日志绑定在了原来的机器名上,需要强制关闭mysql
kill -9 pid
然后再次启动即可

一次恢复zabbix从库数据的示例

背景介绍:
数据库为zabbix
master --> slave 结构
因为zabbix数据库超过40G,单表数据量超过2亿,开始出现卡顿情况,决定进行清理
清理后发现部分历史数据需要查看,于是进行恢复 # 原备份服务器操作
.清理前在从库进行了备份,备份步骤如下
完整备份现有mysql的数据库
# completely backup
/usr/bin/innobackupex --defaults-file="/etc/my.cnf" --host='127.0.0.1' --user=root --password=pass --socket=/tmp/mysql.sock /data/mysqlbak/back_time .在原slave机器执行:回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态(主要是需要my.cnf保持一致)
innobackupex --user=root --password=pass --defaults-file=/tmp/my.cnf --apply-log /app/mysqlbak/--27_16-- # 目标服务器操作:
a.传送备份数据到要恢复的目标机器,目标机器也需要使用 在 slave 中备份的my.cnf文件,否则会报错(注意去掉read_only=on选项)
scp -P -r /data/mysqlbak/back_time dst_ip:/app/mysqlbak/ b.关掉数据库服务,迁移已有的数据目录
service mysqld stop
# cd /app/data
[root@sdtw03 data]# mv mydata mydata_old
[root@sdtw03 data]# mkdir mydata
[root@sdtw03 data]# chown -R mysql.mysql mydata
# .执行innobackupex恢复命令
innobackupex --defaults-file=/etc/my.cnf --host='127.0.0.1' --user=root --password=pass --copy-back /app/mysqlbak/--27_16-- # .修改权限,启动服务
chown -R mysql.mysql /app/data/mydata
service mysqld start 此时就可以正常进行启动了

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

  1. 关于MySQL数据库的备份方案

    这里简单总结MySQL的备份分为3种:分为冷备份,逻辑备份,热备份. 1.冷备份: 一般主要用于非核心业务,这类业务一般都是允许业务中断的,冷备份的特点就是数度快,恢复时也最为简单.通常直接复物理文件 ...

  2. 通过xtrabackup工具对mysql数据库做全备

    需求描述: 使用xtrabackup工具对mysql实例中的所有的数据库进行备份,并且将备份的过程输出到指定的日志文件中. 操作过程: 1.使用xtrabacup工具备份mysql实例 xtrabac ...

  3. mysqldump工具实现mysql数据库的备份还原

    简介 冷.温.热备份 冷备:读写操作均不可进行 温备:读操作可执行:但写操作不可执行 热备:读写操作均可执行 MyISAM:温备,不支持热备 InnoDB:都支持 不管是热备还原还是冷备还原,还原时都 ...

  4. MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库【转载】

    转自 MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库 - _安静 - 博客园http://www.cnblogs.com/xionghui/archive/2012/ ...

  5. pycharm工具连接mysql数据库失败

    在使用pycharm开发工具连接mysql数据库时提示错误,信息如下: Server returns invalid timezone. Go to 'Advanced' tab and set 's ...

  6. mysql数据库的备份和还原的总结

    mysql数据库的备份和还原的总结 (来自一运维同事的总结) 1. 备份方式: 热备:数据库在线进行备份,不影响读和写的在线备份方式! 温备:数据库在线进行备份,对表备份时先锁定写操作,仅可以执行读操 ...

  7. 企业级mysql数据库完全备份、增量备份脚本

    企业完全备份脚本 [root@client ~]# vim /opt/mysql_bak_wanbei.sh #!/bin/bash #MySQL数据库完全备份脚本 #设置登录变量 MY_USER=& ...

  8. MySQL数据库入门备份数据库

    MySQL数据库入门——备份数据库   一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点....... ...

  9. 如何用SQL语句实现Mysql数据库的备份与还原

    以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...

随机推荐

  1. HDU - 1542 Atlantis(线段树求面积并)

    https://cn.vjudge.net/problem/HDU-1542 题意 求矩形的面积并 分析 点为浮点数,需要离散化处理. 给定一个矩形的左下角坐标和右上角坐标分别为:(x1,y1).(x ...

  2. Vue 架构

    vue 一.认识Vue 定义:一个构建数据驱动的 web 界面的渐进式框架 优点: 1.可以完全通过客户端浏览器渲染页面,服务器端只提供数据 2.方便构建单页面应用程序(SPA) 二.引入Vue &l ...

  3. 局域网内ping [局域网内ip地址]命令详解

    一.工作过程 主机A向主机B发送一个ICMP请求报文[类型字段为8,代码字段为0],若收到ICMP回复报 文[类型字段为0,代码字段为0]则说明主机B处于活动状态:若超时未收到回复,则可能是 因为(1 ...

  4. Linux文件权限设置

    基本概念 https://linux.cn/article-7418-1.html#3_8880 用户管理 文件权限设置 -添加用户账户08% -理解 /etc/passwd 中的内容12% -理解 ...

  5. FFI

    FFI概念 https://segmentfault.com/t/ffi/info FFI即Foreign Function Interface,外部函数调用接口,是一个语言提供的使用其他语言现有库( ...

  6. luogu P3242 [HNOI2015]接水果

    传送门 其实这题难点在于处理路径包含关系 先求出树的dfn序,现在假设路径\(xy\)包含\(uv(dfn_x<dfn_y,dfn_u<dfn_v)\) 如果\(lca(u,v)!=u\) ...

  7. 第28月第22天 iOS动态库

    1. NIMSDK 在 5.1.0 版本之后已改为动态库,集成方式有所改变,若需要集成高于此版本的 SDK,只需要做以下步骤: 将下载的 SDK 拖动到 Targets -> General - ...

  8. MacOS安装kafka可视化工具Kafka Tool

    1 下载地址 http://www.kafkatool.com/download.html 2 下载dmg包,选择对应版本,我的kafka是2.1的版本,所以选择了Kafka Tool 2.0.4 3 ...

  9. 【mmall】mybatis三剑客

    mybatis-generator mybatis-plugin Mybatis Plugin插件安装破解及使用:http://blog.csdn.net/u011410529/article/det ...

  10. L3-2 森森快递 (30 分)(贪心+线段树/分块)

    题目链接:https://pintia.cn/problem-sets/1108203702759940096/problems/1108204121661857798 题目大意: 森森开了一家快递公 ...