IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> mysql数据备份管理 -> 正文阅读

[系统运维]mysql数据备份管理

数据库管理员 root密码管理

操作系统管理员,修改本机数据库服务管理员登录密码

1)修改密码 alter user

[root@test ~]# mysqladmin -uroot -p123456 password "135790"  #方法一
[root@test ~]# mysql  -uroot -p135790
mysql> alter user root@"localhost" identified by "123456";   #方法二
mysql> exit
[root@test ~]# mysql  -uroot -p123456
mysql> exit

2)破解数据库管理员root密码skip_grant_tables

a.修改服务运行参数,要重启数据库服务

~]# vim /etc/my.cnf
[mysqld]
skip_grant_tables		#添加的参数
#validate_password_policy=0    #如果更改了密码策略。请注释
#validate_password_length=6
[root@test ~]# systemctl restart mysqld
[root@test ~]# mysql  -uroot -p1
mysql> exit

b.登录mysql修改密码

mysql> desc mysql.user ;      密码记录字段
| authentication_string  | text               | YES  |     | NULL  
mysql> update mysql.user set authentication_string=password("456789") where user="root" and host="localhost";
mysql> exit
[root@test ~]# vim /etc/my.cnf
[mysqld]
secure_file_priv="/myload"
#skip_grant_tables
validate_password_policy=0  如果存在密码策略。请去#
validate_password_length=6
[root@test ~]# systemctl restart mysqld
[root@test ~]# mysql -uroot -p456789
mysql> exit

数据的备份与恢复

一、数据备份的方式介绍
1.物理备份 冷备:cp 、tar、…

[root@test ~]# cp -r /var/lib/mysql /root/mysql.bak     #备份
[root@test ~]# tar -zcf /root/mysql.tar.gz /var/lib/mysql			#备份
[root@test ~]# rm -rf /var/lib/mysql  #模拟删除
[root@test ~]# systemctl stop mysqld				
[root@test ~]# cp -r /root/mysql.bak/*  /var/lib/mysql		#恢复
[root@test ~]# chown -R mysql:mysql /var/lib/mysql    
[root@test ~]# systemctl start mysqld
[root@test ~]#  cp -rp /var/lib/mysql   /root/mysql.bak  #不用改属组

2.逻辑备份

mysqldump 对数据库做备份,对应的恢复命令是mysql
启用mysql服务的binlog日志文件实现对数据的实时备份,使用binlog日志恢复数据。
使用源软件提供的innobackupex命令对数据做备份和恢复

3.备份策略
完全备份:备份所有数据
增量备份:备份上次备份后,所有新产生数据
差异备份:完全备份后,所有新产生的数据
工作总常用的备份策略
1完全备份+增量备份 完+增1+增2+增3+增4+增5,恢复数据时需要所有,每日备份量相当,节省存储,但都重要
2完全备份+差异备份 完+差1+差2+差3+差4+差5,恢复数据时需要完+差5,每日备份量日增,存储消耗较大,不是每份都有用

二、使用mysqldump对数据做完全备份恢复

1.备份命令格式mysqldump -uroot -p密码 库名 >目录/xxx.sql

1)对所有库备份 -all-databases或-A		
[root@test ~]# mysqldump -uroot -p456789 --all-databases > ./allbak.sql
[root@test ~]# ls
allbak.sql

2)对单个库备份
~]# mysqldump -uroot -p456789 mydb > /bak/onedb.sql

3)对库下的单个表备份
~]# mysqldump -uroot -p123456 mydb t1 > /bak/onetable.sql

4)对多个库备份
~]# mysqldump -uroot -p123456 -B  mydb user > /bak/twodb.sql
#  -B   导入数据库时,自动创建库。否则导入失败。

2.使用备份文件恢复数据

