物理备份案例

例一:tar备份数据库(物理备份)

注意:备份期间,服务不可用
备份过程

1.停止数据库:systemctl stop mariadb ; mkdir /backup
2.tar备份数据: tar -cvf  /backup/mysqlbackup.tar /var/lib/mysql
3.启动数据库:systemctl start mariadb

还原过程

1.停止数据库:systemctl stop mariadb 
2.导入备份数据:tar -xf mysqlbackup.tar /var/lib/mysql
3.权限 :chown -R mysql.mysql /var/lib/mysql
4.启动数据库:systemctl start mariadb

例二:快照实现物理备份

lvm创建逻辑卷管理

[root@localhost ~]#pvcreate /dev/sdb
[root@localhost ~]#vgcreate vg_mariadb /dev/sdb
[root@localhost ~]#lvcreate -l 100 -n lv_mariadb vg_mariadb
[root@localhost ~]#mkfs.xfs /dev/vg_mariadb/lv_mariadb
[root@localhost ~]#mount /dev/vg_mariadb/lv_mariadb /var/lib/mysql

挂载:

MySQL运行一段时间,数据并没有存储LVM:将现在的数据迁移到LVM
1. 将数据迁移到LVM
[root@tianyun ~]# systemctl stop mysqld
[root@tianyun ~]# mount /dev/datavg/lv-mysql /mnt/                        //临时挂载点
[root@tianyun ~]# cp -a /var/lib/mysql/* /mnt                                   //将MySQL原数据镜像到临时挂载点

[root@tianyun ~]# umount /mnt/
[root@tianyun ~]# vim /etc/fstab                                                       //加入fstab开机挂载
/dev/datavg/lv-mysql    /var/lib/mysql          xfs     defaults        0 0

[root@tianyun ~]# mount -a
[root@tianyun ~]# chown -R mysql.mysql /var/lib/mysql
[root@tianyun ~]# systemctl start mysqld

二进制日志

【如何开启mysql5.7的binlog日志呢?
在my.inf主配置文件中直接添加三行
[plain] view plain copy
log_bin=ON  
log_bin_basename=/var/lib/mysql/mysql-bin  
log_bin_index=/var/lib/mysql/mysql-bin.index  
三个参数来指定,
第一个参数是打开binlog日志
第二个参数是binlog日志的基本文件名,后面会追加标识来表示每一个文件
第三个参数指定的是binlog文件的索引文件,这个文件管理了所有的binlog文件的目录

当然也有一种简单的配置,一个参数就可以搞定
[plain] view plain copy 
1.log-bin=/var/lib/mysql/mysql-bin  
这一个参数的作用和上面三个的作用是相同的,mysql会根据这个配置自动设置log_bin为on状态,自动设置log_bin_index文件为你指定的文件名后跟.index

这些配置完毕之后对于5.7以下版本应该是可以了,但是我们这个时候用的如果是5.7及以上版本的话,重启mysql服务会报错。这个时候我们必须还要指定一个参数
[plain] view plain copy 
2.server-id=123454  
随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了

有了上述的配置之后,我们就可以重新启动我们的mysql了
3.service mysqld restart

启动成功之后,我们可以登陆查看我们的配置是否起作用
[plain] view plain copy 
4.show variables like '%log_bin%'  】

开启mariadb二进制日志
vim /etc/my.cnf
log-bin=/var/log/mysql/mylog
systemctl restart mariadb
cd /var/lib/mysql
ls


1\. 重启mysqld 会截断
2\. flush logs 会截断
3\. reset master 删除所有binlog rm -rf /
4\. 删除部分
PURGE BINARY LOGS TO 'mysql-bin.010';
PURGE BINARY LOGS BEFORE '2016-04-02 22:46:26';

5\. 暂停 仅当前会话 SET SQL_LOG_BIN=0;
SET SQL_LOG_BIN=1;

6\. 截取binlog
all:
# mysqlbinlog mysql.000002

datetime:

# mysqlbinlog mysql.000002 --start-datetime="2018-12-05 10:02:56" --stop-datetime="2018-12-05 11:02:54"| mysql -u root -p'Qingyang@123'

position:
mysqlbinlog --start-position 744 --stop-position 844  mysql-bin.000001 | mysql -u root -p'Qingyang@123'


**Slow Query Log**
slow_query_log=1
slow_query_log_file=/var/log/mysql-slow/slow.log
long_query_time=3

# mkdir /var/log/mysql-slow/
# chown mysql.mysql /var/log/mysql-slow/
# systemctl restart mysqld

查看慢查询日志
测试:BENCHMARK(count,expr)
SELECT BENCHMARK(50000000,2*3);

快照备份

创建LVM逻辑卷的时候,并不会发生数据的物理复制。再换句话说,>复制元数据,不复制物理数据
使用前提:
1.数据文件要在逻辑卷上
2.此逻辑卷所在卷组必须有足够的空间使用了快照卷
3.数据文件和事务日志要在同一个逻辑卷上

将数据迁移到LVM
systemctl stop mariadb
pvcreate /dev/sdb1
vgcreate myvg /dev/sdb1
lvcreate -n mydata -L +1G myvg
mkfs.ext4 /dev/myvg/mydata
mkdir /mysql_data
mount /dev/myvg/mydata /var/lib/mysql
or
vim /etc/fstab                                      //加入fstab开机挂载
/dev/datavg/lv-mysql    /var/lib/mysql          xfs     defaults        0 0
cp -a /var/lib/mysql/* /mnt
chown -R mysql.mysql /var/lib/mysql
systemctl start mariadb

关闭锁 创建快照
echo "FLUSH TABLES WITH READ LOCK; SYSTEM lvcreate -L 100M -s -n lv_snap /dev/myvg/mydata; \
UNLOCK TABLES;" | mysql -uroot

从快照中备份
mount -o ro /dev/myvg/lv_snap /lvm_data       //xfs -o ro,nouuid
cd /lvm_data
mkdir /backup
tar -cf /backup/`date +%F`-mysql-all.tar ./*

移除快照
cd; umount /lvm_data/
lvremove -f /dev/myvg/lv_snap

LVM快照恢复流程:
1. 停止数据库  systemctl stop mariadb 
2. 清理环境    rm -rf /var/lib/mysql/*
3. 导入数据
4. 修改权限
5. 启动数据库
6. binlog恢复
[root@slave2 ~]# tar -xf /backup/2016-12-07-mysql-all.tar -C /var/lib/mysql/
[root@slave2 ~]# chown -R mysql.mysql /var/lib/mysql/*
[root@slave2 ~]# systemctl start maria

你可能感兴趣的:(物理备份案例)