分类 默认分类 下的文章

一般视频URL在浏览器访问的时候会直接播放而不是下载,如果要做个按钮点击下载视频文件的功能,可以用下面的代码实现

function downloadVideo(url, bigShowInfo) {
    fetch(url).then(res => res.blob()).then(blob => { // 将链接地址字符内容转变成blob地址
        const a = document.createElement('a')
        a.href = URL.createObjectURL(blob)
        a.download = bigShowInfo.videoId + '.mp4';  // 下载文件的名字
        document.body.appendChild(a)
        a.click()
        a.remove()
    })
}

HTML download 属性
另外参考A标签的download属性:
download 属性规定当用户单击超链接时将下载目标(href 属性 中规定的文件)。

download 属性的可选值将成为文件下载后的新名称。允许使用任何值,浏览器会自动检测正确的文件扩展名并将其添加到文件中(例如 .img、.pdf、.txt、.html 等)。

如果省略该值,则使用原始文件名。

<a href="/logo/xxx-5.png" download>
<a href="/logo/xxxxx-5.mp3" download>
<a href="/logo/xxxx-5.mp4" download>

v2ray文档(需要和协):https://www.v2ray.com/chapter_02/01_overview.html
可使用配置工具:ProxySU https://github.com/proxysu/ProxySU

========正文开始=======

V2Ray 的配置文件形式如下,客户端和服务器通用一种形式,只是实际的配置不一样。

{
  "log": {},
  "api": {},
  "dns": {},
  "stats": {},
  "routing": {},
  "policy": {},
  "reverse": {},
  "inbounds": [],
  "outbounds": [],
  "transport": {}
}

log: LogObject

日志配置,表示 V2Ray 如何输出日志。

api: ApiObject

内置的远程控置 API,详见远程控制配置。

dns: DnsObject

内置的 DNS 服务器,若此项不存在,则默认使用本机的 DNS 设置。详见DNS 配置

routing: RoutingObject

路由配置

policy: PolicyObject

本地策略可进行一些权限相关的配置,详见本地策略

inbounds: [InboundObject]

一个数组,每个元素是一个入站连接配置。

outbounds: [OutboundObject]

一个数组,每个元素是一个出站连接配置。列表中的第一个元素作为主出站协议。当路由匹配不存在或没有匹配成功时,流量由主出站协议发出。

transport: TransportObject

用于配置 V2Ray 如何与其它服务器建立和使用网络连接。详见底层传输配置

stats: StatsObject

当此项存在时,开启统计信息。

reverse: ReverseObject

反向代理配置。

LogObject
{
  "access": "文件地址",
  "error": "文件地址",
  "loglevel": "warning"
}

access: string

访问日志的文件地址,其值是一个合法的文件地址,如"/tmp/v2ray/_access.log"(Linux)或者"C:\Temp\v2ray\_access.log"(Windows)。当此项不指定或为空值时,表示将日志输出至 stdout。V2Ray 4.20 加入了特殊值none,即关闭access log。

error: string

错误日志的文件地址,其值是一个合法的文件地址,如"/tmp/v2ray/_error.log"(Linux)或者"C:\Temp\v2ray\_error.log"(Windows)。当此项不指定或为空值时,表示将日志输出至 stdout。V2Ray 4.20 加入了特殊值none,即关闭error log(跟loglevel: "none"等价)。

loglevel: "debug" | "info" | "warning" | "error" | "none"

错误日志的级别。默认值为"warning"。

"debug": 只有开发人员能看懂的信息。同时包含所有"info"内容。
"info": V2Ray 在运行时的状态,不影响正常使用。同时包含所有"warning"内容。
"warning": V2Ray 遇到了一些问题,通常是外部问题,不影响 V2Ray 的正常运行,但有可能影响用户的体验。同时包含所有"error"内容。
"error": V2Ray 遇到了无法正常运行的问题,需要立即解决。
"none": 不记录任何内容。
InboundObject
入站连接用于接收从客户端(浏览器或上一级代理服务器)发来的数据,可用的协议请见协议列表。

