分类 MYSQL 下的文章

解决方法#
MySQL 出于效率考虑,order by col1, col2 语句用于排序时,并不负责关心 col3, col4 … 的值。也就是同样的 col1, col2 的行数据,在limit row_count 的结果集中不负责 col3, col4 … 的排序(且返回值不确定),这是一个很自然的事情。侧面也反映了MySQL 会使用不稳定的排序算法。

在上述场景中,score字段存在大量相同的值。当排序过程中存在相同的值且没有其他排序规则时,mysql 返回的结果是不确定的,可能每次返回的结果的顺序都不一样(如果发现每次执行都返回一样的数据,可能是被mysql查询缓存了)。

解决方法:排序中存在相同的值时,需要再指定一个排序规则,通过这种排序规则不存在二义性,比如上面可以再加上id升序。

参考:
https://www.cnblogs.com/FengZeng666/p/17490968.html
https://blog.csdn.net/m0_73774439/article/details/139006799
https://www.cnblogs.com/muyarn/p/10941910.html

备份:
mysqldump --opt --lock-tables=false -u root -p db_name >db_backup.sql
替换:
update news set content=replace(content,' ','');//清除news表中content字段中的空格

1、备份命令
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql
例如: mysqldump -h 192.168.1.100 -p 3306 -uroot -ppassword --database cmdb > /data/backup/cmdb.sql
2、备份压缩
导出的数据有可能比较大,不好备份到远程,这时候就需要进行压缩
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 | gzip > 文件名.sql.gz
例如: mysqldump -h192.168.1.100 -p 3306 -uroot -ppassword --database cmdb | gzip > /data/backup/cmdb.sql.gz
3、备份同个库多个表
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 表1 表2 .... > 文件名.sql
例如 mysqldump -h192.168.1.100 -p3306 -uroot -ppassword cmdb t1 t2 > /data/backup/cmdb_t1_t2.sql
4、同时备份多个库
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名1 数据库名2 数据库名3 > 文件名.sql
例如:mysqldump -h192.168.1.100 -uroot -ppassword --databases cmdb bbs blog > /data/backup/mutil_db.sql
5、备份实例上所有的数据库
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --all-databases > 文件名.sql
例如:mysqldump -h192.168.1.100 -p3306 -uroot -ppassword --all-databases > /data/backup/all_db.sql
6、备份数据出带删除数据库或者表的sql备份
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --add-drop-table --add-drop-database 数据库名 > 文件名.sql
例如:mysqldump -uroot -ppassword --add-drop-table --add-drop-database cmdb > /data/backup/all_db.sql
7、备份数据库结构,不备份数据
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --no-data 数据库名1 数据库名2 数据库名3 > 文件名.sql
例如:mysqldump --no-data –databases db1 db2 cmdb > /data/backup/structure.sql