#### mysql相关信息 - 版本: 5.6.44 - 作用:备份mysql数据库和数据到sql文件,清除30天之前的备份,可添加定时任务 - linux启动的是docker容器,windows为解压版mysql #### 代码地址 ``` https://github.com/CuteErica/mysql_backup.git ``` #### linux - 需要有mysqldump可执行文件,通过安装mysql或者上传mysqldump可执行文件 mysqldump.sh ``` #!/bin/bash container_name=mysql data_dir=/var/backup/mysql user=root passwd=xxx host=192.168.1.100 port=3306 log=/var/backup/mysql/mysql_backup.log # 备份所有数据库包括数据 ./mysqldump -h ${host} -P ${port} -u${user} -p${passwd} --all-databases >${data_dir}/mysqldata_`date +%Y%m%d%H%M%S`.sql if [ $? -ne 0 ];then # 任务失败,写入日志 echo "***** 备份失败`date +%Y-%m-%d %H:%M:%S` *****" >> ${log} exit -1 fi # 删除30天前的sql备份 find ${data_dir} -mtime +30 -name '*.sql' -exec rm -rf {} \; # 定时任务 # 注意定时任务一定要使用绝对路径 # 0 2 * * * /bin/bash /var/backup/mysql/mysql_backup.sh > /var/backup/mysql/mysql_backup.log 2>&1 ``` #### windows - 同样的,需要mysqldump.exe文件 - 代码 https://github.com/CuteErica/mysql_backup.git - 支持配置,存在exe文件 #### 数据导入 ``` mysql -h {ip} -P {port} -u{user} -p{passwd} < xxxx.sql ``` #### 错误记录 ``` mysqldump: Got error: 1066: "Not unique table/alias: 'hwbimcommon_spring_session' when using LOCK TABLES ``` 原因是因为mysql中设置了 `lower_case_table_names=1` **Solution** ``` 使用--single-transaction参数 mysqldump --single-transaction -uroot -p database > database.sql ``` #### 使用Dockerfile **Dockerfile** ``` FROM alpine:3.10 ENV LANG C.UTF-8 ENV TIMEZONE Asia/Shanghai RUN echo -e "http://mirrors.aliyun.com/alpine/v3.10/main\nhttp://mirrors.aliyun.com/alpine/v3.10/community" > /etc/apk/repositories \ && apk add -U tzdata && ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo "${TIMEZONE}" > /etc/timezone \ && apk add mysql-client \ && mkdir -p /data/mysqlbackup/backupdata COPY mysqlbackup.sh / EXPOSE 3306 CMD ["sh","mysqlbackup.sh"] ``` **usage** ``` # 修改mysqlbackup.sh文件中的配置 # 构建镜像 docker build -t mysqlbackup:alpine . # 启动容器 docker run -it --rm -v /data/mysqlbackup/backupdata:/data/mysqlbackup/backupdata mysqlbackup:alpine # 定时任务 /bin/docker run -i --rm -v /data/mysqlbackup/backupdata:/data/mysqlbackup/backupdata mysqlbackup:alpine &> /data/mysqlbackup/backup.log ``` 最后修改:2019 年 09 月 06 日 02 : 37 PM © 著作权归作者所有