使用mysqldump命令备份(逻辑备份)


备份和恢复都在root权限下操作


mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。
mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。
然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。

1.备份多个数据库:

mysqldump -u username -p --databases dbname2 dbname2 > Backup.sql


如:

mysqldump -u root -p --databases test mysql > D:\backup.sql


-----------------------------------------------------------------------------------------
2.备份所有数据库:

mysqldump -u username -p -all-databases > BackupName.sql


如:

mysqldump -u -root -p -all-databases > D:\all.sql


-----------------------------------------------------------------------------------------
3.备份一个数据库或者备份一个数据库中的多个表 

mysqldump -u username -p dbname table1 table2 ...-> BackupName.sql


如:

mysqldump -u root -p test person > D:\backup.sql

                                      mysqldump数据还原
mysql -u root -p [dbname] < backup.sql


如:

mysql -u root -p < C:\backup.sql




                                     完全备份
备份后的数据不完整,再执行备份后的日志。
先执行恢复再执行  mysqlbinlog mysql -uroot -p123qwe 数据库名

                                     基于时间点恢复

mysqlbinlog --stop-date="2017-07-24 9:59:59" mysql -uroot -p123qwe

                                
跳过故障时间点,继续执行后面的binlog

mysqlbinlog --start-date="2017-07-24 10:01:00" mysql -uroot -p123qwe\


 
                                      基于位置恢复

mysqlbinlog  --start-date="2017-07-24 9:55:00" --stop-date="2017-07-24 10:05:00" mysql -uroot -p123qwe >/tmp/mysql_restore.sql
mysqlbinlog --stop-position="368312" mysql -uroot -p123qwe 
mysqlbinlog --start-position="368315" mysql -uroot -p123qwe\


 
 
                                     物理备份和恢复


----------------------------------------------------------------------------------------------
mysqlhotcopy工具快速备份(热备份):
                                     

mysqlhotcopy [option] dbname1 dbname2 backupDir/


backupDir:备份到哪个文件夹下;
----------------------------------------------------------------------------------------------      

==========================================================================================================================================================



备份目标:存放备份数据的位置,通常将备份数据放在异机,或者更远的数据中心,备份目标可以是在线的磁盘,磁盘阵列柜,磁带库或者虚拟带库。备份目标所在的位置可以在同一个数据中心,可以是容灾机房。

备份策略:全备、差备和增备相结合
备份时间应尽量避开业务高峰期,通常在晚上执行,通过定时任务实现。

================ mysql数据备份原理=======================
通过sql语句的形式将数据dump出来,以文件的形式保存,而导出的文件还是可编辑的。mysql更像是一种逻辑备份从库中抽取sql语句,包括建库,连库,建表,插入等就像是将我们之前的操作再通过sql语句重做一次。

二进制日志(log-bin):记录mysql数据库的所有变更操作,由于二进制日志记录所有的操作,所以我们就可以使用某个时间点之后的二进制日志做前滚操作,来增量恢复数据。

mysql的二进制日志可以使用mysqlbinlog来进行查看和过滤,一直过滤到我们想要的数据再导入数据库。但要严格按照二进制日志生成的顺序执行。
配置:在my.cnf中添加

[mysqld]
log-bin=mysql-bin
log-bin-index=mysql-bin.index



中继日志(relay-log):传递日志。主要用在主从复制的架构中,只在从库中有中继日志,多级复制除外,在从库中将主库复制过来的二进制日志保存为中继日志,用于从库重构数据。
配置:在my.cnf中添加

[mysqld]
slow_query_log=1
long_query-time=2
slow_query_log_file=/data/3306/slow.log



慢查询日志(slow_query_log)
慢查询日志主要用于mysql优化,从数据库中找出哪些sql语句是比较慢的,将其放到一个文件中,后续可以使用mysqlsla工具去对慢查询语句进行分析,将分析结果提交给开发进行sql优化。
用途:找出慢查询进行优化
配置:在my.cnf中添加


[mysqld]
slow_query_log=1
long_query-time=2
slow_query_log_file=/data/3306/slow.log



一般查询日志:会记录所有访问mysql的行业,因此会产生大量日志,一般建议关闭。
配置:在my.cnf中添加

[mysqld]
general_log=1
log_output=FILE
general_log_file=/home/mysql/mysql/log/mysql.log



错误日志
记录mysql产生的错误,这个日志在排错的时候相当有用,一般建议开启。
配置:在my.cnf中添加

[mysqld]
log-warnings=1
log-error=/home/mysql/mysql/log/mysql.err




事务日志
缓存事务提交的数据,实现将随机IO转换成顺序IO
配置:在my.cnf中添加

[mysqld]
innodb_log_buffer_size=16M
innodb_log_file_size=128M
innodb_log_files_in_group=3



mysqldump:单库备份,多库备份,单表与多表备份,全库备份,
备份表结构,备份表数据