root@localhost \~# mysqldump -u root -p mysql user > /root/mysql-user.sql --备份数据库mysql中的表user
root@localhost \~# mysqldump -u root -p --databases auth >/root/auth.sql --备份数据库auth
root@localhost \~# mysqldump -u root -p --opt --all-databases > /root/all-data.sql --备份数据库中所有表
root@localhost \~# cat mysql-user.sql |grep -v "^--" |grep -v "^/" |grep -v "^$" --查看备份文件
root@localhost \~# mysqldump -u root -p test < /root/mysql-user.sql --将备份的表导入到test库
root@localhost \~# mysql -u root -p -e 'drop database auth;'--删除数据库auth
root@localhost \~# mysql -u root -p -e 'show databases;' --查看数据库
root@localhost \~# mysql -u root -p < /root/auth.sql --执行导入恢复操作
mysql> show variables like 'log_%'; --查看二进制日志是否开启
root@localhost \~# mysqldump -u root -p test pxg > /mysql_bak/auth-users-`date +%Y%m%d`_`date +%H%M%S`.sql
--auth数据库的users表进行完整备份
root@localhost mysql_bak# mysqladmin -u root -p flush-logs
--刷新日志文件
root@localhost mysql_bak# ll /usr/local/mysql/data/mysql-bin.* --查看二进制日志文件
root@localhost \~# mysqladmin -u root flush-logs --刷新二进制文件(免密)
root@localhost \~# cp /usr/local/mysql/data/mysql-bin.000015 /mysql_bak/ --拷贝对应二进制文件到/mysql_bak/下
root@localhost \~# mysql -u root -e 'drop table auth.users;'--模拟删除表users
root@localhost \~# mysql -u root -e 'select * from auth.users;' --检查看看表是否被删除(提示表不存在)
root@localhost \~# mysql -u root auth < /mysql_bak/auth-users-20220628_175116.sql--通过完全备份恢复数据库
root@localhost \~# mysqlbinlog --no-defaults /mysql_bak/mysql-bin.000015 |mysql -u root --通过二进制文件恢复增量备份
root@localhost data# mysqlbinlog --no-defaults --stop-position='175' /usr/local/mysql/data/mysql-bin.000027 |mysql -u root --同上
root@localhost \~# mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000027 --查看二进制文件
root@localhost data# mysqlbinlog --no-defaults --stop-datetime='2022-06-29 19::45:59' /usr/local/mysql/data/mysql-bin.000027 |mysql -u root
总结,通过二进制文件恢复可以指定操作ID或者时间作为恢复的节点,这两种节点既可以作为开始,也可以作为结束:对应的四个选项
--stop-position 以哪个操作ID结束 --start-position 以哪个操作ID开始 --stop-datetime 以什么时间结束 --start-datetime 以哪个时间开始
二进制文件无法读取操作方法:
root@localhost \~# cd /usr/local/mysql/data/
root@localhost data# mysqlbinlog --no-defaults -vv --base64-output=decode-rows mysql-bin.000019 >mysql-bin.000019.txt
--转换日志格式