Linux下降成MySQL数据备份和苏醒的授命使用全战略,mysql数据备份

By admin in 美高梅手机版4858 on 2019年5月2日

 

为了保险数据的平安,必要按时对数码开始展览备份。备份的办法有成都百货上千种,效果也不相同。1旦数据库中的数据出现了不当,就须求利用备份好的数目进行复苏复苏。从而将损失降到最低。上面大家来询问一下MySQL常见的有两种备份苏醒措施:

1、mariadb的日志

询问日志:general_log
慢查询日志:log_slow_queries
不当日志:log_error, log_warnings
2进制日志:binlog
接通日志:relay_log
专门的学业日志:innodb_log

1、查询日志
记录查询语句,日志存储位置:
文件:file
表:table (mysql.general_log)         
general_log={ON|OFF}查询日志开启方式
general_log_file=HOSTNAME.log 查询日志文件的名字
log_output={FILE|TABLE|NONE}查询日志的输出位置,如果这里为none,即使general_log为on也不会开启
查询日志一般是不会开启的
2、慢查询日志
慢查询:运行时间超出指定时长的查询;
long_query_time
存储位置:
文件:FILE
表:TABLE,mysql.slog_log  
log_slow_queries={ON|OFF}是否启动慢查询日志
slow_query_log={ON|OFF}慢查询日志是否启动以上两项都要开启才能启动慢查询日志
slow_query_log_file=hostname-slow.log慢查询日志存放的位置,一般存放在数据目录下的此文件
log_output={FILE|TABLE|NONE}
log_slow_filter=admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk出现哪种情况的才启动慢慢查询日志
log_slow_rate_limit慢查询日志的速率,一秒钟记录多少条慢查询日志
log_slow_verbosity慢查询日志记录的详细程度
3、错误日志
记录如下几类信息:
(1) mysqld启动和关闭过程中输出的信息; 
(2) mysqld运行中产生的错误信息; 
(3) event scheduler事件调度器运行时产生的信息;事件调度器相当于mysql的计划任务
(4) 主从复制架构中,从服务器复制线程启动时产生的日志;               
log_error=/var/log/mariadb/mariadb.log|OFF表示关闭错误日志
log_error=/var/log/mariadb/mariadb.log表示开启错误日志,不用加on
log_warnings={ON|OFF}是否记录警告信息到日志文件中,1表示记录,0表示不记录
错误日志一般是要开启的
4、二进制日志
用于记录引起数据改变或存在引起数据改变的潜在可能性的语句(STATEMENT)或改变后的结果(ROW),也可能是二者混合;
功用:用于"重放"日志文件中的事件来生成数据副本
binlog_format={STATEMENT|ROW|MIXED}二进制日志记录的格式
STATEMENT:语句;记录SQL语句
ROW:行;记录语句执行的结果,比如修改年龄大于50的所有人的工资,这样会记录所有符合修改条件的行,而不是记录执行的SQL语句
MIXED:混编;
show global variables like 'binlog_format'
查看二进制日志文件列表:
SHOW MASTER|BINARY LOGS;
查看当前正在使用的二进制日志文件:
SHOW MASTER STATUS;
查看二进制日志文件中的事件:
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
服务器变量:
log_bin=/PATH/TO/BIN_LOG_FILE启动二进制日志,只能写到配置文件中才能启动二进制日志,不能通过命令进行启动,是一个只读变量;
session.sql_log_bin={ON|OFF},运行时设置是否开启二进制日志
max_binlog_size=1073741824大概1g,超过1g就会滚动
sync_binlog={1|0}是否启用二进制日志同步功能,只要事物commit就触发二进制同步操作,将内存缓冲区的信息写到磁盘上的二进制文件中。
mysqlbinlog:客户端命令工具
--start-datetime=根据开始时间查看二进制日志,时间格式YYYY-MM-DD hh:mm:ss
--stop-datetime=根据结束时间
 -j, --start-position=#  根据开始位置
 --stop-position=#  根据结束位置
二进制日志事件格式:
# at 553
#160831  9:56:08 server id 1  end_log_pos 624   Query   thread_id=2     exec_time=0     error_code=0
SET TIMESTAMP=1472608568/*!*/;
BEGIN
/*!*/;  
事件的起始位置:# at 553
事件发生的日期时间:#160831  9:56:08
事件发生的服务器id:server id 1
事件的结束位置:end_log_pos 624
事件的类型:Query
事件发生时所在服务器执行此事件的线程的ID: thread_id=2 
语句的时间戳与将其写入二进制日志文件中的时间差:exec_time=0
错误代码:error_code=0
设定事件发生时的时间戳:SET TIMESTAMP=1472608568/*!*/;
事件内容:BEGIN
中继日志:
主从复制时,从服务器将主服务器的二进制日志先记录到中继日志中,再从中继日志中调到内存进行重放,完成主从复制。
事务日志:
事务型存储引擎innodb用于保证事务特性的日志文件,如果服务器突然断电,开启msyql后会根据事物日志中记录的内容进行提交和回滚操作。
redo log 
undo log 

演示:怎样运行和查看二进制日志

[root@centos7 app]#mkdir -pv /app/logs/   ---创建一个目录用于存放二进制日志文件,也可以不创建,直接存放在数据目录下
mkdir: created directory ‘/app/logs/’
[root@centos7 app]#ls
logs
[root@centos7 app]#chown -R mysql:mysql /app/logs
[root@centos7 app]#systemctl stop mariadb
[root@centos7 app]#vim /etc/my.cnf.d/server.cnf 
[server]
skip_name_resolve = on
innodb_file_per_table = on
max_connections = 20000
log_bin = /app/logs/bin-log   ---开启二进制日志,并指明日志文件的位置,如果直接写相对路径/bin-log,表示二进制日志保存在数据目录下
[root@centos7 app]#systemctl start mariadb
[root@centos7 logs]#ls  /app/logs  ----发现生成了两个文件,一个是二进制日志文件,一个是二进制文件的索引文件,正是因为有这个文件我们在执行show binary logs时候才能看到二进制文件的列表
bin-log.000001  bin-log.index
[root@centos7 logs]#!mysql
mysql -uroot -pcentos
MariaDB [(none)]> show binary logs;   ---查看二进制日志文件列表
MariaDB [(none)]> show master status;  ---查看正在使用的二进制日志文件
MariaDB [(none)]> flush logs;   ---让二进制日志文件滚动
服务器端查看二进制日志文件的事件
MariaDB [(none)]> show binlog events in 'bin-log.000001';  ---查看二进制日志文件中的事件
MariaDB [hidb]> insert into students values(5,'ouyangfeng',70,'F','hamogong');
MariaDB [hidb]> select * from students;
MariaDB [hidb]> show binlog events in 'bin-log.000002';
MariaDB [hidb]> show binlog events in 'bin-log.000002' from 313;   ---从哪个位置开始查看二进制日志文件的事件
MariaDB [hidb]> show binlog events in 'bin-log.000002' from 313 limit 1;  ---从哪个位置开始并只显示1行
客户端查看二进制日志文件的事件
[root@centos7 logs]#mysqlbinlog bin-log.000002
[root@centos7 logs]#mysqlbinlog -j 313 --stop-position 437 bin-log.000002   ---查看二进制文件从哪个位置开始从哪个位置结束
[root@centos7 logs]#mysqlbinlog --start-datetime="2017-11-10 21:04:14" bin-log.000002    ---查看二进制文件从哪个时间开始
运行时开启和关闭二进制日志
MariaDB [hidb]> select @@session.sql_log_bin;  ---查看二进制日志已经开启
+-----------------------+
| @@session.sql_log_bin |
+-----------------------+
|                     1 |
+-----------------------+
1 row in set (0.00 sec)

MariaDB [hidb]> set @@session.sql_log_bin=off;  ---关闭二进制日志
Query OK, 0 rows affected (0.00 sec)
MariaDB [hidb]> show session variables like "sql_log_bin";  ---也可用这种方式查看二进制文件是否关闭
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sql_log_bin   | OFF   |
+---------------+-------+

Linux下促成MySQL数据备份和还原的指令使用全计策,mysql数据备份

为了保全部据的莱芜,要求定时对数据开始展览备份。备份的方法有无数种,效果也不雷同。一旦数据库中的数据出现了不当,就必要采纳备份好的数额举办回复苏醒。从而将损失降到最低。上面大家来打听一下MySQL常见的有两种备份复苏措施:

1、利用Mysqldump+二进制日志落成备份
二、利用LVM快速照相+2进制日志完结备份
3、使用Xtrabackup备份

一:实验蒙受介绍:

系统介绍:CentOS6.四_X64
数据库版本:mysql-5.5.33

2:基于Mysqldump命令达成备份复苏

二.1、思路概念

Mysqldump是一个逻辑备份命令;意思就是将数据库中的数据备份成一个文件文件;也能够说是将表的结交涉数据存款和储蓄在文书文件中。

Mysqldump命令的工作原理很简短,它先摸清要求备份的表的组织,再在文件文件中生成一个CREATE语句。然后,将表中的具备记录调换为一条INSTERT语句。这个CREATE语句和INSTERT语句都以还原时接纳的。还原数据时就可以利用个中的CREATE语句来创制表。使用个中的INSERT语句来过来数据。它可以完毕成套服务器备份,也足以达成单个或部分数据库、单个或部分表、表中的一些行、存款和储蓄进度、存款和储蓄函数、触发器的备份;并且能自动记录备份时刻的2进制日志文件及相应的职位。对于InnoDB存款和储蓄引擎来说协助基于单事务情势完结热备,对于MyISAM则最多扶助温备。

2.二、备份计策

Mysqldump全备+二进制日志增备

二.三、进度完结

(1)Mysqldump全备
由于Mysql数据库私下认可的为MyISAM存款和储蓄引擎所以只有利用温备(备份同时仅帮助读请求)举行,所以大家要为全部数据库增加读锁

[[email protected] ~]
#mysqldump -uroot -pmypass --lock-all-tables --master-data=2 --events --routines--all-databases > /zhao/database_`date +%F`.sql

解析:–lock-all-tables表示为具备表施加读锁;–master-data=二表示在备份文件中记录当前二进制日志的地点;–events表示备份数据的还要备份时间调解器代码;–routines表示备份数据的还要备份存款和储蓄进程和存款和储蓄函数;–all-databases表示备份全体库。