1)库文件恢复命令格式 mysql -uroot -p密码 [库名]< 目录/xxx.sql
mysql> drop database user;
mysql> drop database mydb;
[root@test ~]# mysql -uroot -p456789  < ./twodb.sql
#twodb.sql是库文件,前面不在加库名,单独的表恢复时必须加库名
[root@test ~]# mysql  -uroot  -pl23456 <  /root/twodb.sql 
[root@test  ~]# mysql -uroot -p456789
mysql>  show databases;				#能够看到多出来新库了
mysql> drop database user;
mysql> drop database mydb;
mysql>  show databases;	
mysql> source twodb.sql			#在数据库登录的情况下用source导入
2)表文件恢复   前面需要加库名
mysql> use mydb;
mysql> show tables;
t1
mysql> drop table t1;
[root@test ~]# mysql -uroot -p456789  mydb t1 < ./onetable.sql

mysqldump优点与缺点:
命令执行过程中,表被锁定,不允许客户端访问。适合备份数据量比较小的数据,做好再服务器访问量少的时候使用。只能把数据恢复到备份时的状态。是mysql自带的备份工具。

生产中你要可以用navicate软件导出sql文件备份

三、增量备份 备份新产生的数据
1.binlog日志设置介绍
也称做二进制日志,MySQL服务日志文件的一种。记录除查询之外的所有SQL命令,可用于数据备份和恢复,是配置mysql主从同步的必要条件
mysql服务有4种日志文件:错误日志、 binlog日志、查询日志、慢查询日志,默认启用错误日志

1)启用binlog日志实现对数据的实时备份
[root@test ~]# vim /etc/my.cnf
[mysqld]
log_bin
server_id=18
[root@test ~]# systemctl restart mysqld
[root@test ~]# mysql -uroot -p456789
mysql> show master status ;
+-----------------+----------+--------------+------------------+-------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| test-bin.000001 |      154 |              |                  |                   |
+-----------------+----------+--------------+------------------+-------------------+
[root@test ~]#  ls /var/lib/mysql      #默认路径
test-bin.000001 test-bin.index		#主机名-bin.000001自动创建2.3...
server_id=数字				 指定id值(1-255)  一般设置为本机ip
log_bin=[目录名/文件名]	 启用binlog日志,指定目录,需改属组
max_binlogsize=数值m 	 指定日志文件容量,默认1G。超出再建,不自动删除

2)修改日志文件的存放目录和日志名

[root@test ~]# vim /etc/my.cnf
[mysqld]
server_id=18
log_bin=/mylog/dachui
[root@test ~]# mkdir /mylog
[root@test ~]# chown mysql:mysql  /mylog
[root@test ~]# setenforce 0
[root@test ~]# systemctl restart myslqd
[root@test ~]# mysql  -uroot  -p456789  -e  'flush log'    #或者进入mysql刷新
[root@test ~]# mysql -uroot -p456789
mysql> flush logs;
[root@test ~]# ls /mylog
data.000001  data.index				#新生成的文件

