mysql不常用但很有用的语句整理

时间:2022-02-05 05:51:58

mysqld_multi多实例停止、启动

mysqld_multi --defaults-file=/etc/my.cnf start 1,2

mysqld_multi --defaults-file=/etc/my.cnf start 1

mysqld_multi --defaults-file=/etc/my.cnf stop 1

mysqld_multi --defaults-file=/etc/my.cnf stop 1,2

有时候stop的时候会报无权限,此时可以使用mysqladmin进行管理,如下:

mysqladmin --socket=/usr/local/mysql/data2/mysqld.sock -P3307 -uroot -pmysql shutdown

性能测试自定义SQL

mysqlslap --defaults-file="/etc/my.cnf" --concurrency=50 --iterations=1 --create-schema=otter_test --query="call call_rowid();" --number-of-queries=100000 -uroot -p

需要注意的是,如果执行报错,mysqlslap就会停止继续运行,所以应该确保不会出错。

E:\mysql-advanced-5.7.26-winx64\bin>mysqlslap --defaults-file=../my.ini --host=localhost --port=8066 --user=hs_tabase --password=hs_tabase --concurrency=20 --iterations=1 --query="select aop.fund_name,aop1.* from (select * from biz_fund_info where fund_name like concat('%','%')) as aop left join (select * from sys_role_fundcode) as aop1 on aop.fund_code = aop1.fund_code" --number-of-queries=200 --create-schema=hs_taglobal

--create-schema 代表自定义的测试库名称,测试的schema,MySQL中schema也就是database。
(没指定使用哪个数据库时,可能会遇到错误mysqlslap: Error when connecting to server: 1049 Unknown database 'mysqlslap')

--defaults-file 指定配置文件,可选。

--concurrency=N, -c N 表示并发量,也就是模拟多少个客户端同时执行query。可指定多个值,以逗号或者--delimiter参数指定的值做为分隔符。例如:--concurrency=100,200,500(分别执行100、200、500个并发)。

--iterations=N, -i N 测试执行的迭代次数,代表要在不同的并发环境中,各自运行测试多少次;多次运行以便让结果更加准确。似乎没有效果

--number-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数) ,最高优先级,如果声明了本选项,则迭代次数自动为number-of-queries/concurrency。

mysqlslap: [Warning] Using a password on the command line interface can be insecure.
Benchmark
Average number of seconds to run all queries: 136.266 seconds
Minimum number of seconds to run all queries: 136.266 seconds
Maximum number of seconds to run all queries: 136.266 seconds
Number of clients running queries: 20
Average number of queries per client: 10

创建表时指定目录

create table test(id int) data directory='/data2'; -- 目录必须已存在且不能是datadir指向的目录

mysqldump只导出表结构

mysqldump -h localhost -uroot -p123456  -d database > ddl.sql

mysqldump只导出数据

mysqldump -h localhost -uroot -p123456  -d database > only-data.sql

mysqldump排除某些表

mysqldump -h127.0.0.1 -uroot -p123456 ta --ignore-table=tb1 --ignore-table=tb2 > ta.sql