[[email protected] zhao]
# less database_2013-08-13.sql
--   
#表示注释项
-- Position to start replication or point-in-time recovery from
--
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=14203; 
#这里表示当前处于mysql-bin.000001这个二进制日志中,事件为14203这是通过--master-data=2产生的
--
-- Current Database: `hellodb`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hellodb` /*!40100 DEFAULT CHARACTER SET utf8 */;

(2)二进制全备

格局一: 导出贰进制日志文件内容

[[email protected] data]
# mysqlbinlog mysql-bin.000001 >/zhao/binlog_`date +%F`.sql

主意二:滚动日志复制文件

mysql> flush logs; 
#滚动日志
[[email protected] data]
# cp mysql-bin.000001 /zhao/mysql-bin.000001 #复制导出二进制文件

(三)2进制增备
首先添扩张少音讯

mysql> use hellodb;
mysql> INSERT INTO students(Name,Age,Gender,ClassID,TeacherID) values ('Yang kang',22,'M',3,3);

然后二进制增备

[[email protected] data]
# mysqlbinlog --start-position=14203 --stop-position=14527 mysql-bin.000001 > /zhao/binlog_`date +%F_%H`.sql

分析:–start-position=14203是上次全备之后的二进制事件地方;–stop-position=145二七近日壹天的二进制事件地方。

二.四、模拟数据库损坏,落成复苏职业

mysql> DROP DATABASE hellodb;    
#删除数据库
############下面这些过程要在离线状态下执行############
mysql> SET sql_log_bin=0;     
#先关闭二进制日志
mysql> flush logs;      
#滚动日志
[[email protected] ~]
# mysql -uroot -pmypass < /zhao/database_2013-08-13.sql #导入数据库备份文件
[[email protected] ~]
# mysql -uroot -pmypass < /zhao/binlog_2013-08-13_19.sql #导入增量备份文件
[[email protected] ~]
# mysql -uroot –pmypass #登录查看,恢复完成
mysql> SET sql_log_bin=1;

那种备份格局复苏轻便,可是还原过来之后索引会现身谬误需求重建,而且备份结果会占用一点都不小的半空中,请酌定采取。

PS:mysqldump常用命令小结 备份MySQL数据库的一声令下

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

备份MySQL数据库为带删除表的格式

备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不供给手动删除原有数据库。

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

一向将MySQL数据库压缩备份

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

备份MySQL数据库某些(些)表

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

与此同时备份多少个MySQL数据库

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

单独备份数据库结构

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

备份服务器上具备数据库

mysqldump –all-databases > allbackupfile.sql

复原MySQL数据库的授命

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

回复压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

将数据库转移到新服务器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

3、基于LVM快照落成备份复苏

3.1、思路明细

(1)LVM那种备份格局须求Mysql的数目保存在逻辑卷上
(2)供给给Mysql服务器施加读锁(mysql>FLUSH TABLES WITH
READLOCK;),这里不足直接退出服务器
(3)另起终点为多少所在的卷成立快速照相(lvcreate),保证职业日志和数据文件必须在自以为是卷上(分别创制只怕会导致数据文件和工作日志区别样,从而可能引致力不从心平常复苏)

三.贰、备份计谋

LVM快速照相全备+2进制日志增备(对于即时点恢复生机还要恢复生机至一连的2进制位置)

三.三、前提条件

(1)创设逻辑卷及挂载逻辑卷,此进程在此就不做示范了

(二)开首化mysql将其数量目录指向/mydata/data

[[email protected] ~]
# cd /usr/local/mysql/
[[email protected] mysql]
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data

(三)编辑查看配置文件,重启服务

[[email protected] mysql]
# vim /etc/my.cnf
datadir = /mydata/data 
#查看此项是否定义数据目录位置
sync_binlog=1 
#添加此项,每个事务提交时候,把事务日志从缓存区写到日志文件中,并且刷新日志文件的数据到磁盘上;
[[email protected] mysql]
# service mysqld start

叁.四、进度呈现

(一)确定保证职业日志和数据文件必须在因循古板卷上

[[email protected] ~]
# ls /mydata/data/
hellodb  myclass   mysql-bin.000003 stu18.magedu.com.err
ibdata1  mysql    mysql-bin.000004 stu18.magedu.com.pid
ib_logfile0 mysql-bin.000001 mysql-bin.index  student
ib_logfile1 mysql-bin.000002 performance_schema test

解析:其中ib_logfile0与ib_logfile1是日记文件
(2)施加全局锁并滚动日志

mysql> FLUSH TABLES WITH READ LOCK;
mysql> FLUSH LOGS;

(三)查看并保留当前正在使用的二进制日志及当前试行二进制日志地点(相当关键)

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File    | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |  187 |    |     |
+------------------+----------+--------------+------------------+
[[email protected] zhao]
# mysql -uroot -pmypass -e 'SHOW MASTER STATUS;' >/zhao/lvmback-2013-08-14/binlog.txt

(4)创设快速照相卷

[[email protected] zhao]
# lvcreate -L 100M -s -p r -n mydata-lvm /dev/vg1/mydata

Linux下降成MySQL数据备份和苏醒的授命使用全战略,mysql数据备份。(5)立时切换终端释放锁

mysql> UNLOCK TABLES;

(陆)备份数据

[[email protected] data]
# cp -a * /zhao/lvmback-2013-08-14/

(七)二进制达成增量备份

mysql> use hellodb;   
#指定默认数据库
Database changed
mysql> CREATE TABLE testtb (id int,name CHAR(10));  
#创建表
Query OK, 0 rows affected (0.35 sec)
mysql> INSERT INTO testtb VALUES (1,'tom');   
#添加数据
Query OK, 1 row affected (0.09 sec)
[[email protected] data]
# mysqlbinlog --start-position=187 mysql-bin.000004 > /zhao/lvmlogbin_2013-08-14/binlog.sql   #日志实现增量备份

(八)模拟数据库崩溃

[[email protected] ~]
# service mysqld stop
[[email protected] ~]
# cd /mydata/data/
[[email protected] data]
# rm -rf *

(9)恢复生机数据

[[email protected] ~]
# cp /zhao/lvmback-2013-08-14/* /mydata/data/ -a   #完全备份恢复
[[email protected] ~]
# cd /mydata/data/    #查看恢复数据内容
[[email protected] data]
# chown -R mysql.mysql * #更改属主属组
[[email protected] data]
# service mysqld start  #启动服务
[[email protected] data]
# mysql -uroot –pmypass #登录测试

mysql> SHOW DATABASES;  
#查看数据完整性,无测试表testtd使用二进制恢复
mysql> SET sql_log_bin=0 
#关闭二进制日志
mysql> source /zhao/lvmlogbin_2013-08-14/binlog.sql; 
#二进制恢复
mysql> SHOW TABLES;   
#查看恢复结果
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes   |
| coc    |
| courses   |
| scores   |
| students   |
| teachers   |
| testtb   |
| toc    |
+-------------------+
mysql> SET sql_log_bin=1; 
#开启二进制日志

此工具是近乎于热备的点子贯彻的,并且用此情势来备份复苏数据速度是不行快的。

4:基于xtrabackup来达成备份复苏

四.壹、优势特点

全盘以热备的花样举行,能够落到实镇长足可信赖地完全备份和1部分备份,协理增量备份,帮忙时间点过来,备份进度中不会干扰到事务操作,能够落成网络传输和压缩功用因而有效的节约磁盘空间,备份落成后可活动验证数据是不是可用,复苏速度相当慢等等。更加多优势特点请参见

留神:以上这么些优势特色只可以在InnoDB引擎上圆满兑现,而在MyISAM存储引擎上还是最多只可以利用温备的方式展开同时还不协理增量备份。
其余Xtrabackup更多的高等成效还借助于Mysql数据库对于InnoDB落成了单独的表空间,不然也就未有章程落到实处单表导入导出查看方式如下:

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_file%';
+--------------------------+----------+
| Variable_name   | Value |
+--------------------------+----------+
| innodb_file_format  | Antelope |
| innodb_file_format_check | ON  |
| innodb_file_format_max | Antelope |
| innodb_file_per_table | ON  |
+--------------------------+----------+

其中的innodb_file_per_table为ON则代表完成了单表单空间。若为OFF则要求使用mysqldump全备然后更动配置文件删除原来的数据文件并再度初叶化服务器最终将数据重复导入。所以提议之后在设置Mysql服务器时将其接纳默许设置成1就可以(innodb_file_per_table
= 一)。单表单空间的多少显示格局为:

[[email protected] hellodb]
# ls
classes.frm coc.MYD  courses.MYI scores.MYI teachers.frm testtb.ibd
classes.MYD coc.MYI  db.opt  students.frm teachers.MYD toc.frm
classes.MYI courses.frm scores.frm students.MYD teachers.MYI toc.MYD
coc.frm  courses.MYD scores.MYD students.MYI testtb.frm toc.MYI

4.2、安装Xtrabackup

下载percona-xtrabackup最新的本子为贰.壹.四(percona-xtrabackup-②.一.肆-65陆.rhel陆.x8陆_64.rpm)
安装:

[[email protected] ~]
# rpm -ivh percona-xtrabackup-2.1.4-656.rhel6.x86_64.rpm

若有荒唐不能安装请安装perl-DBD-mysql信赖包

[[email protected] ~]
# yum -y install perl-DBD-mysql

在意:区别的条件注重的涉嫌包大概有多少个,请遵照提醒实行配备

4.3、完全备份

利用innobakupex备份时,其会调用xtrabackup备份全部的InnoDB表,复制全数有关表结构定义的连带文件(.frm)、以及MyISAM、ME中华VGE、CSV和AKugaCHIVE表的连锁文书,同时还会备份触发器和数据库配置消息相关的文本。那一个文件会被保存至3个以时日命令的目录中。完全备份命令如下:

# innobackupex --user=DBUSER--password=DBUSERPASS /path/to/BACKUP-DIR/

落成进程及注明:

[[email protected] ~]
# mkdir /innobackup    #创建备份文件目录
[[email protected] ~]
# innobackupex --user=root --password=mypass /innobackup/ #完全备份
################如果执行正确其后输出的几行信息通常如下###############
xtrabackup: Transaction log of lsn (1604655) to (1604655) was copied. 
#二进制日志的位置(lsn)
130814 07:04:55 innobackupex: All tables unlocked
innobackupex: Backup created in directory '/innobackup/2013-08-14_07-04-49'
#备份文件保存的位置
innobackupex: MySQL binlog position: filename 'mysql-bin.000003', position 538898
130814 07:04:55 innobackupex: Connection to database server closed
130814 07:04:55 innobackupex: completed

OK!       备份完结
切换至备份文件目录查看备份的数据音讯及创立生成的文书:

 [[email protected] ~]
# cd /innobackup/2013-08-14_07-04-49/
[[email protected] 2013-08-14_07-04-49]
# ls
backup-my.cnf myclass    student   xtrabackup_binlog_info
hellodb  mysql    test    xtrabackup_checkpoints
ibdata1  performance_schema xtrabackup_binary xtrabackup_logfile

针对文件分析:

(1)xtrabackup_checkpoints ——
备份类型(如完全或增量)、备份状态(如是或不是早已为prepared状态)和LSN(日志连串号)范围新闻;
每种InnoDB页(常常为1陆k大小)都会包蕴多少个日志体系号,即LSN。LSN是整整数据库系统的系统版本号,每种页面相关的LSN能够评释此页面近期是怎样产生转移的。
(2)xtrabackup_binlog_info ——
mysql服务器当前正值利用的2进制日志文件及至备份这1阵子结束贰进制日志事件的地点。
(3)xtrabackup_binary —— 备份中用到的xtrabackup的可实施文件;
(4)backup-my.cnf ——
备份时用到的配置选项消息,也正是计划文件中关于mysqld的连带文书配置;
(5) xtrabackup_logfile —— 非文书文件是xtrabackup本人的日记文件;

四.四、希图三个一心备份

一般景观下,在备份完毕后,数据尚且无法用来苏醒操作,因为备份的多少中只怕会蕴藏尚未提交的事体或早已交由但从没同步至数据文件中的事务。由此,此时数据文件仍居于不壹致状态。“希图”的要紧成效正是通过回滚未提交的业务及联合已经付诸的业务至数据文件从而使得数据文件处于壹致性状态。

innobakupex命令的–apply-log选项可用于达成上述意义。如上边的命令:

[[email protected] ~]
# innobackupex -apply-log /innobackup/2013-08-14_07-04-49/
#############如果执行正确,其最后输出的几行信息通常如下################
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
130814 7:39:33 InnoDB: Starting shutdown...
130814 7:39:37 InnoDB: Shutdown completed; log sequence number 1606156
130814 07:39:37 innobackupex: completed OK!

四.伍、模拟数据库崩溃达成完全复苏

(1)模拟崩溃

[[email protected] ~]
# service mysqld stop
[[email protected] ~]
# cd /mydata/data/
[[email protected] data]
# rm -rf *

(二)从一点1滴备份中回复数据(谨记:在平复数据在此之前千万不可开端化数据库和开发银行服务)
innobackupex命令的–copy-back选项用于实行恢复生机操作,其通过复制全体数占领关的文书至mysql服务器DATADI凯雷德目录中来实行恢复进度。innobackupex通过backup-my.cnf来得到DATADIENVISION目录的有关消息。

[[email protected] ~]
# innobackupex --copy-back /innobackup/2013-08-14_07-04-49/
#############如果执行正确,其最后输出的几行信息通常如下################
innobackupex: Starting to copy InnoDB log files
innobackupex: in '/innobackup/2013-08-14_07-04-49'
innobackupex: back to original InnoDB log directory '/mydata/data'
innobackupex: Copying '/innobackup/2013-08-14_07-04-49/ib_logfile0' to '/mydata/data'
innobackupex: Copying '/innobackup/2013-08-14_07-04-49/ib_logfile1' to '/mydata/data'
innobackupex: Finished copying back files.
130814 07:58:22 innobackupex: completed OK!

(三)当数据复苏至数据目录之后,还须求保障全体数据文件的属主和属组均为科学的用户,如mysql,不然,在运营mysqld以前还亟需事先修改数据文件的属主和属组。

# chown -R mysql:mysql /mydata/data/

(4)运行服务器登入查看恢复生机完成。

[[email protected] data]
# service mysqld start

注意:每叁遍复苏完毕之后自然要重新做3次完全备份工作!!

四.陆、使用innobackupex举行增量备份

证实:每一个InnoDB的页面都会蕴藏三个LSN消息,每当相关的多寡产生变动,相关的页面包车型大巴LSN就能够活动增长。那正是InnoDB表能够拓展增量备份的基础,即innobackupex通过备份上次完全备份之后爆发更动的页面来促成。
首先次变动数据实现增量备份
金玉满堂增量备份能够采取上面的下令进行:

[[email protected] data]
# innobackupex --user=root --password=mypass --incremental /innobackup --incremental-basedir=/innobackup/2013-08-14_08-14-12/

里面,/innobackup指的是一心备份所在的目录,此命令施行完结后,innobackupex命令会在/backup目录中创制多少个新的以时间命名的目录以存放全部的增量备份数据。–incremental-basedir是指向上一遍完全备份所在的目录。

其次次变动数据开始展览增量备份:

[[email protected] ~]
# innobackupex --user=root --password=mypass --incremental /innobackup --incremental-basedir=/innobackup/2013-08-14_08-29-05/

第一回增量备份的试行命令和第三遍大致一样,唯有其–incremental-basedir应该本着上二次的增量备份所在的目录。

其一次变动数据还未开始展览增量备份

mysql> delete from coc where id=14;

4.七、使用innobackupex基于完全+增量+二进制日志恢复生机数据

(壹)由于小编这里将贰进制日志和数据文件写在了同八个文件目录下所以在模仿数据库崩溃前必须先复制出2进制日志文件,所以提出看客们将数据目录和2进制目录分开存放,不要和作者同样犯如此二的谬误。方法如下:
前提是在刚刚确立服务器并未有运营服务器在此之前做如下操作;

mkdir /mybinlog 
#建立一目录用于存放二进制日志
chown mysql:mysql /mybinlog 
#更改权限
vim /etc/my.cnf 
#修改配置文件
log-bin=/mybinlog/mysql-bin 
#二进制日志目录及文件名前缀,添加之

好了言归正传复制二进制日志文件:

[[email protected] data]
# cp mysql-bin.000001/innobackup/

(2)模拟服务器崩溃

[[email protected] ~]
# service mysqld stop
[[email protected] ~]
# cd /mydata/data/
[[email protected] data]
# rm -rf *

(三)计划备份

首先注意“企图”增量备份与整治完全备份有着一些见仁见智,尤其要留意的是:
1)必要在种种备份(包蕴完全和壹1增量备份)上,将曾经交付的事情进行“回放”。“重播”之后,全部的备份数据将合并到完全备份上。
二)基于全体的备份将未提交的业务举办“回滚”。

统统备份“准备”

[[email protected] ~]
# innobackupex --apply-log --redo-only/innobackup/2013-08-14_08-14-12/

率先次增量备份“希图”也正是说将首先次增量备份合并到了截然备份中

[[email protected] ~]
# innobackupex --apply-log--redo-only /innobackup/2013-08-14_08-14-12/--incremental-dir=/innobackup/2013-08-14_08-29-05/

其次次增量备份“筹划”也便是说将第叁次增量备份也联合到了一心备份中

[[email protected] ~]
# innobackupex --apply-log--redo-only /innobackup/2013-08-14_08-14-12/ --incremental-dir=/innobackup/2013-08-14_09-08-39/

中间
–redo-only是只将已交给的作业同步到数据文件中,未提交的业务日志不在举行回滚了。

(肆)复苏数据(基于innobackupex基于完全+增量)

[[email protected] ~]
# innobackupex --copy-back/innobackup/2013-08-14_08-14-12/

(五)改换属组属主

[[email protected] ~]
# cd /mydata/data/
[[email protected] data]
# chown -R mysql:mysql *

(六)运转查看

[[email protected] ~]
# mysql -uroot -pmypas
mysql> select * from coc;
+----+---------+----------+
| ID | ClassID | CourseID |
+----+---------+----------+
| 1|  1 |  2 |
| 2|  1 |  5 |
| 3|  2 |  2 |
| 4|  2 |  6 |
| 5|  3 |  1 |
| 6|  3 |  7 |
| 7|  4 |  5 |
| 8|  4 |  2 |
| 9|  5 |  1 |
| 10 |  5 |  9 |
| 11 |  6 |  3 |
| 12 |  6 |  4 |
| 13 |  7 |  4 |
| 14 |  7 |  3 |
+----+---------+----------+
14 rows in set (0.00 sec)

结果突显数据正确完好,然而第贰回的转移音信未奏效。

(7)基于2进制日志达成数据苏醒
翻开最终叁回增量备份二进制日志所在的任务:

[[email protected] data]
# cd /innobackup/2013-08-14_09-08-39/
[[email protected] 2013-08-14_09-08-39]
# cat xtrabackup_binlog_info
mysql-bin.000001 780

查看二进制日志文件将未备份数据的二进制日志导出

[[email protected] innobackup]
# mysqlbinlog mysql-bin.000001
# at 780
#130814 9:20:19 server id 1 end_log_pos 851 Query thread_id=7 exec_time=0 error_code=0
SET TIMESTAMP=1376443219/*!*/;
BEGIN
/*!*/;
# at 851
#130814 9:20:19 server id 1 end_log_pos 944 Query thread_id=7 exec_time=0 error_code=0
SET TIMESTAMP=1376443219/*!*/;
delete from coc where id=14
/*!*/;
# at 944
#130814 9:20:19 server id 1 end_log_pos 1016 Query thread_id=7 exec_time=0 error_code=0
SET TIMESTAMP=1376443219/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET [email protected]_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
[[email protected] innobackup]
# mysqlbinlog --start-position=780 mysql-bin.000001 > ./all.sql  #导出数据

复苏数据

[[email protected] ~]
# mysql -uroot –pmypass
mysql> SET SQL_LOG_BIN=0;   
#关闭二进制日志
mysql> source /innobackup/all.sql 
#导入数据
mysql> SET SQL_LOG_BIN=1;   
#开启二进制日志
mysql> select * from coc;   
#查看数据,恢复完成
+----+---------+----------+
| ID | ClassID | CourseID |
+----+---------+----------+
| 1 |  1 |  2 |
| 2 |  1 |  5 |
| 3 |  2 |  2 |
| 4 |  2 |  6 |
| 5 |  3 |  1 |
| 6 |  3 |  7 |
| 7 |  4 |  5 |
| 8 |  4 |  2 |
| 9 |  5 |  1 |
| 10 |  5 |  9 |
| 11 |  6 |  3 |
| 12 |  6 |  4 |
| 13 |  7 |  4 |
+----+---------+----------+
13 rows in set (0.00 sec)

那种备份复苏措施完全以热备的样式达成完全备份和增量备份和2进制日志还原数据,并且复苏速度也比不慢,是最棒的备份苏醒措施!!

总结:如上二种备份恢复生机都以足以依据2进制日志文件举行的,由此展现出了二进制日志的重大,从而映射出了日记的入眼;所以读书查看使用日志文件是上学Mysql的根本!

为了保全数据的安全,须求按期对数据开始展览备份。备份的办法有成都百货上千种,效…

前言

对于我们运行来讲,在mysql数据库领域,别的不说,最起码要会两大技术!

第一大才能:备份与回复

第一大本领:主从异步

有关那两大技艺大家先来说说第一个

一、利用Mysqldump+2进制日志实现备份
二、利用LVM快速照相+2进制日志实现备份
3、使用Xtrabackup备份

二、mysql的备份和死灰复燃

壹、 备份类型:

  • 备份的数据集的限制:
    全盘备份和有个别备份
    一起备份:整个数据集;
    某个备份:数据集的一有些,比方有些数据库大概局地表;
  • 全量备份、增量备份、差距备份:
    全量备份:完全备份
    增量备份:仅备份自上二遍完全备份或增量备份以来变量的那部数据;
    反差备份:仅备份自上3回完全备份以来变量的那部数据;
![](https://upload-images.jianshu.io/upload_images/6854348-921c5720fdfe6362.png)

无标题.png



可以根据生产需要每月进行一次全量备份,每周或者每天进行一次增量或者差异备份
  • 大要备份、逻辑备份:
    大要备份:用cp可能tar命令复制数据文件进行的备份,物理备份的快慢快
    逻辑备份:利用客户端工具通过mysql协议连接到数据库,并从数据库导出数据另存在一个或五个文件中;
  • 基于数据服务是不是在线:
    热备:读写操作均可进展的场地下所做的备份;
    温备:可读但不得写意况下进行的备份;
    冷备:读写操作均不得举行的境况下所做的备份;
  • 备份战略:
    全量+差异 + binlog
    全量+增量 + binlog
    备份手腕:物理、逻辑
    相似情形下使用物理热备
  • 备份工具:
    1mysqldump:mysql服务自带的备份工具;逻辑备份工具;
    一起、部分备份;
    InnoDB:热备;
    MyISAM:温备;
    cp/tar
    二lvm二:逻辑卷,快速照相(请求1个大局锁),之后立时释放锁,达到大概热备的效应;物理备份;
    专注:不能够仅备份数据文件;要同时备份专门的学问日志;
    前提:供给数据文件和业务日志位于同二个逻辑卷;
    ③xtrabackup:
    由Percona提供,开源工具,帮衬对InnoDB做热备,物理备份工具;
    统统备份、部分备份;
    一心备份、增量备份;
    全然备份、差别备份;
  • 备份机制:
    xtrabackup:
    全量+差异+binlog
    全量+增量+binlog
    mysqldump:数据相当的小的时候利用
    全量+binlog
  • 备份什么?
    数据
    贰进制日志、InnoDB的政工日志;
    代码(存款和储蓄进程、存款和储蓄函数、触发器、事件调治器)
    服务器的安插文件
  • mysqldump的用法
    逻辑备份工具:基于mysql客户端协议
    完全备份、部分备份;
    InnoDB:热备或温备;
    MyISAM:温备;
    二回封装工具:
    mydumper
    phpMyAdmin
    Usage:
    mysqldump [OPTIONS] database [tables] #
    备份单库,可以只备份当中的壹部分表(部分备份);
    OR mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…]
    # 备份多库;
    OR mysqldump [OPTIONS] –all-databases [OPTIONS] #
    备份全数库;
    MyISAM存款和储蓄引擎:帮助温备,备份时要锁定表;
    -x, –lock-all-tables:锁定全数库的具有表,读锁;
    -l, –lock-tables:锁定钦定库全数表;
    InnoDB存款和储蓄引擎:支持温备和热备;
    –single-transaction:创造二个职业,基于此快速照相施行备份,相当于展开一个大的事物,在REPEATABLE-READ的事物隔绝品级下,外人更改了提交了您也看不到,此刻备份时得以保障各事物的时间点一样,不然备份的历程中外人也许在修改数据,就能够促成各事物的改变时间不是在同暂时间,使备份不可用;
    任何选项:
    -中华V, –routines:备份钦命库的囤积进度和仓库储存函数;
    –triggers:备份钦赐库的触发器;
    -E, –events:备份事件调节器
    –master-data[=#]:指明备份时2进制日志文件的名字和所处的岗位,备份之后的多寡就能够从二进制日志文件的此处地方展开重播
    壹:记录为CHANGE MASTEOdyssey TO语句,此语句不被讲授;
    二:记录为CHANGE MASTE福特Explorer TO语句,此语句被讲明;
    –flush-logs:备份的还要开始展览滚动2进制日志;
  • Xtrabackup的用法:
    MyISAM:温备,不支持增量备份;
    InnoDB:热备,增量;
    物理备份,速率快、可相信;备份落成后自动校验备份结果集是或不是可用;还原速度快;
    Usage: [innobackupex [–defaults-file=#] –backup | innobackupex
    [–defaults-file=#] –prepare] [OPTIONS]
    备份 –> 应用日志 –> 还原
    应用日志:–apply-log
    还原:–copy-back
    一同备份:
    完全+binlog(总结):
    备份:innobackupex –user –password= –host= /PATH/TO/BACKUP_DIR
    准备:innobackupex –apply-log /PATH/TO/BACKUP_DIR
    恢复:innobackupex –copy-back
    留神:–copy-back须求在mysqld主机本地开始展览,mysqld服务不可能开发银行;
    innodb_log_file_size只怕要再一次设定;
    示范1:使用mysqldump对innodb引擎的数据库实行全量+binlog热备

实验环境:172.18.21.107做为正常运行的mysql服务器,172.18.21.7做为备份的主机,把172.18.21.107的mysql数据备份到本机
1、在172.18.21.107上开启二进制日志并启动mariadb服务
vim /etc/my.cnf.d/server.cnf 
log_bin = /app/logs/bin-log ---开启二进制日志
systemcatl start mariadb
2、在172.18.21.7上进行一次全量备份
[root@redhat7 ~]#mysqldump -uroot -pcentos -h172.18.21.107 --single-transaction -R --triggers -E --master-data=2 --flush-logs --databases hidb > /app/hidb-`date "+%F-%T"`.sql
[root@redhat7 ~]#cd /app
[root@redhat7 app]#ls
hidb-2017-11-11-08:42:11.sql  
[root@redhat7 app]#less hidb-2017-11-11-08:42:11.sql ---可以看到备份时二进制日志的名字和所处位置
3、在172.18.21.107上插入一个字段、删除一个字段,这些变化都是在全量备份之后进行的数据修改
MariaDB [hidb]> select * from  students;
+----+------------+------+--------+-------------------+
| id | name       | age  | gender | major             |
+----+------------+------+--------+-------------------+
|  1 | yangguo    |   25 | F      | anranxiaohuizhang |
|  2 | xiaolongnv |   30 | M      | yunvjian          |
|  3 | guojing    |   50 | F      | xianglong         |
|  4 | huangrong  |   45 | M      | dagoubang         |
|  5 | ouyangfeng |   70 | F      | hamogong          |
+----+------------+------+--------+-------------------+
MariaDB [hidb]> insert into students 
MariaDB [hidb]> delete from students where id=5;
Query OK, 1 row affected (0.00 sec)

MariaDB [hidb]> select * from  students;
+----+------------+------+--------+-------------------+
| id | name       | age  | gender | major             |
+----+------------+------+--------+-------------------+
|  1 | yangguo    |   25 | F      | anranxiaohuizhang |
|  2 | xiaolongnv |   30 | M      | yunvjian          |
|  3 | guojing    |   50 | F      | xianglong         |
|  4 | huangrong  |   45 | M      | dagoubang         |
|  6 | aobama     |   58 | F      | presedent         |
+----+------------+------+--------+-------------------+/
4、将全量备份之后发生的数据改变的二进制日志重定向到一个文件中
[root@centos7 logs]#mysqlbinlog -j 245 bin-log.000005 > /app/binlog.sql
[root@centos7 logs]#scp /app/binlog.sql 172.18.21.7:/app
5、在172.18.21.7上进行恢复操作
systemctl start mariadb   ---注意恢复时不要开启二进制日志,不然会将恢复过程中执行的大量SQL语句记录到二进制日志中
[root@redhat7 app]#mysql < hidb-2017-11-11-08:42:11.sql   ---读取全量备份的内容
[root@redhat7 app]#mysql < binlog.sql    ---读取全量备份之后二进制日志中的内容
[root@redhat7 app]#mysql
MariaDB [(none)]> show databases;  ---可以看到备份的数据库
MariaDBMariaDB [hidb]> select * from students;  ---发现和172.18.21.107上的一样,备份恢复成功
+----+------------+------+--------+-------------------+
| id | name       | age  | gender | major             |
+----+------------+------+--------+-------------------+
|  1 | yangguo    |   25 | F      | anranxiaohuizhang |
|  2 | xiaolongnv |   30 | M      | yunvjian          |
|  3 | guojing    |   50 | F      | xianglong         |
|  4 | huangrong  |   45 | M      | dagoubang         |
|  6 | aobama     |   58 | F      | presedent         |
+----+------------+------+--------+-------------------+
 [(none)]> use hidb;

在percona官方网站上下载xtrabackup及备份比如

https://www.percona.com/
[root@centos7 app]#yum install  percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm
[root@centos7 app]#rpm -ql percona-xtrabackup-24
/usr/bin/innobackupex  ---innobackupex工具是为了兼容oracle官方innobackup,将xtrabackup进行二次封装,此工具支持客户端远程连接进行备份,所以一般使用这个工具进行备份
/usr/bin/xtrabackup
[root@centos7 app]#mkdir /app/backups  ---在本机创建一个备份的目录
[root@centos7 app]#innobackupex --user=root --password=centos --host=172.18.21.107 /app/backups  ---将整个数据库备份到/app/backups目录下,也可以用--databases 指明只备份某个数据库
[root@centos7 app]#cd backups/
[root@centos7 backups]#ls  ---发现有一个和时间相关的备份目录
2017-11-11_09-50-40
[root@centos7 backups]#cd 2017-11-11_09-50-40
[root@centos7 2017-11-11_09-50-40]#ll
total 18460
-rw-r----- 1 root root      417 Nov 11 09:50 backup-my.cnf   ---配置文件的备份
drwxr-x--- 2 root root       60 Nov 11 09:50 hidb
-rw-r----- 1 root root 18874368 Nov 11 09:50 ibdata1  ---表空间文件备份
drwxr-x--- 2 root root     4096 Nov 11 09:50 mysql
drwxr-x--- 2 root root     4096 Nov 11 09:50 performance_schema
drwxr-x--- 2 root root       20 Nov 11 09:50 test
-rw-r----- 1 root root       19 Nov 11 09:50 xtrabackup_binlog_info ---备份了二进制文件的名字和备份时所处的位置
-rw-r----- 1 root root      113 Nov 11 09:50 xtrabackup_checkpoints  ---记录了备份自己的属性
-rw-r----- 1 root root      491 Nov 11 09:50 xtrabackup_info  ---记录了使用工具的版本及连接到服务器时使用的选项等
-rw-r----- 1 root root     2560 Nov 11 09:50 xtrabackup_logfile  ---xtrbackup执行的日志信息,看不了,是个二进制文件
[root@centos7 2017-11-11_09-50-40]#cat  xtrabackup_checkpoints
backup_type = full-backuped    ---备份类型是全量备份
from_lsn = 0
to_lsn = 2241248
last_lsn = 2241248   ---从哪个日志序列号开始备份到哪个日志序列号结束备份,数据和索引在表空间里保存的时候的编号称为日志序列号
compact = 0  ----是否打包
recover_binlog_info = 0   ---二进制日志保存的时候是否有未完成的事物需要回滚的,0表示没有

采纳Xtrabackup对innodb引擎的数据库举行全量+增量+binlog热备

实验环境:172.18.21.107为工作数据库服务器,在172.18.21.7进行恢复操作,在172.18.21.107上开启二进制日志
在两个主机上都要安装xtrabackup工具
1、在172.18.21.7上准备一个干净的mariadb数据库服务器,设置如下
[root@redhat7 app]#systemctl stop mariadb
[root@redhat7 app]#rm -rf /var/lib/mysql/*
2、在172.18.21.107上进行一次全量备份
[root@centos7 app]#mkdir /app/backups  ---创建一个目录做为备份的目录
[root@centos7 app]#innobackupex --user=root --password=centos --host=172.18.21.107 /app/backups/
[root@centos7 app]#cd backups/
[root@centos7 backups]#ls
2017-11-11_16-29-15
3、在172.18.21.107上进行一次数据修改
MariaDB [hidb]> select * from students;
+----+-----------+------+--------+-------+
| id | name      | age  | gender | major |
+----+-----------+------+--------+-------+
|  1 | stu1      |   66 | M      | NULL  |
|  2 | stu2      |   30 | F      | NULL  |
|  3 | stu3      |   18 | M      | NULL  |
|  4 | stu4      |   45 | F      | NULL  |
|  5 | stu5      |   54 | F      | NULL  |
|  6 | stu6      |   97 | F      | NULL  |
|  7 | stu7      |   53 | M      | NULL  |
|  8 | stu8      |   98 | M      | NULL  |
|  9 | stu9      |   30 | M      | NULL  |
| 10 | stu10     |   19 | F      | NULL  |
| 11 | yangguo   |   30 | M      | NULL  |
| 12 | xiaolognv |   37 | F      | NULL  |
+----+-----------+------+--------+-------+
12 rows in set (0.00 sec)

MariaDB [hidb]> delete from students where id=11; 
Query OK, 1 row affected (0.01 sec)

MariaDB [hidb]> delete from students where id=12; 
Query OK, 1 row affected (0.01 sec)

MariaDB [hidb]> select * from students;
+----+-------+------+--------+-------+
| id | name  | age  | gender | major |
+----+-------+------+--------+-------+
|  1 | stu1  |   66 | M      | NULL  |
|  2 | stu2  |   30 | F      | NULL  |
|  3 | stu3  |   18 | M      | NULL  |
|  4 | stu4  |   45 | F      | NULL  |
|  5 | stu5  |   54 | F      | NULL  |
|  6 | stu6  |   97 | F      | NULL  |
|  7 | stu7  |   53 | M      | NULL  |
|  8 | stu8  |   98 | M      | NULL  |
|  9 | stu9  |   30 | M      | NULL  |
| 10 | stu10 |   19 | F      | NULL  |
+----+-------+------+--------+-------+
10 rows in set (0.00 sec)

4、在172.18.21.107中基于上一次全量的基础上进行一次增量备份
[root@centos7 backups]#innobackupex --user=root --password=centos --host=172.18.21.107  --incremental /app/backups/ --incremental-basedir=/app/backups/2017-11-11_16-29-15
[root@centos7 backups]#ls
2017-11-11_16-29-15  2017-11-11_16-32-49
5、在172.18.21.107上再进行一次数据修改
MariaDB [hidb]> insert into students (name,age,gender)values('xiaolognv',37,'F');
Query OK, 1 row affected (0.01 sec)
MariaDB [hidb]> select * from students;
+----+-----------+------+--------+-------+
| id | name      | age  | gender | major |
+----+-----------+------+--------+-------+
|  1 | stu1      |   66 | M      | NULL  |
|  2 | stu2      |   30 | F      | NULL  |
|  3 | stu3      |   18 | M      | NULL  |
|  4 | stu4      |   45 | F      | NULL  |
|  5 | stu5      |   54 | F      | NULL  |
|  6 | stu6      |   97 | F      | NULL  |
|  7 | stu7      |   53 | M      | NULL  |
|  8 | stu8      |   98 | M      | NULL  |
|  9 | stu9      |   30 | M      | NULL  |
| 10 | stu10     |   19 | F      | NULL  |
| 13 | xiaolognv |   37 | F      | NULL  |
+----+-----------+------+--------+-------+

6、在172.18.21.107中在上一次增量备份的基础上进行增量备份
[root@centos7 backups]#innobackupex --user=root --password=centos --host=172.18.21.107  --incremental /app/backups/ --incremental-basedir=/app/backups/2017-11-11_16-32-49
[root@centos7 backups]#ls
2017-11-11_16-29-15  2017-11-11_16-32-49  2017-11-11_16-34-56
[root@centos7 backups]#cd 2017-11-11_16-34-56
[root@centos7 2017-11-11_16-34-56]#ls
backup-my.cnf  ibdata1.delta  mysql               test                    xtrabackup_checkpoints  xtrabackup_logfile
hidb           ibdata1.meta   performance_schema  xtrabackup_binlog_info  xtrabackup_info
[root@centos7 2017-11-11_16-34-56]#cat xtrabackup_checkpoints 
backup_type = incremental   ---后面两次备份的类型都是增量备份
from_lsn = 1617586
to_lsn = 1617886
last_lsn = 1617886
compact = 0
[root@centos7 2017-11-11_16-34-56]#cat xtrabackup_binlog_info  ---最后一次备份时二进制日志所处的位置
bin-log.000001  875
7、在172.18.21.107上进行数据修改
MariaDB [hidb]> insert into students (name,age,gender,major)values('ouyangfeng',55,'F','hamogong');
Query OK, 1 row affected (0.00 sec)

MariaDB [hidb]> select * from students;
+----+------------+------+--------+----------+
| id | name       | age  | gender | major    |
+----+------------+------+--------+----------+
|  1 | stu1       |   66 | M      | NULL     |
|  2 | stu2       |   30 | F      | NULL     |
|  3 | stu3       |   18 | M      | NULL     |
|  4 | stu4       |   45 | F      | NULL     |
|  5 | stu5       |   54 | F      | NULL     |
|  6 | stu6       |   97 | F      | NULL     |
|  7 | stu7       |   53 | M      | NULL     |
|  8 | stu8       |   98 | M      | NULL     |
|  9 | stu9       |   30 | M      | NULL     |
| 10 | stu10      |   19 | F      | NULL     |
| 13 | xiaolognv  |   37 | F      | NULL     |
| 14 | ouyangfeng |   55 | F      | hamogong |
+----+------------+------+--------+----------+

此时此服务器荡机了,但二进制日志保存完好
[root@centos7 app]#mysqlbinlog -j 875 /app/logs/bin-log.000001> /app/binlog.sql    ---将最后一次增量备份到荡机时刻的二进制日志保存到一个文件中
8、在172.18.21.107上进行恢复前的prepare操作
[root@centos7 app]# cd 2017-11-11_16-29-15
[root@centos7 2017-11-11_16-29-15]#innobackupex --apply-log --redo-only ./  ---将全量备份中未完成的事物进行redo
[root@centos7 2017-11-11_16-29-15]#innobackupex --apply-log --redo-only ./ --incremental-dir=/app/backups/2017-11-11_16-32-49    ---将第一个增量备份合并到全量上,并将增量备份中未完成的事物进行redo
[root@centos7 2017-11-11_16-29-15]#innobackupex --apply-log --redo-only ./ --incremental-dir=/app/backups/2017-11-11_16-34-56   ---将第而个增量备份合并到全量上,并将增量备份中未完成的事物进行redo
[root@centos7 2017-11-11_16-29-15]#innobackupex --apply-log  ./    ---最后对全量备份和增量备份中未提交的事物进行回滚,如果没有增量备份,则不用合并直接对全量备份中未提交的事物进行回滚
[root@centos7 2017-11-11_16-29-15]#cat xtrabackup_checkpoints 
backup_type = full-prepared   ---发现已经准备完毕
from_lsn = 0
to_lsn = 1617886
last_lsn = 1617886
compact = 0
[root@centos7 backups]#scp -r 2017-11-11_16-29-15 172.18.21.7:/app  ---把合并好的全量备份文件拷贝到要恢复的主机
[root@centos7 app]#scp binlog.sql 172.18.21.7:/app   ---将准备好的二进制文件也拷贝到要恢复的主机
9、在172.18.21.7上进行恢复操作
[root@redhat7 app]#cd 2017-11-11_16-29-15
[root@redhat7 2017-11-11_16-29-15]#innobackupex --copy-back ./    ---将全量备份的目录中的内容拷贝到mariadb对应的目录下
[root@redhat7 2017-11-11_16-29-15]#cd /var/lib/mysql/
[root@redhat7 mysql]#ls ---发现对应的目录已经生成
hidb  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  test  xtrabackup_binlog_pos_innodb  xtrabackup_info
[root@redhat7 mysql]#chown -R mysql:mysql ./*   ---修改这个目录的属主和属组
[root@redhat7 mysql]#systemctl start mariadb   
---开启服务,这里需要注意,有的时候开启不了,需要修改innodb_log_file_size的值为48M,可以根据日志中提示的进行修改,只要在配置文件加上这条就可以了,但此处却不可以增加,因为和ib_logfile0  ib_logfile1 这两个事物日志文件冲突
[root@redhat7 app]#mysql < binlog.sql  ---将最后一次增量备份到服务器荡机时间段的二进制日志进行重放,此处本机不要启动二进制日志
二进制日志重放时也可以采用如下方法
[root@redhat7 app]#cp binlog.sql /tmp/   ---复制到tmp目录下保证所有用户都可读
[root@redhat7 app]#mysql -uroot -pcentos -h172.18.21.107
MariaDB [(none)]> select @@session.sql_log_bin;
+-----------------------+
| @@session.sql_log_bin |
+-----------------------+
|                     1 |
+-----------------------+
MariaDB [(none)]> set  @@session.sql_log_bin=off;   ---关闭二进制日志
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> select @@session.sql_log_bin;
+-----------------------+
| @@session.sql_log_bin |
+-----------------------+
|                     0 |
+-----------------------+
MariaDB [(none)]> \. /tmp/bin-log.sql   ---source这个脚本文件到数据库中
MariaDB [hidb]> select * from students;    ---发现恢复完成
+----+------------+------+--------+----------+
| id | name       | age  | gender | major    |
+----+------------+------+--------+----------+
|  1 | stu1       |   66 | M      | NULL     |
|  2 | stu2       |   30 | F      | NULL     |
|  3 | stu3       |   18 | M      | NULL     |
|  4 | stu4       |   45 | F      | NULL     |
|  5 | stu5       |   54 | F      | NULL     |
|  6 | stu6       |   97 | F      | NULL     |
|  7 | stu7       |   53 | M      | NULL     |
|  8 | stu8       |   98 | M      | NULL     |
|  9 | stu9       |   30 | M      | NULL     |
| 10 | stu10      |   19 | F      | NULL     |
| 13 | xiaolognv  |   37 | F      | NULL     |
| 14 | ouyangfeng |   55 | F      | hamogong |
+----+------------+------+--------+----------+

在意:–copy-back须求在要恢复生机的mariadb主机本地开展,并且不可能运维mariadb服务;innodb_log_file_size大概要重复设定并且恐怕和东西日志争辨,此时就无须在安顿文件中设定了。

备份与回复

备份:大家准时定点来备份数据,当下多少最昂贵,所以大家要力保数据的安全。

日常大家都是七日一大备,八日五头一小备,也正是说,七日来二个通通备份,一、贰、天来多少个增量或差别备份。

保险那天服务器宕机或误操作,能苏醒过来。

回复:当服务器负重过量会导致宕机,或偶尔大家误操作,删除了某张主要的数据表等等,那时候将在选择大家事先备份的数额来平复。

轻松说下备份的类别,

冷备:读写操作均不足进行

温备:读操作可实行;但写操作不可实施

热备:读写操作均可举办

MyISAM:温备,不帮衬热备
InnoDB: 都支持

简易说下常用的备份工具,

LVM的快速照相:先加锁,做快速照相后解锁,差不离热备;借助文件系统工具举行备份

mysqldump:逻辑备份工具,适用全数存款和储蓄引擎,温备;帮忙完全或局地备份;对InnoDB存款和储蓄引擎援助热备,结合binlog的增量备份

xtrabackup:由Percona提供扶助对InnoDB做热备(物理备份)的工具,帮衬完全备份、增量备份

备注:以上巳了xtrabackup,都以基于完整备份包以及2进制日志来复苏数据库的,二进制日志记录了增加和删除改语句的操作指令,拿过来重播,

一:实验景况介绍:

三、mysql的主从复制

主从复制时,从服务器开启二个io_thread线程连接到主服务器,将主服务器二进制日志中记录的始末保留到本机的衔接日志中,复制时从服务器开启三个sql_thread线程,将连接日志中的内容读到内部存款和储蓄器中开展重播,达成复制操作。
实践进度如下:

172.18.21.107为主,172.18.21.7为从
1、在主和从上都进行的设置
[root@centos7 app]#systemctl stop mariadb
[root@centos7 app]#rm -rf /var/lib/mysql/*
2、在主上的设置
[root@centos7 app]#vim /etc/my.cnf.d/server.cnf 
[server]
skip_name_resolve = on
innodb_file_per_table = on
max_connections = 20000
log_bin = bin-log   ---启动二进制日志,这里写的是相对路径,相对于数据目录/var/lib/mysql
server_id = 1
[root@centos7 app]#systemctl start mariadb
3、在从上的设置
[root@redhat7 mysql]#vim /etc/my.cnf.d/server.cnf 
[server]
skip_name_resolve = on
innodb_file_per_table = on
max_connections = 20000
server_id = 2   ---设置一个服务器的id
relay_log = relay-log   ---启动中继日志
[root@redhat7 mysql]#systemctl start mariadb
4、同步两个服务器的时间,如果没有设置skip_name_resolve = on,还要保证两个主机能互相解析主机名
5、在主服务器上授权一个用户用于复制操作
[root@centos7 app]#mysql
MariaDB [(none)]> grant replication client,replication slave on *.* to repluser@'172.18.%.%' identified by 'centos';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> show master status;  ---查看正在使用的二进制日志
+----------------+----------+--------------+------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+--------------+------------------+
| bin-log.000001 |      492 |              |                  |
+----------------+----------+--------------+------------------+
6、在从服务器上的设置
[root@redhat7 mysql]#mysql
MariaDB [(none)]> help change master to   ---可以查看一下帮助,看一下change master to 的选项
MariaDB [(none)]> change master to master_host='172.18.21.107',master_user='repluser',master_password='centos',master_log_file='bin-log.000001',master_log_pos=492;
MariaDB [(none)]> show slave status \G   ---可以查看从服务器的一些状态信息
MariaDB [(none)]> start slave io_thread,sql_thread;  ---启动从服务器,可以直接写start slave,表示两个线程都启动
MariaDB [(none)]> show slave status \G
7、在主服务器上创建一个数据库
MariaDB [(none)]> create database mydb;
8、在从上可以发现复制成功
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |    ---可以看到主服务器上创建的数据库,说明主从复制成功
| mysql              |
| performance_schema |
| test               |
+--------------------+
MariaDB [(none)]> show slave status \G

总计:如若主服务器已经运维1段时间了,要想完毕主从复制,先对主服务器举行三个一心备份,然后在从服务器上实行恢复,使两岸的多少达到同等后在开启主从复制功效。从服务器一般要启用read_only=ON,表示只同意读,但只对这一个尚未supper权限的用户有效,比方对于有所root权限的用户如故得以写的。

提出:建议贰进制日志和数据文件分开存放

一、关闭网络链接,只监听本地端口访问,(在备份还原的时候用)

skip-networking=1

2、禁止主机名解析,ip地址访问的时候,禁止反向解析(提议加上)

skip_name_resolve = on

3、每种表单独使用三个表空间存款和储蓄表的多寡和目录(提议加上)

innodb_file_per_table = on

四、开启并点名贰进制文件存放地点

log_bin=/…

。。。

系统介绍:CentOS陆.四_X64
数据库版本:mysql-伍.5.3三

四、完成mysql主主复制

在四个服务器上都要翻开二进制日志和衔接日志
若果七个服务器的数据库id运转自动增加功效,要在布局文件中装置三个的id为奇数,其它二个的id为偶数,或然三个的id为偶数,别的一个的id为奇数,因为1旦不那样设置,有十分大希望三个服务器上还要都有用户在写的时候会爆发同样的id号产生争论,所以一般景况下不提出数据库的id号启用自动增加功效,也许用id生成器进行转移。
执行进度如下:

实验环境有两台主机172.18.21.107为a和172.18.21.7为b
1、在a和b服务器上都关闭数据库服务
[root@redhat7 mysql]#systemctl stop mariadb
2、在a服务器上的设置
[root@centos7 app]#vim /etc/my.cnf.d/server.cnf 
[server]
skip_name_resolve = on
innodb_file_per_table = on
max_connections = 20000
log_bin = bin-log   ---开启二级制日志
relay_log = relay-log   ---开启中继日志
server_id = 1
auto_increment_offset = 1   ---表示id号从1开始
auto_increment_increment = 2  ---表示以2为步进,即为奇数
[root@centos7 app]#systemctl start mariadb
3、在b服务器上的设置
[root@redhat7 mysql]#vim /etc/my.cnf.d/server.cnf 
[server]
skip_name_resolve = on
innodb_file_per_table = on
max_connections = 20000
server_id = 2
relay_log = relay-log
log_bin = bin-log
auto_increment_offset = 2
auto_increment_increment = 2
[root@redhat7 mysql]#systemctl start mariadb
4、在a服务器上的设置
[root@centos7 app]#mysql
MariaDB [(none)]> show master status; ---查看二进制日志的名字和位置
+----------------+----------+--------------+------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+--------------+------------------+
| bin-log.000002 |      245 |              |                  |
+----------------+----------+--------------+------------------+
MariaDB [(none)]> select user,password,host from mysql.user;  ---查看一下是否有授权的用户用于主从复制
5、在b服务器上的设置
[root@redhat7 mysql]#mysql
MariaDB [(none)]> show master status;
+----------------+----------+--------------+------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+--------------+------------------+
| bin-log.000001 |      245 |              |                  |
+----------------+----------+--------------+------------------+
MariaDB [(none)]> select user,password,host from mysql.user;
MariaDB [mydb]> grant replication client,replication slave on *.* to 'repluser'@'172.18.%.%' identified by 'centos';   ---发现b服务器上没有授权的用于主从复制的用户,所以授权一个用户
6、在a上的设置
MariaDB [mydb]> change master to master_host='172.18.21.7',master_user='repluser',master_password='centos',master_log_file='bin-log.000001',master_log_pos=245;
MariaDB [mydb]> start slave;
MariaDB [mydb]> show slave status \G
7、在b上的设置
MariaDB [mydb]> change master to master_host='172.18.21.107',master_user='repluser',master_password='centos',master_log_file='bin-log.000002',master_log_pos=245;
MariaDB [mydb]> start slave;
MariaDB [mydb]> show slave status \G
8、测试
在a和b上查看一下
MariaDB [mydb]> select * from students;  ---刚开始是相同的
+----+-------+------+--------+-------+
| id | name  | age  | gender | major |
+----+-------+------+--------+-------+
|  1 | stu1  |   76 | F      | NULL  |
|  2 | stu2  |   28 | M      | NULL  |
|  3 | stu3  |   42 | F      | NULL  |
|  4 | stu4  |   71 | M      | NULL  |
|  5 | stu5  |   70 | M      | NULL  |
|  6 | stu6  |   77 | F      | NULL  |
|  7 | stu7  |   38 | F      | NULL  |
|  8 | stu8  |   82 | F      | NULL  |
|  9 | stu9  |   83 | M      | NULL  |
| 10 | stu10 |   31 | F      | NULL  |
+----+-------+------+--------+-------+
在a上删除一行
MariaDB [mydb]> delete from students where id=9;
在b上发现也删除了
MariaDB [mydb]> select * from students;
+----+-------+------+--------+-------+
| id | name  | age  | gender | major |
+----+-------+------+--------+-------+
|  1 | stu1  |   76 | F      | NULL  |
|  2 | stu2  |   28 | M      | NULL  |
|  3 | stu3  |   42 | F      | NULL  |
|  4 | stu4  |   71 | M      | NULL  |
|  5 | stu5  |   70 | M      | NULL  |
|  6 | stu6  |   77 | F      | NULL  |
|  7 | stu7  |   38 | F      | NULL  |
|  8 | stu8  |   82 | F      | NULL  |
| 10 | stu10 |   31 | F      | NULL  |
+----+-------+------+--------+-------+

复制时应当专注的难点:
一、从劳动设定为“只读”:在从服务器运营read_only,但仅对非SUPE宝马X5权限的用户有效;
要想拦截全部用户可以申请三个大局读锁:mysql> FLUSH TABLES WITH READ
LOCK;
二、尽量确认保障复制时的政工业安全全
在master节点启用参数:sync_binlog =
ON,表示只要当前节点有东西提交时就立即从内部存款和储蓄器缓冲区保存到二进制日志中,制止从服务器复制时二进制日志中未有那些提交操作主服务器就坏了,那样从服务器就不理解那几个事物该不应该提交了
设若用到的是InnoDB存款和储蓄引擎:
innodb_flush_logs_at_trx_commit=ON
—每当事物提交时就1头到东西日志中
innodb_support_xa=ON 让innodb援助布满式事物
三、从服务器意外中止时尽量防止自动运转复制线程
,就算从服务器在复制二个风云的时候复制到四分之二的时候从服务器意外终止了,要是再度开动,复制作用实是会自动开启的,因为在/var/lib/mysql/master.info文件中著录了三番五次到主服务器的新闻,所以运维mariadb服务时会自动运营复制线程,那样就能够产生难点,因为终止前的事物复制到八分之四,不领悟该不应当提交,为了防止那种事情时有产生,大家要把网断掉,查看一下是或不是有复制到3/陆的东西,如若有手动删除,然后手动加change
master to
指向意外终止时主服务器二进制日志的职位,大概再度备份苏醒后运转复制成效
4、从节点:设置参数
sync_master_info=ON
sync_relay_log_info=ON

准备

一、筹划两台主机,作者用.一七充当mysql主服务器,.57来还原用。

二、17主mysql数据库有以下多少个表

美高梅手机版4858 1

3、目录

/data/mysq/:下存放数据库数据

/app/logs/:下存放贰进制日志

。。。

二:基于Mysqldump命令落成备份苏醒

四、主从复制centos陆.九的安顿及注意事项

vim /etc/my.cnf 

[root@centos6 mysql]#vim /etc/my.cnf 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
skip_name_resolve = on
innodb_file_per_table = on
max_connections = 20000  ---以上三行不能写到server里,mysql服务启动不了
[server]    ---注意在这里要加上server这一项不然不会生效
server_id = 1
log_bin = bin-log
relay_log = relay-log
auto_increment_offset = 1   
auto_increment_increment = 2
启动slave时要用mysql> start slave io_thread,sql_thread;
不能简写成mysql> start slave,不然开启不了复制操作

实战

贰.壹、思路概念

伍、达成基于ssl的主从复制

1、查看所安装的数据库软件是否支持ssl,默认yum安装都是不支持的,需要编译安装的时候加上ssl功能
MariaDB [(none)]> show global variables like '%ssl%';  
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
| ssl_ca        |          |
| ssl_capath    |          |
| ssl_cert      |          |
| ssl_cipher    |          |
| ssl_key       |          |
+---------------+----------+
7 rows in set (0.00 sec)
2、在主服务器上创建一个用于复制的账号,要求从服务器使用这个账号连接到主服务器时必须使用ssl连接
grant replication client,replication slave on *.* to hello@'172.18.%.%' identified by 'centos' require ssl;
3、在从服务器上创建证书和私钥文件
从服务器上使用change master to命令指明自己的ssl相关选项
help change master to查看使用的选项
比如:change master to master_host='172.18.21.106',master_user='hello',master_password='centos',master_log_file='bin-log.000005',master_log_pos=106,MASTER_SSL_CERT='/etc/pki/tls/certs/mysql.crt',MASTER_SSL_KEY='/etc/pki/tls/certs/mysql.key';   
这里的,MASTER_SSL_CERT='/etc/pki/tls/certs/mysql.crt',MASTER_SSL_KEY='/etc/pki/tls/certs/mysql.key';  是从服务器上的证书和私钥文件路径
4、如果从服务器也需要主服务器提供ssl验证,就需要在主服务器上也创建证书和私钥文件
将证书和私钥文件在主服务器的配置文件中指定
一般情况下主服务器端不需要配置证书和私钥,因为是从服务器去连接主服务器进行复制,所以要求从服务器提供证书和私钥文件进行认证。

备份阶段

Mysqldump是三个逻辑备份命令;意思正是将数据库中的数据备份成叁个文本文件;也足以说是将表的布局和数码存款和储蓄在文书文件中。

一、完全备份

mysqldump -pcentos -A -F --master-data=2 --single-transaction |gzip > /data/all-`date +%F`.sql.gz

备注:

-A:备份全体数据库

-F:切换贰进制日志

–master-data=二:记录了依据二进制那3个地方备份的,那个点之后是新数据,备份截至点,主从改为1

–single-transaction:保证数据的1致性

Mysqldump命令的干活规律很轻松,它先摸清供给备份的表的构造,再在文书文件中生成贰个CREATE语句。然后,将表中的全体记录转变为一条INSTERT语句。那个CREATE语句和INSTERT语句都是过来时选拔的。还原数据时就能够运用在那之中的CREATE语句来创制表。使用当中的INSERT语句来过来数据。它能够完毕成套服务器备份,也得以兑现单个或一些数据库、单个或一些表、表中的少数行、存款和储蓄进程、存款和储蓄函数、触发器的备份;并且能自动记录备份时刻的二进制日志文件及相应的职分。对于InnoDB存款和储蓄引擎来说匡助基于单事务格局完成热备,对于MyISAM则最多协助温备。

2、解压并查阅

gzip -d all-2018-08-03.sql.gz
less all-2018-08-03.sql

美高梅手机版4858 2

备注:记住这一个文件以及数字,一会过来的时候要用

二.2、备份计谋

三、修改students表(新数据和日志)

一)没修改前

美高梅手机版4858 3

2)加记录

insert students (name,age)values('gaoda1hao',20);

美高梅手机版4858 4

三)查看未来的二进制变化

美高梅手机版4858 5

四)纵然以后这台mysql服务器宕机崩溃了,上面伊始重操旧业

。。。

Mysqldump全备+2进制日志增备

平复星等

上边规划的是用5七那台主机来回复,首先这台主机必须是干净的mysql数据库

贰.三、进程完成

1、scp传送

一)传送完全备份文件到对象主机

scp all-2018-08-03.sql 192.168.43.57:

二)传送上边图中00005文件以及现在的2进制文件到对象主机

scp mysql-bin.000005 192.168.43.57:

美高梅手机版4858 ,(1)Mysqldump全备
出于Mysql数据库暗许的为MyISAM存款和储蓄引擎所以唯有利用温备(备份同时仅接济读请求)实行,所以大家要为全体数据库增加读锁

二、57主机来过来

在意:还原的时候要禁止除了您之外的兼具用户的拜会。

终止mysql服务,在my.cnf配置文件中能够增添地点聊到壹项

1)开启服务前提下并完全备份数据包

mysql < all-2018-08-03.sql

备考:现在只还原到了,备份时的场地,上面再度卷土重来备份后到宕机那段时候产生的操作

2)导入贰进制日志

mysqlbinlog  --start-position=385 /root/mysql-bin.000005 > /app/binlog.sql

备考:把00005中从3八五方始的命令语句导入到贰个文书中

mysql < /app/binlog.sql

备注:导入二进制记录的授命

。。。

[root@stu18 ~]
#mysqldump -uroot -pmypass --lock-all-tables --master-data=2 --events --routines--all-databases > /zhao/database_`date +%F`.sql

验证

1、看表存在不

美高梅手机版4858 6

二、看表数据正不得法

美高梅手机版4858 7

OK 还原成功

 

解析:–lock-all-tables表示为有着表施加读锁;–master-data=贰表示在备份文件中记录当前贰进制日志的地方;–events表示备份数据的还要备份时间调整器代码;–routines表示备份数据的同时备份存款和储蓄进程和仓库储存函数;–all-databases表示备份全部库。

上面再来演示三个案例-误删除表的东山再起

譬如大家在某天的12点中做了完全备份,在下2遍做完全备份中间有一天实践了除去某张表,删除后等了多少个钟头才发觉表删除了,

在那种气象下,来回复数据,下边来模拟下。

模仿顺序:完全备份–用户对表的数量修改–删除某张表–未察觉用户继续对其余表操作–当访问被去除的表时发掘–

防患未然干活和地点同样,上边进入正题

前几步和日前同样

[root@stu18 zhao]
# less database_2013-08-13.sql
--   
#表示注释项
-- Position to start replication or point-in-time recovery from
--
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=14203; 
#这里表示当前处于mysql-bin.000001这个二进制日志中,事件为14203这是通过--master-data=2产生的
--
-- Current Database: `hellodb`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hellodb` /*!40100 DEFAULT CHARACTER SET utf8 */;