4)清理日志 rm -rf /mylog/* reset master

mysql> flush logs;			#生成新的日志
[root@test ~]# ls /mylog
data.000001  data.000002  data.index			
mysql> flush logs;			#生成新的日志
[root@test ~]# ls /mylog
data.000001	 data.000002  data.000003  data.index
mysql> purge master logs to "data.000002";  #删除02之前的日志
[root@test ~]# ls /mylog
data.000002  data.000003  data.index
mysql> purge master logs to "data.000003";  
[root@test ~]# ls /mylog
data.000003  data.index
mysql> reset master;
[root@test ~]# ls /mylog
data.000001  data.index

使用binlog日志恢复数据

1)查看日志 mysqlbinlog [选项] binlog日志文件名

[root@test ~]# mysqlbinlog /mylog/data.000001
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#220225  8:40:17 server id 50  end_log_pos 123 CRC32 0x6d71000a         
Start: binlog v 4, server v 5.7.17-log created 220225  8:40:17 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
QdwYYg8yAAAAdwAAAHsAAAABAAQANS43Lj...

binlog日志文件记录命令的方式,选项写一个时,默认从开头执行或执行到结尾
a.通过偏移量

--start-position=数字         --stop-position=数字

b.通过执行命令时的时间

--start-datetime="yyyy-mm-dd hh:mm:ss"           
--stop-datetime="yyyy-mm-dd hh:mm:ss"   

2)恢复mysqlbinlog /目录/日志名 | mysql -uroot -p密码
恢复数据的基本思路:查看日志文件的执行内容,管道给连接数据库的mysql 执行

[root@test1 ~]# mysql -uroot -p456789 db 
mysql> reset master;
mysql> select count(*) from db.user;
+----------+
| count(*) |
+----------+
|       32 |
+----------+
[root@test1 ~]# mysqldump -uroot -p456789 --flush-logs db > /root/db.sql
[root@test1 ~]# scp db.sql root@192.168.1.17:/root/
[root@test ~]# mysql -uroot -p456789 db 
mysql> insert  into  db.user(name,uid,gid,homedir) values ("B4",1,1,"bj");
mysql> insert  into  db.user(name,uid,gid,homedir) values ("B4",1,1,"bj");
mysql> insert  into  db.user(name,uid,gid,homedir) values ("B4",1,1,"bj");
mysql> select count(*) from db.user;
+----------+
| count(*) |
+----------+
|       35 |
+----------+
mysql> flush logs;
mysql> show master status;
+-------------+----------+--------------+------------------+-------------------+
| File        | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------+----------+--------------+------------------+-------------------+
| data.000002 |      154 |              |                  |                   |
+-------------+----------+--------------+------------------+-------------------+
mysql> exit
[root@test ~]# scp /mylog/data.000001 root@192.168.1.17:/root/
[root@test2 ~]# mysql  -uroot  -p123456  db  <  db.sql
[root@test2 ~]# mysql  -uroot  -p123456  db
mysql> select count(*) from db.user;
+----------+
| count(*) |
+----------+
|       32 |
+----------+
mysql> truncate db.user;		#清除数据,保留了表结构
mysql> select count(*) from db.user;		
+----------+
| count(*) |
+----------+
|        0 |
+----------+
mysql> exit
[root@test2 ~]# mysqlbinlog  data.000001  |  mysql -uroot -p123456
mysql> select count(*) from db.user;
[root@test2 ~]# mysql  -uroot  -p123456  db -e "select count(*) from db.user"
+----------+
| count(*) |
+----------+
|       35 |
+----------+

3)部分恢复binlog_format=“mixed” 时间或偏移值

a.修改日志记录格式 mixd,模式
statement 报表模式
row 行模式,默认的模式
mixed 混合模式,可以查看到执行的sql命令行

[root@test ~]# vim /etc/my.cnf
[root@test ~]# systemctl restart mysqld
[root@test ~]# mysql -uroot -p456789
mysql> show variables like "binlog_format";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | MIXED |
+---------------+-------+
mysql> show master status;
+-------------+----------+--------------+------------------+-------------------+
| File        | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------+----------+--------------+------------------+-------------------+
| data.000003 |      154 |              |                  |                   |
+-------------+----------+--------------+------------------+-------------------+
mysql> insert  into  db.user(name,uid,gid,homedir) values ("B4",1,1,"bj");
Query OK, 1 row affected (0.06 sec)

mysql> show master status;
+-------------+----------+--------------+------------------+-------------------+
| File        | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------+----------+--------------+------------------+-------------------+
| data.000003 |      489 |              |                  |                   |
+-------------+----------+--------------+------------------+-------------------+
mysql> select count(*) from db.user;
+----------+
| count(*) |
+----------+
|       36 |
+----------+

b.mysqlbinlog查看日志中执行的指令

查看命令的起始时间 起始偏移量 在记录命令的上方
查看命令的结束时间 结束偏移量 在记录命令的下方 (不要文件记录的最后1条命令,要把commit对应结束时间结束偏移量包涵在内)查看日志文件内容加选项,适合恢复指定的数据)

[root@test ~]# mysqlbinlog /mylog/data.000003
...
#220225 21:35:22 server id 50  end_log_pos 324 CRC32 0xc443ad78         Intvar
SET INSERT_ID=33/*!*/;
#220225 21:35:22 server id 50  end_log_pos 458 CRC32 0x4bbf3e31         Query   thread_id=3     exec_time=0     error_code=0
SET TIMESTAMP=1645842922/*!*/;
insert  into  db.user(name,uid,gid,homedir) values ("B4",1,1,"bj")  #执行的命令
/*!*/;
# at 458
#220225 21:35:22 server id 50  end_log_pos 489 CRC32 0x2627e627         Xid = 6
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
...

insert命令执行前的偏移量是458