{
  "port": 1080,
  "listen": "127.0.0.1",
  "protocol": "协议名称",
  "settings": {},
  "streamSettings": {},
  "tag": "标识",
  "sniffing": {
    "enabled": false,
    "destOverride": ["http", "tls"]
  },
  "allocate": {
    "strategy": "always",
    "refresh": 5,
    "concurrency": 3
  }
}

port: number | "env:variable" | string

端口。接受的格式如下:

整型数值: 实际的端口号。
环境变量: 以"env:"开头,后面是一个环境变量的名称,如"env:PORT"。V2Ray 会以字符串形式解析这个环境变量。
字符串: 可以是一个数值类型的字符串,如"1234";或者一个数值范围,如"5-10"表示端口 5 到端口 10 这 6 个端口。
当只有一个端口时,V2Ray 会在此端口监听入站连接。当指定了一个端口范围时,取决于allocate设置。

listen: address

监听地址,只允许 IP 地址,默认值为"0.0.0.0",表示接收所有网卡上的连接。除此之外,必须指定一个现有网卡的地址。

protocol: string

连接协议名称,可选的值见协议列表。

settings: InboundConfigurationObject

具体的配置内容,视协议不同而不同。详见每个协议中的InboundConfigurationObject。

streamSettings: StreamSettingsObject。

底层传输配置

tag: string

此入站连接的标识,用于在其它的配置中定位此连接。当其不为空时,其值必须在所有tag中唯一。

sniffing: SniffingObject

尝试探测流量的类型

allocate: AllocateObject

端口分配设置

SniffingObject
{
"enabled": false,
"destOverride": ["http", "tls"]
}
enabled: true | false

是否开启流量探测。

destOverride: ["http" | "tls"]

当流量为指定类型时,按其中包括的目标地址重置当前连接的目标。
AllocateObject

{
  "strategy": "always",
  "refresh": 5,
  "concurrency": 3
}

strategy: "always" | "random"

端口分配策略。"always"表示总是分配所有已指定的端口,port中指定了多少个端口,V2Ray 就会监听这些端口。"random"表示随机开放端口,每隔refresh分钟在port范围中随机选取concurrency个端口来监听。

refresh: number

随机端口刷新间隔,单位为分钟。最小值为2,建议值为5。这个属性仅当strategy = random时有效。

concurrency: number

随机端口数量。最小值为1,最大值为port范围的三分之一。建议值为3。

OutboundObject
出站连接用于向远程网站或下一级代理服务器发送数据,可用的协议请见协议列表。

{
  "sendThrough": "0.0.0.0",
  "protocol": "协议名称",
  "settings": {},
  "tag": "标识",
  "streamSettings": {},
  "proxySettings": {
    "tag": "another-outbound-tag"
  },
  "mux": {}
}

sendThrough: address

用于发送数据的 IP 地址,当主机有多个 IP 地址时有效,默认值为"0.0.0.0"。

protocol: string

连接协议名称,可选的值见协议列表。

settings: OutboundConfigurationObject

具体的配置内容,视协议不同而不同。详见每个协议中的OutboundConfigurationObject。

tag: string

此出站连接的标识,用于在其它的配置中定位此连接。当其值不为空时,必须在所有 tag 中唯一。

streamSettings: StreamSettingsObject。

底层传输配置

proxySettings: ProxySettingsObject

出站代理配置。当出站代理生效时,此出站协议的streamSettings将不起作用。

mux: MuxObject

Mux 配置。

ProxySettingsObject

{
  "tag": "another-outbound-tag"
}

tag: string

当指定另一个出站协议的标识时,此出站协议发出的数据,将被转发至所指定的出站协议发出。

本地策略
本地策略可以配置一些用户相关的权限,比如连接超时设置。V2Ray 处理的每一个连接,都对应到一个用户,按照这个用户的等级(level)应用不同的策略。本地策略可按照等级的不同而变化。

PolicyObject
PolicyObject对应配置文件中的policy项。

{
  "levels": {
    "0": {
      "handshake": 4,
      "connIdle": 300,
      "uplinkOnly": 2,
      "downlinkOnly": 5,
      "statsUserUplink": false,
      "statsUserDownlink": false,
      "bufferSize": 10240
    }
  },
  "system": {
    "statsInboundUplink": false,
    "statsInboundDownlink": false
  }
}