一、完全备份

mysqldump -pcentos -A -F --master-data=2 --single-transaction |gzip > /data/all-`date +%F`.sql.gz

(二)二进制全备

二、模拟误删除表前的修改

insert students (name,age)values('gaoda1hao',20);

。。。

备考:那时期加了成百上千数据,或者贰进制文件已经满了,实行了切换

主意壹: 导出二进制日志文件内容

三、模拟2进制文件的切换

flush logs;
#

随后扩张几条记下

insert students (name,age)values('gaoda2hao',22);
[root@stu18 data]
# mysqlbinlog mysql-bin.000001 >/zhao/binlog_`date +%F`.sql

肆、模拟误删除数据表

drop table students;

备注:删除后还么有发掘,接着扩大其余表的数目

insert teachers (name,age)values('gaoda3',30);

主意二:滚动日志复制文件

伍、发掘难题并及时禁止用户写权限(只好读)

flush tables with read lock;

备考:现在只好root用户可以读写别的用户是无法改改数据的

美高梅手机版4858 8

。。。

mysql> flush logs; 
#滚动日志
[root@stu18 data]
# cp mysql-bin.000001 /zhao/mysql-bin.000001 #复制导出二进制文件

6、干净系统还原

壹)结束服务

systemctl stop mairadb

二)删除全体mysql数据库数据

