9C1.备份及恢复mysql
9C1.备份及恢复mysql
适用于 mysql 8.0/5.7,native/cloud数据库。适用mysqldump备份,适用mysql恢复
9C1.1.备份时事项
使用 wings-mysql-dump.sh 脚本进行备份,选择wings.dba权限即可。 若使用 mysqlpump,注意是pump
不是dump
,需要额外的权限。
根据dump文件中的.tip
文件进行 scp,gzip 操作。
9C1.2.恢复时事项
使用mysqldump的备份时,在trigger时,需要调整其中的DEFINER sed -E 's/DEFINER=[^*]+//g'
使用mysqlpump的备份时,需要注意sql中的原database限定,避免错库。 sed -E 's/`OLD_DB`/`NEW_DB`/g'
9C1.3.数据脱敏
一般情况,需要对正式数据进行脱敏处理,包括但不限于,
- 密码类,如dev中,统一设置,避免泄露或错误登录。
- 隐私类,如姓名,身份证,地址,合规性替换。
- 通讯类,如邮件,api地址
UPDATE win_user_authn SET password ='{noop}DevGr8Ag4in' WHERE id >= 1000;
9C1.4.已知问题
云数据库的root,通常没有SHUTDOWN和SUPER权限,甚至更多,以避免破坏配置。
01.ERROR 1227: the SUPER privilege
在wings体系内,恢复trigger时,因导出语句有DEFINER=
,故提示权限不足。 需要设置trigger权限,并满足以下条件之一或全部。
- mysql导入时,按dump中的tip执行,或手工执行sed替换
- 服务器端
log_bin_trust_function_creators = 1
,提示SUPER权限
02.ERROR 1071: max key length is 767
服务器端设置 innodb_large_prefix = 1
但某些云默认配置关闭了此选项。 可以通过控制台提交参数修改,无需重启。以下是字符集及char,byte的知识点。
- UTF-8MB4 - 767/4=191
- UTF-8MB4 - 767/3=255
- 打开后,从 767 扩展到 3072 bytes
03.RELOAD privilege(s) for this
Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227)
GRANT RELOAD ON *.* TO 'maintain'@'%';
FLUSH PRIVILEGES;
04.server that has GTIDs
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions
[mysqldump]
set-gtid-purged=OFF
05.Unknown table 'column_statistics'
Unknown table 'column_statistics' in information_schema (1109)
[mysqldump]
column-statistics=0
06.Row size too large (> 8126)
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
[mysqld]
innodb_strict_mode=0
07.Public Key Retrieval is not allowed
Public Key Retrieval is not allowed
add useSSL=false
and allowPublicKeyRetrieval=true
to
- QueryString of jdbc url, or,
- Driver properties of DBeaver