1.mysqldump备份数据库属于完全备份,属于文本备份,本质是对数据库执行建库建表创建记录。
2.mysqldump参考:
https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
1.mysqldump [OPTIONS] database [tables]
2.mysqldump [OPTIONS] --databases|-A [OPTIONS] DB1 [DB2 DB3…]
3.mysqldump [OPTIONS] --all-databases|-B [OPTIONS]
1.-A, --all-databases
2.-B,–databases db1,db2…
3.-E,–events
4.-R,–routines
5.–triggers
6.–default-character-set=…
7.–master-data[=#]
1:所备份的数据之前加一条记录为CHANGE MASTER TO语句,非注释,不指定#,默认为1
2:记录为注释的CHANGE MASTER TO语句,此选项会自动关闭–lock-tables功能,自动打开-x | --lock-all-tables功能(除非开启–single-transaction)
注:此选项须启用二进制日志
8.-F, --flush-logs
9.–compact
10.-d, --no-data
11.-t, --no-create-info
12.-n,–no-create-db
13.–flush-privileges
14.** -f, --force**
15.–hex-blob
16.-q, --quick
MyISAM不支持事务,因此不支持热备,支持温备,必须先锁定要备份的库,启动备份操作锁定方法如下:
1.-x,–lock-all-tables
2.-l,–lock-tables
3.注意: 以上选项对InnoDB表一样生效,实现温备,但不推荐使用
1.–single-transaction
2.选项说明:
注:备份大型表时,建议将–single-transaction选项和–quick结合一起使用
1.innodb备份策略
2.MyISAM备份策略
1.示例使用的数据库版本:MariaDB version:5.5.60
2.使用的存储引擎是innodb
【数据库】
# yum install -y mariadb-server
# mysql_secure_installation
对配置文件添加如下两项:
[mysqld]
log-bin
innodb-file-per-table
# systemctl start mariadb
【建库】
【建表】
CREATE TABLE `students` (
`StuID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Name` varchar(50) NOT NULL,
`Age` tinyint(3) unsigned NOT NULL,
`Gender` enum('F','M') NOT NULL,DEFAULT 'M',
PRIMARY KEY (`StuID`)
);
【添加记录】
INSERT INTO `students` VALUES (1,'Shi Zhongyu',22,'M'),(2,'Shi Potian',22,'M'),(3,'Xie Yanke',53,'M'),(4,'Ding Dian',32,'M'),(5,'Yu Yutong',26,'M');
【查看数据库】
> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb | 需要备份
| mysql | 需要备份
| performance_schema |
+--------------------+
【备份】
1、备份数据库
# mysqldump -uroot -p123456 -A -F --single-transaction --master-data=1 |gzip > /data/`date +%F`_fullbak.sql.gz
2、备份二进制日志
# tar cf /data/binlog.tar /var/lib/mysql/mariadb-bin.*
【更改数据库】
> insert students(name,age)values('Nie Feng',30);
> update students set age=15 where stuid=5;
【数据库损坏】
> drop database hellodb;
【还原数据库】
还原数据库注意事项:
①数据的还原无论什么方式都需要禁止用户访问
②还原的二进制日志记录是没有意义的
还原操作:
①利用防火墙禁止用户访问
②临时关闭二进制日志记录
> set sql_log_bin=0;
③还原备份
> source /data/2019-09-21_fullbak.sql
④还原备份后的更改
注:其中二进制日志中也记录的> drop database hellodb;
# mysqlbinlog /var/lib/mysql/mariadb-bin.000002 > /data/binlogbak.sql
# vim /data/binlogbak.sql
drop database hellodb 找到删库的SQL语句删除
然后再还原:
> source /data/binlogbak.sql
还原完毕!!
1.mysqldump备份
2.备份的数据库
3.二进制日志