[root@test ~]# mysqlbinlog --start-position=154 --stop-position=458  /mylog/data.000003 |mysql -uroot -p456789[root@test ~]# mysql  -uroot  -p456789  db -e "select count(*) from db.user"
+----------+
| count(*) |
+----------+
|       35 |
+----------+

insert命令执行结束的偏移量是489

[root@test ~]# mysqlbinlog --start-position=154 --stop-position=489 /mylog/data.000003 |mysql -uroot -p456789[root@test ~]# mysql  -uroot  -p456789  db -e "select count(*) from db.user"
+----------+
| count(*) |
+----------+
|       36 |
+----------+

使用时间恢复

mysqlbinlog  --start-datetime="2022/03/01 10:55:39"  --stop-datetime="2022/03/01 11:26:08"  /mylog/data.000003  |  mysql -uroot  -p密码 

percona软件提供innobackupex命令备份数据

物理备份:缺点一跨平台性差一备份时间长、冗余备份、浪费存储空间
mysqldump备份:缺点一效率较低、备份和还原速度慢、锁表一备份过程中,数据插入和更新操作被阻塞

percona(备份时不锁表)适合线上服务器,一款强大的在线热备份工具一备份过程中不锁库表,适合生产环境-由专业组织Percona提供(改进MySQL分支)主要含两个组件-xtrabackup:C程序,支持InnoDB/XtraDB-innobackupex:以Perl脚本封装xtrabackup,还支持MyISAM

1.percona安装及常用命令

]# rpm-ivh libev-4.15-1.el6.rf.×86_64.rpm     #yum源没有,都需要上传
]# yum-y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm   #依赖libev
1)查看安装列表 
[root@host62~]# rpm-ql percona-xtrabackup-24 
/usr/bin/innobackupex //备份innodb、xtrdb、myisam引擎的表 
/usr/bin/xbcloud 
/usr/bin/xbcloud _osenv 
/usr/bin/xbcrypt 
/usr/bin/xbstream 
/usr/bin/xtrabackup//备份innodb、xtrdb引擎的表 
2)查看命令帮助 
]# rpm -ql percona-xtrabackup-24 
]# innobackupex  --help		//常用选项 
]# man innobackupex			//详细帮助

常用选项

--host			主机名
--user 			用户名
--port 			端口号
--password 		密码
--databases 	数据库名:  库   库.表    库1,库2
--no-timestamp 	不用日期命名备份文件存储的子目录名
--redo-only		日志合并
--apply-log		准备恢复数据
--copy-back 	拷贝数据
--incremental 	目录名,增量备份
--incremental-basedir=目录名	增量备份时,指定上一次备份数据存储的目录名
--incremental-dir=目录名		准备恢复数据时,指定增量备份数据存储的目录名
--export 		导出表信息
import 			导入表空间

完全备份与恢复介绍、举例

#innobackupex  -u用户名  -p密码  备份目录名   -no -timestamp
完全恢复命令格式
]#innobackupex    --apply-log   目录名   //准备恢复数据
]#innobackupex    --copy-back   目录名   //拷贝数据
#不指定数据库,备份所有的
[root@test ~]# innobackupex  -uroot  -p456789 allbak  #allbak不需创建,不能重复使用
[root@test ~]# ls allbak/
2022-02-25_22-10-23
#不创建带有时间的目录
[root@test ~]# innobackupex  -uroot  -p456789 allbak2  --no-timestamp
[root@test ~]# ls allbak2
backup-my.cnf  ib_buffer_pool  mysql               xtrabackup_binlog_info  xtrabackup_logfile
db             ibdata1         performance_schema  xtrabackup_checkpoints
db3            mydb            sys                 xtrabackup_info
#指定数据库
[root@test ~]# innobackupex -uroot -p456789  --database=db allbak3
[root@test ~]# ls allbak3
2022-02-25_22-15-05


1)准备恢复数据–apply-log