rm -rf /var/lib/mysql/

三)确认保证用户不可能访问服务器
配置文件加上

skip-networking

四)运维服务

 

(3)2进制增备
率先添增加少音信

七、还原完全备份

一)解压完全备份包

gzip -d all-2018-08-03.sql.gz

二)查看解压的公文鲜明地点

less all-2018-08-03.sql

美高梅手机版4858 9

三)把全部备份传送到57对象主机还原

mysql <all-2018-08-03.sql
mysql> use hellodb;
mysql> INSERT INTO students(Name,Age,Gender,ClassID,TeacherID) values ('Yang kang',22,'M',3,3);

八、还原增量备份

一)合并0000四以及现在的二进制日志文件

mysqlbinlog  --start-position=385 mysql-bin.000004 > /data/binlogs.sql
mysqlbinlog   mysql-bin.000005 >> /data/binlogs.sql
mysqlbinlog   mysql-bin.000006 >> /data/binlogs.sql

二)从联合的贰进制日志文件中找到误操作的一声令下删除或注释

美高梅手机版4858 10

三)scp传送到5七对象主机还原

mysql <binlogs.sql

。。。

然后2进制增备

验证

一、删除的表看看有了没

美高梅手机版4858 11

2、在表删除后其余的表改的笔录还在不