level: map{string: LevelPolicyObject}

一组键值对,每个键是一个字符串形式的数字(JSON 的要求),比如 "0"、"1" 等,双引号不能省略,这个数字对应用户等级。每一个值是一个 LevelPolicyObject.

每个入站出站代理现在都可以设置用户等级,V2Ray 会根据实际的用户等级应用不同的本地策略。

system: SystemPolicyObject

V2Ray 系统的策略

LevelPolicyObject

{
  "handshake": 4,
  "connIdle": 300,
  "uplinkOnly": 2,
  "downlinkOnly": 5,
  "statsUserUplink": false,
  "statsUserDownlink": false,
  "bufferSize": 10240
}

handshake: number

连接建立时的握手时间限制。单位为秒。默认值为4。在入站代理处理一个新连接时,在握手阶段(比如 VMess 读取头部数据,判断目标服务器地址),如果使用的时间超过这个时间,则中断该连接。

connIdle: number

连接空闲的时间限制。单位为秒。默认值为300。在入站出站代理处理一个连接时,如果在 connIdle 时间内,没有任何数据被传输(包括上行和下行数据),则中断该连接。

uplinkOnly: number

当连接下行线路关闭后的时间限制。单位为秒。默认值为2。当服务器(如远端网站)关闭下行连接时,出站代理会在等待 uplinkOnly 时间后中断连接。

downlinkOnly: number

当连接上行线路关闭后的时间限制。单位为秒。默认值为5。当客户端(如浏览器)关闭上行连接时,入站代理会在等待 downlinkOnly 时间后中断连接。

在 HTTP 浏览的场景中,可以将uplinkOnly和downlinkOnly设为0,以提高连接关闭的效率。

statsUserUplink: true | false

当值为true时,开启当前等级的所有用户的上行流量统计。

statsUserDownlink: true | false

当值为true时,开启当前等级的所有用户的下行流量统计。

bufferSize: number

每个连接的内部缓存大小。单位为 kB。当值为0时,内部缓存被禁用。

默认值 (V2Ray 4.4+):

在 ARM、MIPS、MIPSLE 平台上,默认值为0。
在 ARM64、MIPS64、MIPS64LE 平台上,默认值为4。
在其它平台上,默认值为512。
默认值 (V2Ray 4.3-):

在 ARM、MIPS、MIPSLE、ARM64、MIPS64、MIPS64LE 平台上,默认值为16。
在其它平台上,默认值为2048。
bufferSize 选项会覆盖环境变量中v2ray.ray.buffer.size的设定。

SystemPolicyObject

{
  "statsInboundUplink": false,
  "statsInboundDownlink": false
}

statsInboundUplink: true | false

当值为true时,开启所有入站代理的上行流量统计。

statsInboundDownlink: true | false

当值为true时,开启所有入站代理的下行流量统计。

把主库的数据表导入到新的分库中,新库必须先建好,可以先用mysql连接一下数据库是否正常

mysqldump --host=rm-uf683vxxxxxnes754.mysql.rds.aliyuncs.com -uroot -p5sxxxe8ih --databases new --tables pre_ads3 \
> pre_answers3 \
> pre_area3 \
> pre_articles3 \
> pre_articles_about3 \
> pre_attachments3 \
> pre_bj_articles3 \
> pre_bj_articles_publish3 \
> pre_bj_columns3 \
> pre_columns3 \
> pre_config3 \
> pre_keywords3 \
> pre_links3 \
> pre_lmtc3 \
> pre_lmtc_sun3 \
> pre_posts3 \
> pre_questions3 \
> pre_sale_logs3 \
> pre_site_info3 \
> pre_tag_class3 \
> pre_tag_relation3 \
> pre_tag_types3 \
> pre_tags3 \
> pre_tdk3 \
> pre_tips3 |mysql -h 127.0.0.1 -uibl -pTSSsNXxxxxDnxiHX ibl

0. 备份脚本

#!/bin/bash
echo 'please input date parameter: sh mysqldump.sh 20210708'
sqlname="$1db.sql"
echo 'start export db sql: ${sqlname}'
/usr/bin/mysqldump -h 28.104.87.140 -P 3308 -u root -p123456 monitor utp_node utp_task_dest > ./utp_db_backup_$sqlname 

