知识点;
mysqldump;
innoDB;热备 、温备
Myism; 温备
#mysql TAB键补全可以看到mysql;
Mysqldump options [db name]库 [tbl name]表
mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
三种备份方式;
1、指定库或库的表,不用选项 ,单库同时可以指定表
2、--databases 指定数据库名,指定多库
3、--all-databases 指定全部数据库,全部备份
将所有的数据文本化,如果将二进制数据文本化将丢失数据,所以不太理想;
1、mysqldump能指定数据库备份;
2、--databases 不能自己指定数据库恢复(在mysql中手动新创建数据库将备份的数据文件导入)
备份多个库;
#Mysqldump --databases mydb testdb mysql >/tmp/mydb-testdb-mysql-fullbackup-$(date +%F-%H-%M-%S)
Less /tmp/mydb-testdb-mysql ---TAB
简单mysql数据库恢复操作;
#mysqldump mydb ---备份mydb数据库
#mysqldump mydb |less---查看数据库内容
#mysqldump mydb > /tmp/mydb-fullbackup-$(date +%F-%H-%M-%S)
#ls tmp
#mysql
create DATABASE TESTDB;
exit
#mysql< /TMP/mydb-fullbackup_200
#mysql testdb</tem/mydb-fullbackuo-2017-
#mysql
Use testdb;
Show tables;
SELECT * FROM students ;
Exit
(熟悉命令)
myisam存储引擎;支持温备,备份时要锁定表;
-x, --lock-all-tables;锁定所有库的所有表;
-l, --lock-tables:锁定指定库所有表;
InnaDB存储引擎;支持温备或热备;
--single-transaction;创建一个事物,基于此快照执行备份;
第二节点;
创建数据库;
Mysql;
#CRANT ALL ON *.* TO 'admin'@'172.16.0.%' IDENTIFIED BY 'admin';
#FLUSH PRIVILEGES;
#GRANT ALL ON *.* TO 'admin'@'%magedu.com' IDENTIFIED BY 'admin';
#FLUSH PRIVILEGES;
#EXIT
节点一;
Mysql -uadmin -172.16.0.68 -padmin < /tmp/mydb-testdb-mysql-fullbackup-2017-…..
节点二;
#mysql
SHOW DATABASES;
节点一;
#mysql;
Use mydb;
SHOW TABLE STATUS\G ----查看存储引擎命令;
SHOW TABLE STATUS WHERE Engine='Innodb'\G---过滤出Innodb存储引擎;
SHOW TABLE STATUS WHERE Engine!='Innodb'\G;----列出除Innodb引擎外的;
没有除Innodb的引擎,就可以进行热备;
Mysqldump --single-transaction --databases mydb----适用于单一的事物;----备份完成后自动关闭锁提交事务;
热备,不影响线上业务;
也可以使用温备;
-x 锁定所有库的表;
-l 锁定指定库的所有表;
在线的热备必须加选项.
其它选项;
-R,--routines; 备份指定库的存储过程和储存函数;
--triggers ; 备份指定库的触发器;
-E,--events ; 备份指定库的事件调度器;
--master-data 此选项将备份的位置记录并将回放时自动从记录的位置往后回放;
--flush-logs; 恢复完成后在mysql二进制日志中自动滚动,生成新的二进制日志;
完整备份方式;
节点一;
1、连接mysql;
#mysql
FLUSH TABLE WITH READ LOCK; ----锁定所有库
FLUSH LOGS; ----滚动一下二进制日志数据库
SHOW MASTER LOGS; -----查看二进制日志有几个;
SHOW MASTER STATUS; ------现在处于那个文件的那个位置
Exit;
在命令行;
#mysqldump -x -R -E --triggers --all-databases --master-data=1||2 |less ----可以查看执行后的内容;
1为创建数据库
2为注释掉;
#mysqldump -x -R -E --triggers --all-databases --master-data=2 --flush-logs > /tmp/alldatabases-fullbackup-$(date +%F-%H-%M-%S)
#less /tmp/alldatabases-fullbackup-$(date +%F-%H-%M-%S -----查看备份的文件内容
连入数据库;
#mysql
Use mydb
CREATE TABLE teachers (tid INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,name VARCHAR(200));
INSERT INTO teachers (name) VALUES ('ouyang feng '),('song jiang');
HSOW MASTER STATUS
EXIT
#SYStemctl stop mariadb
#Cd /var/lib/mysql
#ll
#mysqlbinlog master-log.000005----读一下二进制文件;
在此前备份时以滚动过一次,所以000005二进制日志为新的二进制文件,备份时只需将000005二进制文件备份即可;
#mysqlbinlog master-log.000005> /tem/alldatabase-binlog
模拟服务器崩溃;
#Rm -rf /var/bin/mysql/*
#cd /var/bin/mysql
#ll
#systemctl start mariadb
连入mysql;
#mysql
SHOW DATABASES;
当将备份文件写入时,不需要写入操作的二进制日志,将二进制日志关闭;
Set @@session.sql_log_bin=OFF
\. /tmp/alldatabases-fullbackup-$(date +%F-%H-%M-%S ----将备份的文件导入;
再将另一个二进制日志000005,导入到mysql中;
Set @@session.sql_log_bin=OFF
\. /tmp/alldatabases-fullbackup-000005
Use mydb
SHOW TABLES;
SELECT * FROM teachers;
Exit;
命令行;
Vim /etc/my.cf.d/server.cnf
将二进制文件启用;
二进制日志文件,可以再配置文件中修改启停,也可以在mysql连接中使用;
Set @@session.sql_log_bin=ON||OFF
恢复完成;
网友评论