美高梅手机版4858 12

OK

光复成功

接待补充–

[root@stu18 data]
# mysqlbinlog --start-position=14203 --stop-position=14527 mysql-bin.000001 > /zhao/binlog_`date +%F_%H`.sql

剖析:–start-position=1420三是上次全备之后的2进制事件地点;–stop-position=14527多年来一天的二进制事件地方。

二.肆、模拟数据库损坏,实现恢复生机职业

mysql> DROP DATABASE hellodb;    
#删除数据库
############下面这些过程要在离线状态下执行############
mysql> SET sql_log_bin=0;     
#先关闭二进制日志
mysql> flush logs;      
#滚动日志
[root@stu18 ~]
# mysql -uroot -pmypass < /zhao/database_2013-08-13.sql #导入数据库备份文件
[root@stu18 ~]
# mysql -uroot -pmypass < /zhao/binlog_2013-08-13_19.sql #导入增量备份文件
[root@stu18 ~]
# mysql -uroot –pmypass #登录查看,恢复完成
mysql> SET sql_log_bin=1;

那种备份格局恢复生机不难,不过还原过来之后索引会出现错误需求重建,而且备份结果会占用不小的上空,请酌定选取。

PS:mysqldump常用命令小结 备份MySQL数据库的指令

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

备份MySQL数据库为带删除表的格式