1. 命令格式

mysqldump [选项] 数据库名 [表名] > 脚本名
或
mysqldump [选项] --数据库名 [选项 表名] > 脚本名
或
mysqldump [选项] --all-databases [选项]  > 脚本名

2. 选项说明

参数名                            缩写    含义
--host                            -h        服务器IP地址
--port                            -P        服务器端口号
--user                            -u        MySQL 用户名
--pasword                        -p        MySQL 密码
--databases                                指定要备份的数据库
--all-databases                            备份mysql服务器上的所有数据库
--compact                                压缩模式,产生更少的输出
--comments                                添加注释信息
--complete-insert                        输出完成的插入语句
--lock-tables                            备份前,锁定所有数据库表
--no-create-db/--no-create-info            禁止生成创建数据库语句
--force                                    当出现错误时仍然继续备份操作
--default-character-set                    指定默认字符集
--add-locks                                备份数据库表时锁定数据库表

--no-create-db,  ---取消创建数据库sql(默认存在)
--no-create-info,---取消创建表sql(默认存在)
--no-data         ---不导出数据(默认导出)
--add-drop-database ---增加删除数据库sql(默认不存在)
--skip-add-drop-table  ---取消每个数据表创建之前添加drop数据表语句(默认每个表之前存在drop语句)
--skip-add-locks       ---取消在每个表导出之前增加LOCK TABLES(默认存在锁)
--skip-comments        ---注释信息(默认存在)

3. 还原命令

# 系统行命令
mysqladmin -uroot -p create db_name 
mysql -uroot -p  db_name < /backup/mysqldump/db_name.db

注:在导入备份数据库前,db_name如果没有,是需要创建的; 而且与db_name.db中数据库名是一样的才可以导入。

# 执行sql 文件,soure 方法
mysql > use db_name
mysql > source /backup/mysqldump/db_name.db

4. 实例1

# 备份所有数据库:
mysqldump -uroot -p --all-databases > /backup/mysqldump/all.db

# 导出db1、db2两个数据库的所有数据
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql

# 备份指定数据库test:
mysqldump -uroot -p test > /backup/mysqldump/test.db

# 备份指定数据库指定表(多个表以空格间隔)
mysqldump -uroot -p  mysql db event > /backup/mysqldump/2table.db

# 导出db1中的a1、a2表
mysqldump -uroot -proot --databases db1 --tables a1 a2  >/tmp/db1.sql

# 条件导出,导出db1表a1中id=1的数据
mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1'  >/tmp/a1.sql

# 备份指定数据库排除某些表
mysqldump -uroot -p test --ignore-table=test.t1 --ignore-table=test.t2 > /backup/mysqldump/test2.db

# 只导出表结构不导出数据,--no-data
mysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql

# 跨服务器导出导入数据
mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot db2
# 将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错
mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot test 

5. 实例2(进阶)

