输出的时候结果很混乱
这跟索引没关系,把你的create数据拿出来
首先,我备份了一些重要的数据,比如mysql的data,redis的日志文件,文件(呜呜呜,我的文件还是没有来及备份,导致我的文章好多文件丢失。。。)
然后,我重置了我的服务器,防止黑客在攻击的过程中,植入一些见不得人的脚本,继续破坏我以及我的服务器。(极其建议服务器被攻击过的进行这一步操作)
针对恢复mysql数据库的一些操作:
一. 安装msyql 我使用yum进行安装的,配置和数据分别放置的
#(a)数据库目录
/var/lib/mysql/
#(b)配置文件
/usr/share /mysql(mysql.server命令及配置文件)
#( c )相关命令
/usr/bin(mysqladmin mysqldump等命令)
#(d)启动脚本
/etc/rc.d/init.d/(启动脚本文件mysql的目录)
二. 根据上边找到数据目录,mysql数据库的binlog会默认保存到/var/lib/mysql/
这个目录,默认格式:binlog.000001
/var/lib/mysql/
建议做好这个文件的备份,防止数据丢失,可以根据这个文件进行找回,恢复。
注意:
重置数据库的话,当前目录是没有需要恢复的日志文件。
首先需要你从本地上传到这个目录中,比如
然后修改binlog.index,记录当前binlog的index,服务器会从这里读取对应路径下的文件
然后才能正常执行以下操作。
三. 登录到mysql服务,然后执行命令show binlog events in ‘binlog.000001’;
如果用户被删掉,不能正常登录的话,可以这样:
首先停掉mysql服务,然后执行/usr/bin/mysqld_safe --skip-grant-tables &跳过验证登录,
然后另开一个xshell窗口输入mysql,进入mysql服务,执行以上命令
这个命令是查看这个文件的执行情况
四. 执行命令,并把nov3.sql文件下载到本地查看
/usr/bin/mysqlbinlog --no-defaults -v --base64-output=decode-rows binlog.000001 > nov3.sql
因为binlog.000001是一个二进制文件,这个命令会把解码加密的语句,这样我们可以看到mysql执行的每一个sql,如果不加–base64-output=decode-rows这个参数,看到的结果时这样的:
加上是这样的:
所以才有了以上我给大家展示的内容,否则我也不知道。。。苦笑。。。
执行这条命令是为了防止文件中存在对数据有害的操作指令,比如我给大家展示黑客的操作。这样我才能避免一些不能执行的指令。
五. 添加参数执行
/usr/bin/mysqlbinlog binlog.000007 | mysql -uroot -p -v -f > /opt/1.txt
然后输入密码开始恢复数据,
-f是为了跳过执行错误,
-v是展开执行的详细信息
如果文件中存在不能执行的指令,可以按照时间进行执行比如:
加上时间段参数 --start-datetime=‘2022-01-06 14:14:37’ --stop-datetime=‘2022-01-24 13:04:44’
/usr/bin/mysqlbinlog --no-defaults -v --base64-output=decode-rows binlog.000011 --start-datetime=‘2022-01-06 14:14:37’ --stop-datetime=‘2022-01-24 13:04:44’ > nov3.sql
时间可以根据nov3.sql中的时间进行截段执行,比如
到此,我的数据就恢复全部了。。。
针对优化MySQL索引以改善输出结果的混乱问题,可以采取以下方法:
1.优化查询语句
首先需要检查查询语句是否优化,可以使用EXPLAIN关键字来看查询语句的执行计划,看是否需要添加索引来加速查询。
2.创建适当的索引
根据查询的具体情况,可以创建适当的索引来加速查询,例如创建单列索引、组合索引、全文索引等。在创建索引时需要注意,索引的数量应该适中,过多的索引会降低写操作的性能。
可以使用以下语句来创建索引:
创建单列索引:
CREATE INDEX index_name ON table_name(col_name);
创建组合索引:
CREATE INDEX index_name ON table_name(col1_name, col2_name);
创建全文索引:
ALTER TABLE table_name ADD FULLTEXT index_name(col_name);
3.使用临时表
在需要进行聚合查询时,可以使用临时表来存储中间结果,可以通过以下语句来创建临时表:
CREATE TEMPORARY TABLE temp_table(col1_name INT, col2_name VARCHAR(10));
注意,临时表只在连接期间存在,连接断开后会自动删除。
4.对表进行优化
可以通过OPTIMIZE TABLE语句来对表进行优化,包括调整表的结构、重建索引等操作。
OPTIMIZE TABLE table_name;
5.避免全表扫描
在查询时应该尽量避免全表扫描,可以通过合理的筛选条件来减少扫描的行数,同时在查询语句中避免使用函数等操作,以免降低查询的性能。
以上是几种优化MySQL索引的方法,需要根据具体情况进行选择和调整。