MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份

老实说,这个MySQL备份脚本执行的是本地备份;远程同步和阿里云OSS存储都照顾到了,非常全面。
这样可以省去很多后顾之忧。

自动计划备份 每天凌晨3 点自动运行,时间充裕。
备份文件按日期存储,如/backup/mysql/2 02 4 -03 -01 /,一目了然。

本地存储管理 最近 7 天的备份将被保留,并在过期时自动删除。
备份文件还使用 .sql.gz 进行压缩以节省空间。
这是防止硬盘爆炸的好办法。

远程服务器同步 使用 rsync 将文件传输到另一台服务器。
必须提前配置无密码登录;不然的话,就麻烦了。
例如,必须启用enable_ssh_sync=true;远程服务器的IP; port 您必须输入用户名和存储路径。

阿里云OSS备份 使用ossutil工具将文件传输到OSS。
必须预先安装,但不要手动运行ossutilconfig。
必须启用enable_oss_upload=true开关以及OSS路径; AccessKey 必须填写 Secret 和 Endpoint。

用法 1 .下载脚本并让它运行: git clone https://github.com/zxc7 5 6 3 5 9 8 /mysql-backup-shell.git 然后 chmod +x mysql_backup.sh。
2 . 用户名;和密码更新脚本中的MySQL连接信息,例如数据库名称。
3 .设置定时任务,例如每天凌晨3 点运行:crontab -e,并添加03 /path/to/mysql_backup.sh这一行。
4 .是否配置了远程同步;您必须生成 SSH 密钥: ssh-keygen -t rsa -b 4 09 6 -f ~/.ssh/my_backup_key,然后使用 ssh-copy-id 将其传输到远程服务器。
5 、配置OSS;安装ossutil后,您必须创建一个Bucket并获取AccessKey。
然后在脚本中修改enable_oss_upload=true以及相关信息。

注释 1 、权限问题;脚本执行用户必须具有读写权限。
2 、网络稳定非常重要。
如果没有,通常检查/var/log/mysql_backup.log。
3 . 不要随意放置 SSH 密钥。
OSS的AccessKey最好使用子账户,范围更窄,更安全。

适用条件 中小企业;本地+远程+云端;使用三级冗余非常棒。
开发环境也方便动手测试。
如果有任何条款需要遵循,它们都可以履行。

该脚本非常灵活,可以自动启用远程同步/OSS功能;非常实用。

如何运行MySQL文件_MySQL脚本文件执行与批量处理教程

直接执行SQL文件。

命令行: mysql -uroot -pmydatabase < create>路径必须输入正确。
对于包含特殊字符的密码使用引号。

源码顺序: mysql> 源/path/to/file.sql
Navicat/MySQLWorkbench: 打开软件,连接数据库,选择“运行SQL脚本”并导入文件。
蟒蛇: 蟒蛇 导入pymysql def run_sql_file(主机、用户、密码、数据库、文件): conn = pymysql.connect(主机=主机,用户=用户,密码=密码,db=db) cur = conn.cursor() 将 open(file, 'r') 作为 f: SQL = F.Read() command = [cmd.strip() for cmd in sql.split(';') if cmd.strip()] 对于 cmd 命令: cur.执行(cmd) conn.commit() 曲线.close() conn.close()
组织脚本: 添加评论。
用分隔符分成几部分。
交易处理。

批量执行: Linux使用shell脚本循环执行。
Windows 使用批处理脚本来执行循环。

常见错误: 检查语法错误,分号。
授予的权限不足。
表已存在,请使用 IF EXISTS。
字符集问题从SET NAMES utf8 mb4 开始。

安全优化: 不要硬编码密码,使用环境变量。
文件权限 chmod 6 00。
通过 SSL 连接。

效率优化: 批量插入。
添加索引。
使用 WHERE 条件。
分析慢查询。

shell里面如何进行mysql的操作

好吧,让我告诉你关于 MySQL 8 .0 Util shell 子模块的这两个导入。

一个是import_table,另一个是import_json。

对于这两种情况,您需要在使用它们之前暂时启用 local_infile 选项。
你知道的,不是吗?
我们先来说说这个import_table。

它通过传统的MySQL协议进行通信。

就我而言,我切换到了 python 模式。

看看我的表,ytt.tl1 ,我先清除了它,一个示例表。

import_table,需要建立一个新的连接,端口为3 3 06
举个例子。

我将1 00万行样本数据导入到表ytt.tl1 中,花了2 4 秒。

这个,使用mysqlimport,多线程,已经是默认最快的MySQL导入了。

现在我们来看看mysqlimport工具的升级版本,mysqlshell的实用工具集。

该实用工具集包括这两个导入工具。

1 .import_table
它有两个参数。
第一个参数设置导入文件的路径,第二个参数设置相关选项,例如导入格式、并发数等。

在我这边,设置文件路径(参数1 ),设置选项(参数2 ),然后运行导入。

运行导入:只用了不到1 7 秒,比传统的mysqlimport快得多。

我们在上面明确指定了字段分隔符。
有定义的组合格式吗?
答案是肯定的,dialect选项可以指定以下格式:csv、tsv、json、csv-unix。

接下来上面的导入,我们可以变得更简单,更改变量 y_options1 的定义。

导入时间大致相同。

这里需要注意的是方言选项的优先级较低。

例如,如果添加 'linesTerendBy':'\r\n',则其自身的 '\n' 将被覆盖。

dialect选项还有一个可选值json,可以直接将json结果导入到文档表中。

例如,我创建一个新表 tl1 _json 并重新定义文件和导入选项。

JSON数据导入速度也不错,不到2 4 秒。

要导入json数据,必须提到与X插件协议通信的import_json工具。

2 .imort_json
我们切换到mysqlx端口。

import_json 参数与 Import_table 参数类似。

在这里我更改了选项。

手册中没有看到多线程选项,所以单线程运行3 5 秒是慢了一点。

查看您刚刚导入的数据。

import_json不仅可以导入Json数据,更重要的是可以在BSON和JSON之间进行平滑转换。

有兴趣的同学可以去TRY。