概要

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 数据库备份恢复以及时区问题的更多相关文章

  1. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  2. MySQL用户管理、常用sql语句、MySQL数据库备份恢复

    1.MySQL用户管理 给远程登陆用户授权:grant all on *.* to 'user1'@'127.0.0.1' identified by '123456' (这里的127.0.0.1是指 ...

  3. Linux centosVMware mysql用户管理、常用sql语句、mysql数据库备份恢复

    一.mysql用户管理 grant all on *.* to 'user1'@‘127.0.0.1’ identified by 'mimA123'; 创建user1用户 使用user1登录 /us ...

  4. mysql数据库备份/恢复

    备份数据库(进入Mysql bin目录下/C:\Program Files\MySQL\MySQL Server 5.6\bin)本地安装mysql数据库 备份表结构及数据 mysqldump -hl ...

  5. 最常用MySql数据库备份恢复

    1.数据备份类型: ·完全备份:故名思议备份整个数据库 ·部分备份:备份一部分数据集 : ·增量备份:自上次备份以来的改变数据的备份: ·差异备份:自上次完全备份后改变数据的备份: 2.数据备份的方式 ...

  6. mysql用户管理 常用sql语句 mysql数据库备份恢复

     

  7. JSP 实现 之 调用java方法实现MySQL数据库备份和恢复

    package cn.qm.db; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOEx ...

  8. mysql 从陌生到熟练之----数据库备份恢复的实现方法

    mysql 从陌生到熟练之----数据库备份恢复的实现方法 MySQL数据库使用命令行备份|MySQL数据库备份命令 例如: 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:roo ...

  9. mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库

    简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠 ...

随机推荐

  1. C# 获取当前月的月初和月末

    /// <summary> /// 获取当前月的月末日期 /// </summary> /// <returns></returns> public s ...

  2. linux定时删除过期文件

    需求说明 每日凌晨0点定时删除/temp目录下的所有一个月未被访问的文件. 脚本实现 linux 终端输入crontab -e,添加定时任务脚本命令 [root@localhost ~]# cront ...

  3. PowerJob 应对庞大任务的锦囊妙计:MapReduce

    本文适合有 Java 基础知识的人群 作者:HelloGitHub-Salieri HelloGitHub 推出的<讲解开源项目>系列.讲解 PowerJob 系列即将接近尾声,本系列的干 ...

  4. [06] 优化C#服务器的思路和工具的使用

    优化C#服务器的思路和工具的使用 优化服务器之前, 需要先对问题的规模做合理的预估, 然后对关键的数据做采样, 做对比, 看和自己的预估是否一致, 误差大在什么地方, 是预估的不对, 还是系统实现有问 ...

  5. MySQL页分裂和页合并

    预备知识了解,索引页,数据页,b+tree 页是innoDB中管理储存空间的基本单位,页有很多中,存放数据的叫做索引页.

  6. 深入浅出Calcite与SQL CBO(Cost-Based Optimizer)优化

    目录 Calcite简介与CBO介绍 Calcite背景与介绍 SQL优化与CBO Calcite优化器 HepPlanner优化器与VolcanoPlanner优化器 Calcite优化样例代码介绍 ...

  7. windows操作系统的电脑越用越卡?简说几种原因和解决方法。

    很多人在使用windows操作系统的发现电脑越用越卡,但是不知道什么原因,只知道电脑越便宜的越卡(电脑配置低), 然而导致电脑卡顿缓慢的原因有很多,总结出来就是软件和硬件的问题,那怎么办呢? 电脑系统 ...

  8. RXJAVA之概述

    RXjava是一个异步和基于事件的程序库.RXjava的核心理念是编程风格的的变化,从传统的命令式程序改变到函数响应式编程. RXjava的基本概念: Observable:发射源,即对象产生的地方. ...

  9. 2.BlockingQueue-阻塞式队列

  10. 关于bat中日期时间字符串的格式化

    在其他编程语言中,要实现日期时间字符串的格式化,包括时间计算,都是比较简单的 但在bat或者说cmd.dos中要实现这些功能.还是有一定难度的 首先,windows的cmd中可以使用%date%表示日 ...