你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

架构设计(备份) linux 数据库运维 python

2021/12/2 8:16:32

mysql数据备份
mysqldump:可以用于mysql/mariadb数据库进行全量备份,冷备份   基础服务  .sql 
xtrabackup:可以用于mysql/mariadb数据库进行全量备份  增量备份   只能针对于innodb
如果想要针对于myisam  可以使用innobackupex
innobackupex   需要下载
mysqldump  
优点 
1.mysql自带的备份工具
2.可以对指定的表进行备份  备份后  直接可以使用source命令恢复数据  操作比较简单
缺点:
由于mysqldump采用的是单线程的操作,所以导致备份和恢复数据的时间比较漫长,如果
想要以效率为主,不建议采用这种办法。
innobackupex
优点:
1.可以进行热备份(数据库可以正常读写)去对数据进行备份
2.备份效率高  速度比较快
缺点:
备份和恢复的命令比较复杂
percona  ---  mysql的二开   支持更大的并发    多主集群
wget  下载   -O   指定下载路径
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@localhost yum.repos.d]# yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum如果联网  也可以下载并安装软件包   percona的yum源需要安装一下
网络yum源可以自己编写  也可以直接下载
[root@localhost yum.repos.d]# ls
aa.repo           data       percona-original-release.repo
CentOS-Base.repo  epel.repo  percona-prel-release.repo
[root@localhost ~]# yum -y install percona-xtrabackup-24.x86_64
如果命令可以tab出来   这样就安装成功
[root@localhost ~]# innobackupex
因为使用备份工具恢复数据时     数据目录下要为空    所以需要指定一个数据目录
[root@localhost ~]# vim /etc/my.cnf
datadir=/var/lib/mysql/data   更改
[root@localhost ~]# mkdir /var/lib/mysql/data
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql
[root@localhost ~]# systemctl restart mysqld
[root@localhost ~]# ls /var/lib/mysql/data/
数据目录发生改变  需要重新设置密码
[root@localhost ~]# cat /var/log/mysqld.log | grep password
2021-11-11T06:04:05.573525Z 1 [Note] A temporary password is generated for root@localhost: VHo8(lOZWEd?
[root@localhost ~]# mysql -uroot -p'VHo8(lOZWEd?'
mysql> set password=password('1234.Com');
Query OK, 0 rows affected, 1 warning (0.00 sec)
全量备份:
[root@localhost ~]# mkdir -p /data/backup
[root@localhost ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --password='1234.Com' /data/backup/
211111 14:12:32 completed OK!
[root@localhost ~]# cd /data/backup/
[root@localhost backup]# ls
2021-11-11_14-12-27
恢复数据
[root@localhost backup]# systemctl stop mysqld
[root@localhost backup]# mv /var/lib/mysql/data/ /var/lib/mysql/data1
[root@localhost backup]# mkdir /var/lib/mysql/data
[root@localhost backup]# chown -R mysql:mysql /var/lib/mysql/data
[root@localhost backup]# ls /var/lib/mysql/data
初始化:
[root@localhost backup]# innobackupex --use-memory=512M --apply-log /data/backup/2021-11-11_14-12-27/ 
恢复数据:
[root@localhost backup]# innobackupex --defaults-file=/etc/my.cnf --copy-back /data/backup/2021-11-11_14-12-27/
[root@localhost backup]# ls /var/lib/mysql/data

增量备份
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql/data
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# mysql -uroot -p'1234.Com'
mysql> create database aa;
Query OK, 1 row affected (0.00 sec)
[root@localhost ~]# ls /data/backup/
2021-11-11_14-12-27
[root@localhost ~]# innobackupex --user=root --password='1234.Com' --incremental /data/backup --incremental-basedir /data/backup/2021-11-11_14-12-27
[root@localhost ~]# du -sh /data/backup/*
142M    /data/backup/2021-11-11_14-12-27
2.9M    /data/backup/2021-11-11_14-59-53
增量备份的恢复
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# mv /var/lib/mysql/data /var/lib/mysql/data2
[root@localhost ~]# mkdir /var/lib/mysql/data
初始化增量备份
1.先初始化全量
[root@localhost ~]# innobackupex --apply-log --redo-only /data/backup/2021-11-11_14-12-27/
2.初始化全量和增量
[root@localhost ~]# innobackupex --apply-log --redo-only /data/backup/2021-11-11_14-12-27/ --incremental-dir=/data/backup/2021-11-11_14-59-53
恢复数据
innobackupex --default-file=/etc/my.cnf --copy-back /data/backup/2021-11-11_14-12-27/ 
[root@localhost ~]# cd /var/lib/mysql/data
[root@localhost data]# ls