[root@test ~]# innobackupex  -uroot  -p456789 allbak2  --no-timestamp
[root@test ~]# scp -r allbak2 root@192.168.1.17:/root/
[root@test2 ~]# mysql -uroot -p123456 db
mysql> show tables;
mysql> drop table user;
[root@test2 ~]# cat allbak2/xtrabackup_checkpoints
backup_type = full-backuped			#准备ok
from_lsn = 0
to_lsn = 3354460
last_lsn = 3354469
compact = 0
recover_binlog_info = 0
[root@test2 ~]# systemctl stop mysqld			#停止myslqd
[root@test2 ~]# rm -rf /var/lib/mysql/*				#清空原数据
[root@test2 ~]# innobackupex --copy-back allbak2/		#恢复
[root@test2 ~]# chown -R mysql:mysql  /var/lib/mysql		#修改属主
[root@test2 ~]# systemctl start mysqld
[root@test2 ~]# mysql -uroot -p456789   #密码和原主机的密码一样
mysql> show databases;		#验证

3.单独恢复一张表db.user

模拟删除表空间test2主机  
表空间:用来存储表数据的文件     表名.ibd
表结构:用来存储表结构的文件   	表名.frm
mysql> system ls /var/lib/mysql/db/
db.opt  user.frm  user.ibd
mysql> alter table db.user discard tablespace;
mysql> system ls /var/lib/mysql/db/
db.opt  user.frm
mysql> select * from db.user;
ERROR 1814 (HY000): Tablespace has been discarded for table 'user'
2)导出表信息
[root@test2 ~]# ls allbak2/db/
db.opt  user.frm  user.ibd
[root@test2 ~]# innobackupex  --apply-log  --export /root/allbak2/
[root@test2 ~]# ls allbak2/db/
db.opt  user.cfg  user.exp  user.frm  user.ibd
[root@test2 ~]# cp /root/allbak2/db/user.{cfg,exp,ibd}  /var/lib/mysql/db
[root@test2 ~]# ls /var/lib/mysql/db
db.opt  user.cfg  user.exp  user.frm  user.ibd
[root@test2 ~]# chown mysql:mysql  /var/lib/mysql/db/user*
[root@test2 ~]# mysql -uroot -p456789
mysql> select * from db.user;
ERROR 1814 (HY000): Tablespace has been discarded for table 'user'
mysql> alter table db.user import tablespace;		#导入表空间
mysql> select * from db.user;   #有数据了
[root@test2 ~]# rm -rf /var/lib/mysql/db3/tea.{cfg,exp}

4.增量备份与恢复

应用示例
增量备份时,必须先有一次备份,通常是完全备份
周一完全备份,周二~周日增量备份

1)命令格式  -incremental /目录 --incremental-basedir=
增量备份数据
~]# innobackupex  -u用户名 -p密码  --incremental  /目录
--incremental-basedir=/上次备份文件存放的目录 --no-timestamp
准备恢复数据
~]# innobackupex  --apply-log  --redo-only/目录名     
合并数据
~]# innobackupex  --apply-log  --redo-only  /目录名  --incremental-dir=/目录名			 
拷贝数据
~]# innobackupex   --copy-back  /目录名/		

2)增量备份恢复数据举例

周一全备份
[root@test ~]# innobackupex  -uroot  -p456789  /fullbak  --no-timestamp
[root@test ~]# mysql -uroot -p456789
> insert into db3.tea values("dachui",18)("tiechui",18);
周二增量备份
[root@test ~]# innobackupex -uroot -p456789 --incremental /new1dir --incremental-basedir=/fullbak --no-timestamp
root@test ~]# ls  /
allbak  bin   dev  fullbak  lib    media  myload  new1dir  proc  run   
mysql> insert into db3.tea values ("zhouer",2);
周三增量备份
[root@test ~]# innobackupex -uroot -p456789 --incremental /new2dir --incremental-basedir=/new1dir  --no-timestamp
mysql> insert into db3.tea values ("zhousan",2);
mysql> insert into db3.tea values ("zhou3",2);
周四增量备份
[root@test ~]# innobackupex -uroot -p456789 --incremental /new3dir --incremental-basedir=/new2dir --no-timestamp
[root@test ~]# scp -r /fullbak/ /new1dir/ /new2dir/ /new3dir/  root@192.168.4.51:/
在test2主机恢复数据,具体操作如下
a.准备恢复数据--apply-log --redo-only(告诉从哪开始)
[root@test2 ~]# cat /fullbak/xtrabackup_checkpoints
backup_type = full-backuped
[root@test2 ~]# innobackupex  --apply-log --redo-only /fullbak/
[root@test2 ~]# cat /fullbak/xtrabackup_checkpoints
backup_type = log-applied
b.合并数据  --incremental-dir=/new1dir

 (合并的顺序要和备份的顺序一致,原因如下)