--all-databases  , -A
导出全部数据库。
mysqldump  -uroot -p --all-databases
--all-tablespaces  , -Y
导出全部表空间。
mysqldump  -uroot -p --all-databases --all-tablespaces
--no-tablespaces  , -y
不导出任何表空间信息。
mysqldump  -uroot -p --all-databases --no-tablespaces
--add-drop-database
每个数据库创建之前添加drop数据库语句。
mysqldump  -uroot -p --all-databases --add-drop-database
--add-drop-table
每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)
mysqldump  -uroot -p --all-databases  (默认添加drop语句)
mysqldump  -uroot -p --all-databases –skip-add-drop-table  (取消drop语句)
--add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK  TABLE。(默认为打开状态,使用--skip-add-locks取消选项)
mysqldump  -uroot -p --all-databases  (默认添加LOCK语句)
mysqldump  -uroot -p --all-databases –skip-add-locks   (取消LOCK语句)
--allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。
mysqldump  -uroot -p --all-databases --allow-keywords
--apply-slave-statements
在'CHANGE MASTER'前添加'STOP SLAVE',并且在导出的最后添加'START SLAVE'。
mysqldump  -uroot -p --all-databases --apply-slave-statements
--character-sets-dir
字符集文件的目录
mysqldump  -uroot -p --all-databases  --character-sets-dir=/usr/local/mysql/share/mysql/charsets
--comments
附加注释信息。默认为打开,可以用--skip-comments取消
mysqldump  -uroot -p --all-databases  (默认记录注释)
mysqldump  -uroot -p --all-databases --skip-comments   (取消注释)
--compatible
导出的数据将和其它数据库或旧版本的MySQL 相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,
要使用几个值,用逗号将它们隔开。它并不保证能完全兼容,而是尽量兼容。
mysqldump  -uroot -p --all-databases --compatible=ansi
--compact
导出更少的输出信息(用于调试)。去掉注释和头尾等结构。可以使用选项:--skip-add-drop-table  --skip-add-locks --skip-comments --skip-disable-keys
mysqldump  -uroot -p --all-databases --compact
--complete-insert,  -c
使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。
mysqldump  -uroot -p --all-databases --complete-insert
--compress, -C
在客户端和服务器之间启用压缩传递所有信息
mysqldump  -uroot -p --all-databases --compress
--create-options,  -a
在CREATE TABLE语句中包括所有MySQL特性选项。(默认为打开状态)
mysqldump  -uroot -p --all-databases
--databases,  -B
导出几个数据库。参数后面所有名字参量都被看作数据库名。
mysqldump  -uroot -p --databases test mysql
--debug
输出debug信息,用于调试。默认值为:d:t,/tmp/mysqldump.trace
mysqldump  -uroot -p --all-databases --debug
mysqldump  -uroot -p --all-databases --debug=" d:t,/tmp/debug.trace"
--debug-check
检查内存和打开文件使用说明并退出。
mysqldump  -uroot -p --all-databases --debug-check
--debug-info
输出调试信息并退出
mysqldump  -uroot -p --all-databases --debug-info
--default-character-set
设置默认字符集,默认值为utf8
mysqldump  -uroot -p --all-databases --default-character-set=utf8
--delayed-insert
采用延时插入方式(INSERT DELAYED)导出数据
mysqldump  -uroot -p --all-databases --delayed-insert
--delete-master-logs
master备份后删除日志. 这个参数将自动激活--master-data。
mysqldump  -uroot -p --all-databases --delete-master-logs
--disable-keys
对于每个表,用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;语句引用INSERT语句。这样可以更快地导入dump出来的文件,因为它是在插入所有行后创建索引的。该选项只适合MyISAM表,默认为打开状态。
mysqldump  -uroot -p --all-databases 
--dump-slave
该选项将主的binlog位置和文件名追加到导出数据的文件中(show slave status)。设置为1时,将会以CHANGE MASTER命令输出到数据文件;设置为2时,会在change前加上注释。该选项将会打开--lock-all-tables,除非--single-transaction被指定。该选项会自动关闭--lock-tables选项。默认值为0。
mysqldump  -uroot -p --all-databases --dump-slave=1
mysqldump  -uroot -p --all-databases --dump-slave=2
--master-data
该选项将当前服务器的binlog的位置和文件名追加到输出文件中(show master status)。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE  MASTER命令前添加注释信息。该选项将打开--lock-all-tables 选项,除非--single-transaction也被指定(在这种情况下,全局读锁在开始导出时获得很短的时间;其他内容参考下面的--single-transaction选项)。该选项自动关闭--lock-tables选项。
mysqldump  -uroot -p --host=localhost --all-databases --master-data=1;
mysqldump  -uroot -p --host=localhost --all-databases --master-data=2;
--events, -E
导出事件。
mysqldump  -uroot -p --all-databases --events
--extended-insert,  -e
使用具有多个VALUES列的INSERT语法。这样使导出文件更小,并加速导入时的速度。默认为打开状态,使用--skip-extended-insert取消选项。
mysqldump  -uroot -p --all-databases
mysqldump  -uroot -p --all-databases--skip-extended-insert   (取消选项)
--fields-terminated-by
导出文件中忽略给定字段。与--tab选项一起使用,不能用于--databases和--all-databases选项
mysqldump  -uroot -p test test --tab="/home/mysql" --fields-terminated-by="#"
--fields-enclosed-by
输出文件中的各个字段用给定字符包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项
mysqldump  -uroot -p test test --tab="/home/mysql" --fields-enclosed-by="#"
--fields-optionally-enclosed-by
输出文件中的各个字段用给定字符选择性包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项
mysqldump  -uroot -p test test --tab="/home/mysql"  --fields-enclosed-by="#" --fields-optionally-enclosed-by  ="#"
--fields-escaped-by
输出文件中的各个字段忽略给定字符。与--tab选项一起使用,不能用于--databases和--all-databases选项
mysqldump  -uroot -p mysql user --tab="/home/mysql" --fields-escaped-by="#"
--flush-logs
开始导出之前刷新日志。
请注意:假如一次导出多个数据库(使用选项--databases或者--all-databases),将会逐个数据库刷新日志。除使用--lock-all-tables或者--master-data外。在这种情况下,日志将会被刷新一次,相应的所以表同时被锁定。因此,如果打算同时导出和刷新日志应该使用--lock-all-tables 或者--master-data 和--flush-logs。
mysqldump  -uroot -p --all-databases --flush-logs
--flush-privileges
在导出mysql数据库之后,发出一条FLUSH  PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候。
mysqldump  -uroot -p --all-databases --flush-privileges
--force
在导出过程中忽略出现的SQL错误。
mysqldump  -uroot -p --all-databases --force
--help
显示帮助信息并退出。
mysqldump  --help
--hex-blob
使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用该选项。影响到的字段类型有BINARY、VARBINARY、BLOB。
mysqldump  -uroot -p --all-databases --hex-blob
--host, -h
需要导出的主机信息
mysqldump  -uroot -p --host=localhost --all-databases
--ignore-table
不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……
mysqldump  -uroot -p --host=localhost --all-databases --ignore-table=mysql.user
--include-master-host-port
在--dump-slave产生的'CHANGE  MASTER TO..'语句中增加'MASTER_HOST=<host>,MASTER_PORT=<port>'  
mysqldump  -uroot -p --host=localhost --all-databases --include-master-host-port
--insert-ignore
在插入行时使用INSERT IGNORE语句.
mysqldump  -uroot -p --host=localhost --all-databases --insert-ignore
--lines-terminated-by
输出文件的每行用给定字符串划分。与--tab选项一起使用,不能用于--databases和--all-databases选项。
mysqldump  -uroot -p --host=localhost test test --tab="/tmp/mysql"  --lines-terminated-by="##"
--lock-all-tables,  -x
提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction 和--lock-tables 选项。
mysqldump  -uroot -p --host=localhost --all-databases --lock-all-tables
--lock-tables,  -l
开始导出前,锁定所有表。用READ  LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,--single-transaction是一个更好的选择,因为它根本不需要锁定表。
请注意当导出多个数据库时,--lock-tables分别为每个数据库锁定表。因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出状态可以完全不同。
mysqldump  -uroot -p --host=localhost --all-databases --lock-tables
--log-error
附加警告和错误信息到给定文件
mysqldump  -uroot -p --host=localhost --all-databases  --log-error=/tmp/mysqldump_error_log.err
--max_allowed_packet
服务器发送和接受的最大包长度。
mysqldump  -uroot -p --host=localhost --all-databases --max_allowed_packet=10240
--net_buffer_length
TCP/IP和socket连接的缓存大小。
mysqldump  -uroot -p --host=localhost --all-databases --net_buffer_length=1024
--no-autocommit
使用autocommit/commit 语句包裹表。
mysqldump  -uroot -p --host=localhost --all-databases --no-autocommit
--no-create-db,  -n
只导出数据,而不添加CREATE DATABASE 语句。
mysqldump  -uroot -p --host=localhost --all-databases --no-create-db
--no-create-info,  -t
只导出数据,而不添加CREATE TABLE 语句。
mysqldump  -uroot -p --host=localhost --all-databases --no-create-info
--no-data, -d
不导出任何数据,只导出数据库表结构。
mysqldump  -uroot -p --host=localhost --all-databases --no-data
--no-set-names,  -N
等同于--skip-set-charset
mysqldump  -uroot -p --host=localhost --all-databases --no-set-names
--opt
等同于--add-drop-table,  --add-locks, --create-options, --quick, --extended-insert, --lock-tables,  --set-charset, --disable-keys 该选项默认开启,  可以用--skip-opt禁用.
mysqldump  -uroot -p --host=localhost --all-databases --opt
--order-by-primary
如果存在主键,或者第一个唯一键,对每个表的记录进行排序。在导出MyISAM表到InnoDB表时有效,但会使得导出工作花费很长时间。 
mysqldump  -uroot -p --host=localhost --all-databases --order-by-primary
--password, -p
连接数据库密码
--pipe(windows系统可用)
使用命名管道连接mysql
mysqldump  -uroot -p --host=localhost --all-databases --pipe
--port, -P
连接数据库端口号
--protocol
使用的连接协议,包括:tcp, socket, pipe, memory.
mysqldump  -uroot -p --host=localhost --all-databases --protocol=tcp
--quick, -q
不缓冲查询,直接导出到标准输出。默认为打开状态,使用--skip-quick取消该选项。
mysqldump  -uroot -p --host=localhost --all-databases 
mysqldump  -uroot -p --host=localhost --all-databases --skip-quick
--quote-names,-Q
使用(`)引起表和列名。默认为打开状态,使用--skip-quote-names取消该选项。
mysqldump  -uroot -p --host=localhost --all-databases
mysqldump  -uroot -p --host=localhost --all-databases --skip-quote-names
--replace
使用REPLACE INTO 取代INSERT INTO.
mysqldump  -uroot -p --host=localhost --all-databases --replace
--result-file,  -r
直接输出到指定文件中。该选项应该用在使用回车换行对(\\r\\n)换行的系统上(例如:DOS,Windows)。该选项确保只有一行被使用。
mysqldump  -uroot -p --host=localhost --all-databases --result-file=/tmp/mysqldump_result_file.txt
--routines, -R
导出存储过程以及自定义函数。
mysqldump  -uroot -p --host=localhost --all-databases --routines
--set-charset
添加'SET NAMES  default_character_set'到输出文件。默认为打开状态,使用--skip-set-charset关闭选项。
mysqldump  -uroot -p --host=localhost --all-databases 
mysqldump  -uroot -p --host=localhost --all-databases --skip-set-charset
--single-transaction
该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK  TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick 选项。
mysqldump  -uroot -p --host=localhost --all-databases --single-transaction
--dump-date
将导出时间添加到输出文件中。默认为打开状态,使用--skip-dump-date关闭选项。
mysqldump  -uroot -p --host=localhost --all-databases
mysqldump  -uroot -p --host=localhost --all-databases --skip-dump-date
--skip-opt
禁用–opt选项.
mysqldump  -uroot -p --host=localhost --all-databases --skip-opt
--socket,-S
指定连接mysql的socket文件位置,默认路径/tmp/mysql.sock
mysqldump  -uroot -p --host=localhost --all-databases --socket=/tmp/mysqld.sock
--tab,-T
为每个表在给定路径创建tab分割的文本文件。注意:仅仅用于mysqldump和mysqld服务器运行在相同机器上。注意使用--tab不能指定--databases参数
mysqldump  -uroot -p --host=localhost test test --tab="/home/mysql"
--tables
覆盖--databases (-B)参数,指定需要导出的表名,在后面的版本会使用table取代tables。
mysqldump  -uroot -p --host=localhost --databases test --tables test
--triggers
导出触发器。该选项默认启用,用--skip-triggers禁用它。
mysqldump  -uroot -p --host=localhost --all-databases --triggers
--tz-utc
在导出顶部设置时区TIME_ZONE='+00:00' ,以保证在不同时区导出的TIMESTAMP 数据或者数据被移动其他时区时的正确性。
mysqldump  -uroot -p --host=localhost --all-databases --tz-utc
--user, -u
指定连接的用户名。
--verbose, --v
输出多种平台信息。
--version, -V
输出mysqldump版本信息并退出
--where, -w
只转储给定的WHERE条件选择的记录。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。
mysqldump  -uroot -p --host=localhost --all-databases --where=" user=’root’"
--xml, -X
导出XML格式.
mysqldump  -uroot -p --host=localhost --all-databases --xml
--plugin_dir
客户端插件的目录,用于兼容不同的插件版本。
mysqldump  -uroot -p --host=localhost --all-databases --plugin_dir="/usr/local/lib/plugin"
--default_auth
客户端插件默认使用权限。
mysqldump  -uroot -p --host=localhost --all-databases --default-auth="/usr/local/lib/plugin/<PLUGIN>"

https://github.com/jmaister/excellentexport

这是一个网页JS下载TABLE数据保存为EXCEL的插件
需要注意的是:下载按钮标签需要使用A标签,不然不弹出保存窗口(比如使用VUE的时候可能会把按钮做成DIV标签,就不行),实际上是执行了程序的就是不弹窗口,不知道什么原因

<table id="datatable">
    <tr>
        <td>100</td> <td>200</td> <td>300</td>
    </tr>
    <tr>
        <td>400</td> <td>500</td> <td>600</td>
    </tr>
</table>

<a download="somedata.xls" href="#" onclick="return ExcellentExport.excel(this, 'datatable', 'Sheet Name Here');">Export to Excel</a>
<a download="somedata.csv" href="#" onclick="return ExcellentExport.csv(this, 'datatable');">Export to CSV</a>
<!-- new API, xlsx -->
<a download="somedata.xlsx" href="#" onclick="return ExcellentExport.convert({ anchor: this, filename: 'data_123.array', format: 'xlsx'},[{name: 'Sheet Name Here 1', from: {table: 'datatable'}}]);">Export to CSV</a>
 ExcellentExport.convert(options, sheets);

 Options:
 {
    anchor: String or HTML Element,
    format: 'xlsx' or 'xls' or 'csv',
    filename: String,
    rtl: Use Right-to-left characters, boolean (optional)
 }

 Sheets must be an array of sheet configuration objects. Sheet description:
 [
    {
        name: 'Sheet 1', // Sheet name
        from: {
            table: String/Element, // Table ID or table element
            array: [...] // Array with the data. Array where each element is a row. Every row is an array of the cells.
        },
        removeColumns: [...], // Array of column indexes (from 0)
        filterRowFn: function(row) {return true}, // Function to decide which rows are returned
        fixValue: function(value, row, column) {return fixedValue} // Function to fix values, receiving value, row num, column num
        fixArray: function(array) {return array} // Function to manipulate the whole data array
        rtl: Use Right-to-left characters, boolean (optional)
        formats: [...] // Array of formats for each column. See formats below.
        ...
    },
    {
        ...
    }, ...
]

使用VUE

        <a href='javascript:;' ref="download" id='anchorNewApi-csv' class='btn btn-primary' data-onclick='return dataDownload(this)'>导出数据</a>


            mounted() {
                // 导出数据
                if (this.$refs['download']) this.$refs['download'].onclick = function dataDownload(e) {
                    var dom = e.currentTarget
                    var $trs = $('#datatable tr');
                    var res = ExcellentExport.convert({
                            anchor: dom,
                            format: 'xlsx',
                            filename: '活动总表' + (new Date().getTime()),
                        },
                        [
                            {
                                name: 'Sheet1',
                                from: {table: 'datatable'},
                                // filterRowFn: function (row) {
                                //     console.log(row)
                                //     return true;
                                // },
                                fixValue: function (value, row, column) {
                                    value = value.replace(/<\w+.*?>(.*?)<\/\w+>/g, "$1")
                                    return value
                                },
                                fixArray: function (data) {
                                    for (var i in data) {
                                        if (i == 0) {
                                            data[i].push('异常备注')
                                            data[i].push('了解渠道')
                                            data[i].push('定金时间')
                                            data[i].push('非活动单')
                                            continue
                                        }
                                        var $tr = $trs.eq(i), id = $tr.attr('data-id');
                                        var text = id > 0 && vm.extraContent[id] || ''
                                        var text2 = id > 0 && vm.answers[id] || ''
                                        var text3 = id > 0 && vm.djTime[id] || ''
                                        var text4 = (id > 0 && vm.isActiveArr[id] != 1) ? "是" : ''
                                        data[i].push(text)
                                        data[i].push(text2)
                                        data[i].push(text3)
                                        data[i].push(text4)
                                    }
                                    return data
                                }
                            }
                        ])
                    return res
                }
            },