备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而无需手动删除原有数据库。

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

平昔将MySQL数据库压缩备份

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

备份MySQL数据库有些(些)表

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

再正是备份几个MySQL数据库

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

唯有备份数据库结构

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

备份服务器上有着数据库

mysqldump –all-databases > allbackupfile.sql

复原MySQL数据库的一声令下

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

平复压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

将数据库转移到新服务器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

3、基于LVM快照达成备份苏醒

3.1、思路明细

(一)LVM这种备份情势供给Mysql的数码保存在逻辑卷上
(2)必要给Mysql服务器施加读锁(mysql>FLUSH TABLES WITH
READLOCK;),这里不足直接退出服务器
(三)另起终点为数据所在的卷创设快照(lvcreate),保证专业日志和数据文件必须在平等卷上(分别创制大概会促成数据文件和事情日志不一致,从而可能变成不能寻常复苏)

3.二、备份攻略

LVM快速照相全备+2进制日志增备(对于即时点恢复生机还要苏醒至延续的二进制地点)

三.三、前提条件

(一)创设逻辑卷及挂载逻辑卷,此进程在此就不做示范了

(2)初阶化mysql将其数量目录指向/mydata/data

[root@stu18 ~]
# cd /usr/local/mysql/
[root@stu18 mysql]
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data

