接着Mysql8.0 主从复制操作
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| mzl |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use mzl;
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> create table class (id int(10) not null auto_increment, name varchar(30),grade varchar(20), primary key(id));
Query OK, 0 rows affected, 1 warning (0.04 sec)
mysql> desc class;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| name | varchar(30) | YES | | NULL | |
| grade | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
插入数据
使用mysqldump对mzl数据库执行完全备份
[root@k8s-master1 ~]# mysqldump -uroot -p123456 --single-transaction --master-data=2 --flush-logs --flush-privileges --events --routines --all-databases > /tmp/mzldb0105.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
目前两个表共有数据如下(全备数据库)
以上相当于晚上23:50点数据库的全备数据
现在class和class02重新插入新的数据,相当于1月4日晚上23:50以后到1月5日早上12:00之前的数据
mysql> insert into class02 values (3,'jim','小学一年'),(4,'tom','研究生');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> insert into class values (25,'田总','博士'),(26,'范总','大四');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
删除mzl库
mysql> drop database mzl;
使用mysqldump的全备导入
mysql> create database mzl;
Query OK, 1 row affected (0.00 sec)
mysql> source /tmp/mzldb0105.sql
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
查看全备数据
全量导入之后,数据不完整,没有后来插入的数据,接下来使用mysqlbinlog对二进制日志执行增量恢复
mysqlbinlog进行增量日志恢复最重要的就是确定待恢复的起始位置(start-position)和终止位置(stop-position),起始位置(start-position)是我们执行全备之后的位置,而终止位置则是故障发生之前的位置。
[root@k8s-master1 tmp]# more mzldb0105.sql
-- Position to start replication or point-in-time recovery from
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=191;
确认要恢复终点位置,即执行"DROP DATABASE LIJIAMAN"之前的位置,需要到binlog里面确认。
[root@k8s-master1 mysql]# mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v -v mysql-bin.000005 > mzl-bin.txt
[root@k8s-master1 mysql]# more mzl-bin.txt
确定了开始结束点,执行增量恢复
开始:mysql-bin.000005日志的191
结束:mysql-bin.000005文件的861
恢复mysqlbinlog
[root@k8s-master1 mysql]# mysqlbinlog --no-defaults --start-position=191 --stop-position=958 /data/mysql/mysql/mysql-bin.000005 |mysql -uroot -p123456
相关阅读:
Mysql8.0 主从复制
Mysql权限管理
Mysql8.0安装实战