[root@test2 ~]# cat /fullbak/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 3012109
[root@test2 ~]# cat /new1dir/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3012109
to_lsn = 3014104
[root@test2 ~]# cat /new2dir/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3014104
to_lsn = 3014465
[root@test2 ~]# innobackupex  --apply-log --redo-only /fullbak/ --incremental-dir=/new1dir
[root@test2 ~]# innobackupex  --apply-log --redo-only /fullbak/ --incremental-dir=/new2dir
[root@test2 ~]# innobackupex  --apply-log --redo-only /fullbak/ --incremental-dir=/new3dir
[root@test2 ~]# cat /fullbak/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 3016750
last_lsn = 3016759
c.停止服务,清空数据库目录
[root@test2 ~]# systemctl stop mysqld.service
[root@test2 ~]# rm -rf /var/lib/mysql/*
d.拷贝数据
[root@test2 ~]# innobackupex --copy-back /fullbak/
e.修改所有者和组用户为MySQL重启服务并查看数据
[root@test2 ~]# chown -R mysql:mysql /var/lib/mysql
[root@test2 ~]# systemctl start mysqld
mysql> select * from db3.tea;

命令小结
备份数据:inno -u -p --incremental /新增 --incremental-basedir=/原始 --no-timestamp
准备恢复:inno… --apply-log --redo-only /原
合并数据:inno… --apply-log --redo-only /原 --incremental-dir=/增
停止服务 清空数据库目录
拷贝数据innobackupex --copy-back /原
修改所有者和组用户为mysql,启动服务,登录查看数据

5.差异备份与恢复

周一完全备份
[root@test ~]# innobackupex -uroot -p456789  /allbak --no-timestamp
mysql> insert into db3.t1 values (1);
mysql> insert into db3.t1 values (11);
周二差异备份
[root@test ~]# innobackupex -uroot -p456789 --incremental /adir --incremental-basedir=/allbak --no-timestamp
mysql> insert into db3.t1 values(2);
mysql> insert into db3.t1 values(22);
周三差异备份
[root@test ~]# innobackupex -uroot -p456789 --incremental /bdir --incremental-basedir=/allbak --no-timestamp
mysql> insert into db3.t1 values(3);
mysql> insert into db3.t1 values(33);
周四差异备份到周日做差异备份
root@test ~]# innobackupex -uroot -p456789 --incremental /cdir --incremental-basedir=/allbak --no-timestamp
[root@test ~]# scp -r /adir/ /bdir/ /cdir/ /allbak/  root@192.168.4.51:/opt/
在51主机使用差异备份文件恢复数据,以上环境布置
1)准备恢复数据
[root@test2 ~]# innobackupex --apply-log --redo-only /opt/allbak/
2)合并数据
差异备份只合并最后一次备份数据,原因如下
[root@test ~]# cat /allbak/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 3016750
[root@test ~]# cat /adir/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3016750
to_lsn = 3018989
[root@test ~]# cat /bdir/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3016750
to_lsn = 3021331
[root@test ~]# cat /cdir/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3016750
to_lsn = 3023546
[root@test2 ~]# innobackupex --apply-log --redo-only /opt/allbak/ --incremental-dir=/opt/cdir
3)停止服务,清空数据库目录
[root@test2 ~]# systemctl stop mysqld
[root@test2 ~]# rm -rf /var/lib/mysql/*
4)拷贝数据
[root@test2 ~]# innobackupex  --copy-back /opt/allbak/
5)修改所有者和组用户为mysql启动服务登录查看数据
[root@test2 ~]# chown -R mysql:mysql /var/lib/mysql
[root@test2 ~]# systemctl start mysqld
[root@test2 ~]# mysql -uroot -p456789 -e "select * from db3.t1"
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:51:11  更:2022-04-04 12:54:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:43:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码