(三)编辑查看配置文件,重启服务

[root@stu18 mysql]
# vim /etc/my.cnf
datadir = /mydata/data 
#查看此项是否定义数据目录位置
sync_binlog=1 
#添加此项,每个事务提交时候,把事务日志从缓存区写到日志文件中,并且刷新日志文件的数据到磁盘上;
[root@stu18 mysql]
# service mysqld start

三.肆、进度展现

(1)确认保证专业日志和数据文件必须在独断专行卷上

[root@stu18 ~]
# ls /mydata/data/
hellodb  myclass   mysql-bin.000003 stu18.magedu.com.err
ibdata1  mysql    mysql-bin.000004 stu18.magedu.com.pid
ib_logfile0 mysql-bin.000001 mysql-bin.index  student
ib_logfile1 mysql-bin.000002 performance_schema test

解析:其中ib_logfile0与ib_logfile一是日记文件
(2)施加全局锁并滚动日志

mysql> FLUSH TABLES WITH READ LOCK;
mysql> FLUSH LOGS;

(三)查看并保存当前正在使用的二进制日志及当前施行2进制日志地点(非常首要)

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File    | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |  187 |    |     |
+------------------+----------+--------------+------------------+
[root@stu18 zhao]
# mysql -uroot -pmypass -e 'SHOW MASTER STATUS;' >/zhao/lvmback-2013-08-14/binlog.txt

(四)创建快速照相卷

[root@stu18 zhao]
# lvcreate -L 100M -s -p r -n mydata-lvm /dev/vg1/mydata

(5)立即切换终端释放锁

mysql> UNLOCK TABLES;

(陆)备份数据

[root@stu18 data]
# cp -a * /zhao/lvmback-2013-08-14/

(七)二进制落成增量备份

mysql> use hellodb;   
#指定默认数据库
Database changed
mysql> CREATE TABLE testtb (id int,name CHAR(10));  
#创建表
Query OK, 0 rows affected (0.35 sec)
mysql> INSERT INTO testtb VALUES (1,'tom');   
#添加数据
Query OK, 1 row affected (0.09 sec)
[root@stu18 data]
# mysqlbinlog --start-position=187 mysql-bin.000004 > /zhao/lvmlogbin_2013-08-14/binlog.sql   #日志实现增量备份

(八)模拟数据库崩溃

[root@stu18 ~]
# service mysqld stop
[root@stu18 ~]
# cd /mydata/data/
[root@stu18 data]
# rm -rf *

(玖)苏醒数据

[root@stu18 ~]
# cp /zhao/lvmback-2013-08-14/* /mydata/data/ -a   #完全备份恢复
[root@stu18 ~]
# cd /mydata/data/    #查看恢复数据内容
[root@stu18 data]
# chown -R mysql.mysql * #更改属主属组
[root@stu18 data]
# service mysqld start  #启动服务
[root@stu18 data]
# mysql -uroot –pmypass #登录测试


mysql> SHOW DATABASES;  
#查看数据完整性,无测试表testtd使用二进制恢复
mysql> SET sql_log_bin=0 
#关闭二进制日志
mysql> source /zhao/lvmlogbin_2013-08-14/binlog.sql; 
#二进制恢复
mysql> SHOW TABLES;   
#查看恢复结果
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes   |
| coc    |
| courses   |
| scores   |
| students   |
| teachers   |
| testtb   |
| toc    |
+-------------------+
mysql> SET sql_log_bin=1; 
#开启二进制日志

此工具是近似于热备的法子贯彻的,并且用此格局来备份苏醒数据速度是不行快的。

肆:基于xtrabackup来实现备份恢复生机

四.一、优势特点

统统以热备的花样举办,能够完结高效可靠地完全备份和一些备份,帮助增量备份,支持时间点苏醒,备份进程中不会纷扰到事务操作,能够得以完结互连网传输和压缩成效由此使得的节约磁盘空间,备份完结后可自动验证数据是或不是可用,复苏速度相当的慢等等。越来越多优势特色请参见

在意:以上这个优势特点只可以在InnoDB引擎上无微不至兑现,而在MyISAM存款和储蓄引擎上依然最三只好采取温备的花样开始展览同时还不扶助增量备份。
除此以外Xtrabackup越多的高级效率还借助于Mysql数据库对于InnoDB完结了独立的表空间,不然也就不曾艺术落到实处单表导入导出查看方式如下:

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_file%';
+--------------------------+----------+
| Variable_name   | Value |
+--------------------------+----------+
| innodb_file_format  | Antelope |
| innodb_file_format_check | ON  |
| innodb_file_format_max | Antelope |
| innodb_file_per_table | ON  |
+--------------------------+----------+

其中的innodb_file_per_table为ON则意味着完成了单表单空间。若为OFF则必要利用mysqldump全备然后改成配置文件删除原来的数据文件比量齐观新初阶化服务器最后将数据再一次导入。所以提议之后在安装Mysql服务器时将其采纳私下认可设置成一就可以(innodb_file_per_table
= 1)。单表单空间的数额呈现情势为:

[root@stu18 hellodb]
# ls
classes.frm coc.MYD  courses.MYI scores.MYI teachers.frm testtb.ibd
classes.MYD coc.MYI  db.opt  students.frm teachers.MYD toc.frm
classes.MYI courses.frm scores.frm students.MYD teachers.MYI toc.MYD
coc.frm  courses.MYD scores.MYD students.MYI testtb.frm toc.MYI

4.2、安装Xtrabackup

下载percona-xtrabackup最新的版本为二.1.四(percona-xtrabackup-贰.一.四-65陆.rhel陆.x八6_64.rpm)
安装:

[root@stu18 ~]
# rpm -ivh percona-xtrabackup-2.1.4-656.rhel6.x86_64.rpm

若有不当不可能安装请安装perl-DBD-mysql信赖包

[root@stu18 ~]
# yum -y install perl-DBD-mysql

注意:分化的情形注重的涉及包或许有多少个,请依照提醒进行安排

四.三、完全备份

选用innobakupex备份时,其会调用xtrabackup备份全数的InnoDB表,复制全数有关表结构定义的连锁文书(.frm)、以及MyISAM、ME奥迪Q7GE、CSV和A奥迪Q7C梅毒E表的相关文件,同时还会备份触发器和数据库配置消息有关的文件。那几个文件会被封存至贰个以时日命令的目录中。完全备份命令如下:

# innobackupex --user=DBUSER--password=DBUSERPASS /path/to/BACKUP-DIR/

兑现进程及表达:

