postgresql 和 mysql 数据库备份恢复以及时区问题
概要
postgresql 和 mysql 是最常用的 2 种开源关系数据库, 很多项目也会优先选用这 2 种数据库.
通过 docker 来使用这 2 种数据库的时候, 部署非常方便, 没什么好说的. 这里简单总结下数据库的备份/恢复和时区设置问题.
postgesql 12
备份/恢复脚本
1 DOCKER_CONTAINER=pg12
2 DATE=`date +%Y%m%d-%H%M`
3 BACK_DATA=${DOCKER_CONTAINER}-data-${DATE}.out
4 docker exec ${DOCKER_CONTAINER} pg_dumpall -U postgres > ${BACK_DATA}
5
6 echo "docker cp ${BACK_DATA} ${DOCKER_CONTAINER}:/tmp" > restore-data.sh
7 echo "docker exec ${DOCKER_CONTAINER} psql -U postgres -f /tmp/${BACK_DATA} postgres" >> restore-data.sh
其中 DOCKER_CONTAINER 可以配置成自己的数据库 docker 的名称 备份之后, 会生成对应的恢复脚本.
时区设置
docker 中的数据库默认都是配置的 UTC 时区, 和中国差 8 个小时. 通过修改配置文件, 可以将默认时区改成中国的时区.
把 docker 中 /var/lib/postgresql/data/postgresql.conf 文件拷贝出来, 并修改如下 2 条:
log_timezone = 'PRC'
timezone = 'PRC'
启动的 docker-compose.yml 中, 加上对应 volume 配置:
services:
postgres:
image: postgres:12
restart: always
ports:
- "5432:5432"
volumes:
- db_data:/var/lib/postgresql/data
- ./postgresql.conf:/var/lib/postgresql/data/postgresql.conf
environment:
POSTGRES_PASSWORD: mypassword
mysql 5.6
备份/恢复脚本
1 DOCKER_CONTAINER=mysqldb
2 DB_NAME=db1
3 DATE=`date +%Y%m%d-%H%M`
4 BACK_DATA=${DOCKER_CONTAINER}-${DB_NAME}-${DATE}.sql
5 docker exec ${DOCKER_CONTAINER} mysqldump -uroot -pxxx --databases ${DB_NAME} > ${BACK_DATA}
6
7 echo "docker cp ${BACK_DATA} ${DOCKER_CONTAINER}:/tmp" > restore-data.sh
8 echo "docker exec ${DOCKER_CONTAINER} mysql -uroot -pxxx -D ${DB_NAME} < /tmp/${BACK_DATA}" >> restore-data.sh
其中 DOCKER_CONTAINER 可以配置成自己的数据库 docker 的名称 DB_NAME 可以配置需要备份的数据库名称 备份之后, 会生成对应的恢复脚本.
时区设置
mysql 的时区配置比较简单, 可以不改配置文件, 在 docker-compose.yml 中做如下修改就行:
mysql-db:
image: mysql:5.7
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: mypassword
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/usr/share/zoneinfo/Asia/Shanghai
postgresql 和 mysql 数据库备份恢复以及时区问题
postgresql 和 mysql 数据库备份恢复以及时区问题的更多相关文章
- Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复
Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...
- MySQL用户管理、常用sql语句、MySQL数据库备份恢复
1.MySQL用户管理 给远程登陆用户授权:grant all on *.* to 'user1'@'127.0.0.1' identified by '123456' (这里的127.0.0.1是指 ...
- Linux centosVMware mysql用户管理、常用sql语句、mysql数据库备份恢复
一.mysql用户管理 grant all on *.* to 'user1'@‘127.0.0.1’ identified by 'mimA123'; 创建user1用户 使用user1登录 /us ...
- mysql数据库备份/恢复
备份数据库(进入Mysql bin目录下/C:\Program Files\MySQL\MySQL Server 5.6\bin)本地安装mysql数据库 备份表结构及数据 mysqldump -hl ...
- 最常用MySql数据库备份恢复
1.数据备份类型: ·完全备份:故名思议备份整个数据库 ·部分备份:备份一部分数据集 : ·增量备份:自上次备份以来的改变数据的备份: ·差异备份:自上次完全备份后改变数据的备份: 2.数据备份的方式 ...
- mysql用户管理 常用sql语句 mysql数据库备份恢复
- JSP 实现 之 调用java方法实现MySQL数据库备份和恢复
package cn.qm.db; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOEx ...
- mysql 从陌生到熟练之----数据库备份恢复的实现方法
mysql 从陌生到熟练之----数据库备份恢复的实现方法 MySQL数据库使用命令行备份|MySQL数据库备份命令 例如: 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:roo ...
- mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库
简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠 ...
随机推荐
- Activiti7 学习总结
什么是工作流? 就是通过计算机对业务流程进行自动化处理,实现多个参与者按照预定义的流程去自动执行业务流程 什么是Activiti? Activiti是一个工作流引擎,开源的架构,基于BPMN2.0标准 ...
- Linux下安装Sublime Text 3 及使用快捷方式
1.添加sublime text3的仓库 首先按下快捷键ctrl+alt+t打开终端: 在终端输入:sudo add-apt-repository ppa:webupd8team/sublime-te ...
- 关于h5游戏开发,你想了解的一切都在这儿!
2020年,受疫情影响,线下产业红利褪去,线上迎来的新一轮的高峰.众多商家纷纷抓住了转型时机,开启了流量争夺战.H5游戏定制无疑是今年引流的大热门.如何开发一款有趣.有爆点.用户爱买单的好游戏呢? ...
- [业界方案]用Jaeger来学习分布式追踪系统Opentracing
[业界方案]用Jaeger来学习分布式追踪系统Opentracing 目录 [业界方案]用Jaeger来学习分布式追踪系统Opentracing 0x00 摘要 0x01 缘由 & 问题 1. ...
- 用c语言处理文件
用c语言处理文件只需要用到几个简单的函数: 1.文件的打开和关闭 fopen()函数用来打开一个文件,该函数原型在头文件stdio.h中,调用的一般形式为 /* FILE 是c语言内置的一个结构体类型 ...
- python中faker模块:产生随机数据的模块
#pip install faker #产生各种随机数据的模块 想要运用更多的随机数据,可以百度查找下
- [二叉树-根到叶的子路径]路径总和 III (两层递归)
题目437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父 ...
- Docker容器监控(十)
docker自带的监控命令 docker自带了三个监控命令即ps, top, stats ps docker ps 可以帮助我们很快的了解当前正在运行的容器 -a:会显示已经停掉的容器 [root ...
- Java随谈(一)魔术数字、常量和枚举
本文适合对 Java 或 C 有一些了解的用户阅读,推荐阅读时间15分钟. 导言 写这个系列的原因? 我曾经听过一种说法,如果不了解Liunx的网络通讯,就很难理解理解Java的IO:如果不知道Jav ...
- python os模块方法详解
os.access() 方法使用当前的uid/gid尝试访问路径.大部分操作使用有效的 uid/gid, 因此运行环境可以在 suid/sgid 环境尝试. 实例: os.chdir() 方法用于改变 ...