shell怎么对mysql数据库进行自动备份

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-28
如何使用shell脚本每天自动备份mysql数据库

mysql备份用自带的备份工具mysqldump
每天自动执行用cron工具,把mysql的备份命令放在.sh文件里面
.sh文件放在/etc/cron.daily目录,就会每天自动执行了。

PATH=$PATH:$HOME/bin #备份目录 BackupPath="/home/mysql/backup" #备份文件名 BackupFile="dbbackup"$(date +%y%m%d_%H)".sql" #数据库的用户名及密码 user="root" passwd="Welcome@123" #检查备份目录是否存在 if !(test -d $BackupPath) then mkdir $BackupPath fi #使用mysql提供的mysqldump备份脚本 /usr/local/mysql/bin/mysqldump -u$user -p$passwd --allow-keywords --default-character-set=utf8 --set-charset -R -A --master-data=2 >"$BackupPath"/"$BackupFile" #删除三个月前的备份文件 find "$BackupPath" -name "dbbackup*[log,sql]" -type f -mtime +3 -exec rm -rf {} \;

1、计划任务,每天1点备份
0 1 * * * /data/backup/backup-mysql.sh;
2、backup-mysql.sh内容,将每天备份的内容打包
#!/bin/sh
ymd=`date +%Y%m%d`
cd /data/backup
mysqldump -uuser001 -p12345678 db001 > db001.sql
tar zcf db001-${ymd}.sql.gz db001.sql
3、restore.sh恢复数据
mysql -uuser001 -p12345678 -Ddb001 < db001.sql

本文介绍 MySQL 8.0 shell 子模块 Util 的两个导入特性 importTable/import_table(JS和python 版本的命名差异)、importJson/import_json的使用方法。


其中 import_table 是通过传统 MySQL 协议来通信,Import_json 是通过 X 插件协议来通信。MySQL 一直以来提供导入文件 SQL 命令 load data infile(单线程)以及对应的可执行文件 mysqlimport(多线程)。


比如我导入 100W 行示例数据到表 ytt.tl1,花了 24 秒。这个已经是 MySQL 默认导入来的最快的。分析那我们现在看下 mysqlimport 工具的升级版,mysqlshell 的 util 工具集。


使用这两个工具之前,必须得临时开启 local_infile 选项。1. import_table建立 3306 端口的新连接我这里切换为 python 模式清空掉示例表 Ytt.tl1import_table 有两个参数,第一个参数定义导入文件的路径,第二个定义相关选项,比如导入的格式,并发的数量等。定义文件路径(参数1)定义选项(参数2)执行导入:只花了不到 17 秒,比传统 mysqlimport 快了不少。


我们上面指定了显式指定了字段分隔符,那有没有已经定义好的组合格式呢? 答案是有的,选项 dialect 可以指定以下格式:csv,tsv,json,csv-unix那么上面的导入,我们可以更简单,改下变量 y_options1 的定义导入时间差不多。这里要说明下,dialect 选项的优先级比较低,比如添加了'linesTerminatedBy':'
', 则覆盖他自己的'
'。


选项 diaelect 还有一个可选值为 json,可以直接把 json 结果导入到文档表里。比如我新建一张表 tl1_json重新定义文件以及导入选项。导入 JSON 数据速度也还可以,不到 24 秒。那导入 json 数据,就必须得提到以 X 插件协议通信的工具 import_json了。2. imort_json我们切换到 mysqlx 端口import_json 参数和 Import_table 参数类似,这里我改下选项我在手册上没有看到多线程的选项,所以单线程跑 35 秒慢了些。查看刚刚导入的数据import_json 不仅仅可以导入 Json 数据,更重要的是可以在 BSON 和 JSON 之间平滑的转换,有兴趣的同学可以去 TRY 下。



  • 通过sql注入对mysql数据库进行写shell的主要函数是
    答:orderby函数。函数是对MySQL中查询结果按照指定字段名进行排序,除了指定字段名还可以指定字段的栏位进行排序,第一个查询字段为1,第二个为2,依次类推,所以可以利用orderby就可以判断列数。
  • 在mysql下怎样进入shell 命令行?
    答:1、首先打开软件清单面板中选择相应主机,在右边的选项卡里单击配置选项卡。2、单击安全配置文件后在“服务”部分中,单击安全配置文件。3、在弹出的对话框选项卡列表中选择 ESXi Shell—单击选项——手动启动和停止。4、最后选择启动以启用此服务——单击确定。5、看到这个,标志进入Shell模式成功。
  • shell脚本如何连接远程数据库
    答:连Oracle数据库,用:sqlplus -s usr/pwd@mylink @my.sql
  • 在MYSQL怎样进入shell命令行?
    答:直接用Linux系统用命令链接mysql 例如:mysql -h 127.0.0.1 -u root -p123456
  • 用Xshell登陆linux服务器,安装完mysql后,启动
    答:/etc/inint.d/mysqld stop 3、mysqladmin shutdown 三、重启 1、使用 service 启动:service mysqld restart 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart 备注:查看mysql端口是否已经使用,使用netstat -anp 命令查看 服务器端口 使用情况。第二部分,linux下重启 mysql数据库 的各种...
  • 如何用shell脚本将在mysql数据库中得到的数据导入到oracle数据库中?
    答:有一个工具是mysql到oracle做数据迁移的叫Convert Mysql to Oracle 你可以试试,不知道合不合适。非要弄shell的话,那可真是麻烦可以选择让程序员写个小程序转换sql的让后用shell调用。真自己写shell。。。那就折腾导出来的 create、insert语句吧。想想都头大。是在没必要完全用shell弄。
  • 如何初始化mysql数据库
    答:初始化mysql数据库,在shell中运行以下命令:cd /usr/local/mysql mkdir sock cd /usr/local/mysql/bin 初始化数据库 ./mysql_install_db--user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 或者# mysqld --initialize ...
  • linux导入数据库文件命令linux导入数据
    答:2、找到到keystoreFile="cert/214054375370509.pfx"keystoreType="PKCS12"keystorePass="证书密码"完整的配置如下,其中port属性根据实际情况修改 mysql转移数据的方法?mysql标准化的迁移工具是mysqldump.exe、mysqlimport.exe,你运行这两个工具,使用--help就可以知道怎么使用了,他们用来把MYSQL数据库转换...
  • shell安装mysql并设置密码
    答:shell安装mysql并设置密码的方法是:1、将安装包拖至opt目录下。2、编辑一个脚本文件,将以下脚本内容复制进去,执行脚本,等脚本执行完成。3、使用命令mysqladmin-uroot-ppassword,123456修改密码,123456为修改的密码,也可自己设置。
  • linux上mysql怎样导入sql数据库文件?
    答:首先通过xshell连接数据库服务器,执行命令mysql -u root -p 命令,按照提示输入密码。连接上数据库。\x0d\x0a\x0d\x0a在连接终端上执行命令create database JD_Model;\x0d\x0a执行完成后,验证数据库是否创建成功。执行命令show database;查看是否有JD_Model数据库。\x0d\x0a\x0d\x0a...