[root@stu18 ~]
# mkdir /innobackup    #创建备份文件目录
[root@stu18 ~]
# innobackupex --user=root --password=mypass /innobackup/ #完全备份
################如果执行正确其后输出的几行信息通常如下###############
xtrabackup: Transaction log of lsn (1604655) to (1604655) was copied. 
#二进制日志的位置(lsn)
130814 07:04:55 innobackupex: All tables unlocked
innobackupex: Backup created in directory '/innobackup/2013-08-14_07-04-49'
#备份文件保存的位置
innobackupex: MySQL binlog position: filename 'mysql-bin.000003', position 538898
130814 07:04:55 innobackupex: Connection to database server closed
130814 07:04:55 innobackupex: completed

OK!       备份落成
切换至备份文件目录查看备份的多寡音信及创造生成的文本:

 [root@stu18 ~]
# cd /innobackup/2013-08-14_07-04-49/
[root@stu18 2013-08-14_07-04-49]
# ls
backup-my.cnf myclass    student   xtrabackup_binlog_info
hellodb  mysql    test    xtrabackup_checkpoints
ibdata1  performance_schema xtrabackup_binary xtrabackup_logfile

针对文件分析:

(1)xtrabackup_checkpoints ——
备份类型(如完全或增量)、备份状态(如是或不是已经为prepared状态)和LSN(日志连串号)范围音信;
各类InnoDB页(通常为1陆k高低)都会蕴藏2个日志体系号,即LSN。LSN是整整数据库系统的种类版本号,各个页面相关的LSN能够评释此页面近来是怎么爆发改动的。
(2)xtrabackup_binlog_info ——
mysql服务器当前正值使用的二进制日志文件及至备份这一阵子收尾2进制日志事件的岗位。
(3)xtrabackup_binary —— 备份中用到的xtrabackup的可实施文件;
(肆)backup-my.cnf ——
备份时用到的安顿选项消息,相当于安排文件中关于mysqld的相干文书配置;
(5) xtrabackup_logfile —— 非文书文件是xtrabackup自身的日志文件;

四.四、筹划二个全然备份

貌似景观下,在备份实现后,数据尚且不能够用于复苏操作,因为备份的多寡中大概会含有尚未提交的政工或早已交给但平素分歧步至数据文件中的事务。由此,此时数据文件仍居于不同状态。“准备”的显要成效正是经过回滚未提交的业务及共同已经提交的事务至数据文件从而使得数据文件处于一致性状态。

innobakupex命令的–apply-log选项可用于落成上述作用。如下边包车型大巴通令:

[root@stu18 ~]
# innobackupex -apply-log /innobackup/2013-08-14_07-04-49/
#############如果执行正确,其最后输出的几行信息通常如下################
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
130814 7:39:33 InnoDB: Starting shutdown...
130814 7:39:37 InnoDB: Shutdown completed; log sequence number 1606156
130814 07:39:37 innobackupex: completed OK!

四.5、模拟数据库崩溃落成完全复苏

(一)模拟崩溃

[root@stu18 ~]
# service mysqld stop
[root@stu18 ~]
# cd /mydata/data/
[root@stu18 data]
# rm -rf *

(贰)从一点壹滴备份中回复数据(谨记:在回复数据以前千万不可初阶化数据库和开发银行服务)
innobackupex命令的–copy-back选项用于施行恢复生机操作,其通过复制全数数据相关的文书至mysql服务器DATADI中华V目录中来实行复苏过程。innobackupex通过backup-my.cnf来获取DATADI奥迪Q7目录的相关音信。

[root@stu18 ~]
# innobackupex --copy-back /innobackup/2013-08-14_07-04-49/
#############如果执行正确,其最后输出的几行信息通常如下################
innobackupex: Starting to copy InnoDB log files
innobackupex: in '/innobackup/2013-08-14_07-04-49'
innobackupex: back to original InnoDB log directory '/mydata/data'
innobackupex: Copying '/innobackup/2013-08-14_07-04-49/ib_logfile0' to '/mydata/data'
innobackupex: Copying '/innobackup/2013-08-14_07-04-49/ib_logfile1' to '/mydata/data'
innobackupex: Finished copying back files.
130814 07:58:22 innobackupex: completed OK!

(3)当数据复苏至数据目录之后,还需求确定保障全数数据文件的属主和属组均为科学的用户,如mysql,不然,在运营mysqld以前还亟需事先修改数据文件的属主和属组。

# chown -R mysql:mysql /mydata/data/

(四)运行服务器登入查看苏醒达成。

[root@stu18 data]
# service mysqld start

只顾:每便复苏达成以往自然要再度做叁次完全备份专门的学业!!

4.六、使用innobackupex进行增量备份

证实:每一个InnoDB的页面都会蕴藏2个LSN音信,每当相关的数据发生改变,相关的页面包车型地铁LSN就能够活动拉长。那多亏InnoDB表能够张开增量备份的根基,即innobackupex通过备份上次完全备份之后产生改动的页面来贯彻。
首先次变动数据完成增量备份
落到实处增量备份能够选取上面包车型大巴通令实行:

[root@stu18 data]
# innobackupex --user=root --password=mypass --incremental /innobackup --incremental-basedir=/innobackup/2013-08-14_08-14-12/

个中,/innobackup指的是一点一滴备份所在的目录,此命令试行完成后,innobackupex命令会在/backup目录中开创2个新的以时间命名的目录以存放全体的增量备份数据。–incremental-basedir是指向上三回完全备份所在的目录。

第3遍变动数据开展增量备份:

[root@stu18 ~]
# innobackupex --user=root --password=mypass --incremental /innobackup --incremental-basedir=/innobackup/2013-08-14_08-29-05/

其次次增量备份的施行命令和率先次大约同样,唯有其–incremental-basedir应该本着上三次的增量备份所在的目录。

其三次变动数据还未开始展览增量备份

mysql> delete from coc where id=14;

四.7、使用innobackupex基于完全+增量+二进制日志复苏数据

(1)由于我这里将贰进制日志和数据文件写在了同二个文件目录下所以在模仿数据库崩溃前必须先复制出2进制日志文件,所以提出看客们将数据目录和贰进制目录分开存放,不要和小编同样犯如此贰的失实。方法如下:
前提是在刚刚成立服务器并未有运营服务器在此以前做如下操作;

mkdir /mybinlog 
#建立一目录用于存放二进制日志
chown mysql:mysql /mybinlog 
#更改权限
vim /etc/my.cnf 
#修改配置文件
log-bin=/mybinlog/mysql-bin 
#二进制日志目录及文件名前缀,添加之

好了言归正传复制2进制日志文件:

[root@stu18 data]
# cp mysql-bin.000001/innobackup/

(2)模拟服务器崩溃

[root@stu18 ~]
# service mysqld stop
[root@stu18 ~]
# cd /mydata/data/
[root@stu18 data]
# rm -rf *

(三)策动备份

先是注意“计划”增量备份与整治完全备份有着一些不如,尤其要留心的是:
一)必要在种种备份(包含完全和种种增量备份)上,将已经付诸的业务进行“重播”。“重播”之后,所有的备份数据将联合到完全备份上。
2)基于全部的备份将未提交的作业实行“回滚”。

一心备份“计划”

[root@stu18 ~]
# innobackupex --apply-log --redo-only/innobackup/2013-08-14_08-14-12/

率先次增量备份“计划”也正是说将第叁次增量备份合并到了完全备份中

[root@stu18 ~]
# innobackupex --apply-log--redo-only /innobackup/2013-08-14_08-14-12/--incremental-dir=/innobackup/2013-08-14_08-29-05/

其次次增量备份“企图”也等于说将第3次增量备份也统一到了截然备份中

[root@stu18 ~]
# innobackupex --apply-log--redo-only /innobackup/2013-08-14_08-14-12/ --incremental-dir=/innobackup/2013-08-14_09-08-39/

其中–redo-only是只将已交给的作业同步到数据文件中,未提交的作业日志不在举行回滚了。

(四)复苏数据(基于innobackupex基于完全+增量)

[root@stu18 ~]
# innobackupex --copy-back/innobackup/2013-08-14_08-14-12/

(伍)改造属组属主

[root@stu18 ~]
# cd /mydata/data/
[root@stu18 data]
# chown -R mysql:mysql *

(陆)运营查看

[root@stu18 ~]
# mysql -uroot -pmypas
mysql> select * from coc;
+----+---------+----------+
| ID | ClassID | CourseID |
+----+---------+----------+
| 1|  1 |  2 |
| 2|  1 |  5 |
| 3|  2 |  2 |
| 4|  2 |  6 |
| 5|  3 |  1 |
| 6|  3 |  7 |
| 7|  4 |  5 |
| 8|  4 |  2 |
| 9|  5 |  1 |
| 10 |  5 |  9 |
| 11 |  6 |  3 |
| 12 |  6 |  4 |
| 13 |  7 |  4 |
| 14 |  7 |  3 |
+----+---------+----------+
14 rows in set (0.00 sec)

结果展现数据科学完好,可是第二遍的改造消息未见效。

(7)基于二进制日志落成数据苏醒
翻开最终三回增量备份贰进制日志所在的职分:

[root@stu18 data]
# cd /innobackup/2013-08-14_09-08-39/
[root@stu18 2013-08-14_09-08-39]
# cat xtrabackup_binlog_info
mysql-bin.000001 780

查看二进制日志文件将未备份数据的2进制日志导出

[root@stu18 innobackup]
# mysqlbinlog mysql-bin.000001
# at 780
#130814 9:20:19 server id 1 end_log_pos 851 Query thread_id=7 exec_time=0 error_code=0
SET TIMESTAMP=1376443219/*!*/;
BEGIN
/*!*/;
# at 851
#130814 9:20:19 server id 1 end_log_pos 944 Query thread_id=7 exec_time=0 error_code=0
SET TIMESTAMP=1376443219/*!*/;
delete from coc where id=14
/*!*/;
# at 944
#130814 9:20:19 server id 1 end_log_pos 1016 Query thread_id=7 exec_time=0 error_code=0
SET TIMESTAMP=1376443219/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
[root@stu18 innobackup]
# mysqlbinlog --start-position=780 mysql-bin.000001 > ./all.sql  #导出数据

平复数据

[root@stu18 ~]
# mysql -uroot –pmypass
mysql> SET SQL_LOG_BIN=0;   
#关闭二进制日志
mysql> source /innobackup/all.sql 
#导入数据
mysql> SET SQL_LOG_BIN=1;   
#开启二进制日志
mysql> select * from coc;   
#查看数据,恢复完成
+----+---------+----------+
| ID | ClassID | CourseID |
+----+---------+----------+
| 1 |  1 |  2 |
| 2 |  1 |  5 |
| 3 |  2 |  2 |
| 4 |  2 |  6 |
| 5 |  3 |  1 |
| 6 |  3 |  7 |
| 7 |  4 |  5 |
| 8 |  4 |  2 |
| 9 |  5 |  1 |
| 10 |  5 |  9 |
| 11 |  6 |  3 |
| 12 |  6 |  4 |
| 13 |  7 |  4 |
+----+---------+----------+
13 rows in set (0.00 sec)

那种备份复苏措施完全以热备的款型落成完全备份和增量备份和二进制日志还原数据,并且苏醒速度也十分的快,是最棒的备份复苏措施!!

总结:以上三种备份恢复都以足以凭仗二进制日志文件进行的,由此展示出了二进制日志的基本点,从而映射出了日记的主要;所以读书查看使用日志文件是读书Mysql的主要!

您可能感兴趣的稿子:

  • MySQL数据库备份与还原措施
  • MySQL忘记密码复苏密码的贯彻情势
  • 用mysqldump备份和苏醒内定表的法子
  • MySQL数据库苏醒(使用mysqlbinlog命令)
  • 详解Mysql自动备份与回复的三种办法(图像和文字化教育程)
  • mysql
    误删除ibdata1之后的上升措施
  • MYSQL使用.frm苏醒数据表结构的贯彻情势
  • MySQL单表ibd文件恢复生机措施详解
  • Mysql落成增量苏醒的秘籍详解

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有