使用percona-xtrabackup工具对mysql数据库的备份方案
使用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数据库的备份方案的更多相关文章
- 关于MySQL数据库的备份方案
这里简单总结MySQL的备份分为3种:分为冷备份,逻辑备份,热备份. 1.冷备份: 一般主要用于非核心业务,这类业务一般都是允许业务中断的,冷备份的特点就是数度快,恢复时也最为简单.通常直接复物理文件 ...
- 通过xtrabackup工具对mysql数据库做全备
需求描述: 使用xtrabackup工具对mysql实例中的所有的数据库进行备份,并且将备份的过程输出到指定的日志文件中. 操作过程: 1.使用xtrabacup工具备份mysql实例 xtrabac ...
- mysqldump工具实现mysql数据库的备份还原
简介 冷.温.热备份 冷备:读写操作均不可进行 温备:读操作可执行:但写操作不可执行 热备:读写操作均可执行 MyISAM:温备,不支持热备 InnoDB:都支持 不管是热备还原还是冷备还原,还原时都 ...
- MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库【转载】
转自 MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库 - _安静 - 博客园http://www.cnblogs.com/xionghui/archive/2012/ ...
- pycharm工具连接mysql数据库失败
在使用pycharm开发工具连接mysql数据库时提示错误,信息如下: Server returns invalid timezone. Go to 'Advanced' tab and set 's ...
- mysql数据库的备份和还原的总结
mysql数据库的备份和还原的总结 (来自一运维同事的总结) 1. 备份方式: 热备:数据库在线进行备份,不影响读和写的在线备份方式! 温备:数据库在线进行备份,对表备份时先锁定写操作,仅可以执行读操 ...
- 企业级mysql数据库完全备份、增量备份脚本
企业完全备份脚本 [root@client ~]# vim /opt/mysql_bak_wanbei.sh #!/bin/bash #MySQL数据库完全备份脚本 #设置登录变量 MY_USER=& ...
- MySQL数据库入门备份数据库
MySQL数据库入门——备份数据库 一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点....... ...
- 如何用SQL语句实现Mysql数据库的备份与还原
以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...
随机推荐
- 转---redshift database ---学习
摘自他人 前沿 根据最近一段时间对redshift的研究,发现一些特性比较适合我们当前的业务. 1 比如它的快速恢复能力,因为这一点,我们可以尽量在redshit里面存放一定生命周期的数据,对过期的数 ...
- vue中slot插槽
插槽就是vue实现的一套内容分发的API,将插槽元素作为承载分发内容的出口. 也就是说在组件模板中默认占用一个位置,当使用组件标签时候,组件标签的内容就会自动替换掉内容 slot中可以设置一些默认的内 ...
- vue cli 解决跨域 线上 nginx 反向代理配置
前后分离 axios 接 api 跨域问题如图: 解决办法: 1. npm start 本地开发环境解决: 在webpack配置文件 /config/index.js 里找到 proxyTable 开 ...
- AndroidStudio替换空行
(1)在Edit Replace In Path输入框中输入:^\s*\n (\s代表任何空白字符,\S代表任何非空白字符,*代表任意个数,\n匹配换行符) (2)Replace With输入框的值为 ...
- listView item分割线不显示
在华为平板上列表上分割线第一个不显示,增大dividerHeight代码解决 <ListView android:id="@+id/list_view" android:di ...
- termios结构体的内容
一.结构体成员 struct termios { tcflag_t c_iflag; tcflag_t c_oflag; tcflag_t c_cflag; tcflag_t c_lflag; cc_ ...
- UML之涉众/参与者(角色/执行者)(Actor)/业务主角(BusinessActor)/业务工人(BusinessWorker)/用户/角色辨析【图解】
参考文档: [业务建模](http://www.baike.com/wiki/%E4%B8%9A%E5%8A%A1%E5%BB%BA%E6%A8%A1) [UML 核心元素之参与者](http://w ...
- luogu P4770 [NOI2018]你的名字
传送门 upd 19.4.24: WC这个做法真的有问题,不往回跳会WA是因为一开始跳到了S[1...l-1]所对应的点,然后往后接字符的时候可能会因为不在正确的endpos中,然后往回跳过头,其实一 ...
- linux时间戳和时间格式的转化
1.将时间戳转化为yyyy-MM-dd HH:mm:ss时间格式 date -d @时间戳(秒) 2.设置服务器时间---特别注意使用 date -s 时间
- C++中,有哪4种与类型转换相关的关键字?各有什么特点?应该在什么场合下使用?
转:https://www.cnblogs.com/mjiang2017/p/9358032.html C++中,四个与类型转换相关的关键字:static_cast.const_cast.reinte ...