Database1 - QLGQ/learning-python GitHub Wiki

PostgreSQL

Introduction

常用操作

  1. psql -h hostip -p port -U username -d dbname
    • -h:数据库IP
    • -U:用户名
    • -d:要连接的数据库名
    • -p:端口号
  2. 将查询结果导出到文件中
    • 写入文件命令:\o /home/longrise/
    • 执行query命令

执行的结果将自动写入到文件write.txt中,但是每一行第一个字符是空格;如果想再次打开屏幕输出,则再次使用命令\o。

常用命令

命令 命令含义
\h 查看SQL命令的解释,比方\h select
? 查看psql命令列表
\l 列出全部数据库
\c [database_name] 连接其他数据库
\d 列出当前数据库的全部表格
\d [table_name] 列出某一张表格的结构
\du 列出全部用户
\e 打开文本编辑器
\conninfo 列出当前数据库和连接的信息
\password username 改动数据库用户密码
\q 退出控制台

数据库备份&恢复

  1. 导出到线下文件:

    • pg_dump --host hostname --port port --username username -t tablename -d dbname >/home/longrise/table.sql
    • pg_dump -h hostip -p port -U postgres -d dbname -f /home/longrise/INSH_WEBSYSLEAP_20180504.backup
    • pg_dump -h hostip -p port -U postgres -d dbname > /home/longrise/INSH_WEBSYSLEAP_20180504.backup
  2. 把线下文件导入到数据库:

    • psql -h ip -p port -d postgres -U postgres -W postgres -f 2.sql
    • pg_restore -h hostip -p port -U postgres -d dbname -f /home/longrise/INSH_WEBSYSLEAP_20180504.backup
    • pg_restore -h hostip -p port -U postgres -d dbname < /home/longrise/INSH_WEBSYSLEAP_20180504.backup
  3. 参考文章:

恢复数据库时,若是在数据库服务器上恢复,则hostip写为本地ip,即写为127.0.0.1;恢复数据库之前先在数据库中创建要恢复的数据库(空库);恢复数据库时,如果数据库名称是大写的英文字母,则在恢复数据库时需要给数据库名称加双引号,否则还原到数据库中的数据库名称都为小写字母。

References

postgres主从流复制

概述

  1. postgres在9.0之后引入了主从的流复制机制,所谓流复制,就是从库通过tcp流从主库中同步相应的数据。postgres的主从看过一个视频,大概效率为3w多事务qps。postgres的主从主称之为primary,从称为stand_by。主从配置需要注意的一个是主从的postgres的版本,环境,等最好都需要一致,否则可能产生奇奇怪怪的问题。
  2. 双机热备是计算机应用系统稳定、可靠、有效、持续运行的重要保证。它通过系统冗余的方法解决计算机应用系统的可靠性问题。当一台主机出现故障的时候,及时启动另一台主机接替原主机任务,保证了用户数据的可靠性和系统的持续运行。
    双机系统逻辑图

操作步骤

  1. 启动主服务器的PostgreSQL数据库,并执行基础备份(需要先登录数据库,再执行select语句):select pg_start_backup('hot_backup');\q
  2. 在主服务器的/dbssd/pgdata目录下执行打包压缩命令:tar -zcvf 20180709-10.0.0.33-pg-9.4.tar.gz ./9.4
  3. 再次进入主服务器的PostgreSQL数据库,结束基础备份(需要先登录数据库,再执行select语句):select pg_stop_backup();\q
  4. 将基础备份拷贝到从服务器: scp -P 62222 20180709-10.0.0.33-pg-9.4.tar.gz [email protected]:/home/longrise/
  5. 将基础备份从/home/longrise目录下移动到/dbdata/pgdata目录下:cp /home/longrise/ 20180709-10.0.0.33-pg-9.4.tar.gz /dbdata/pgdata/
  6. 解压基础备份:tar -zxvf 20180709-10.0.0.33-pg-9.4.tar.gz
  7. 在从服务器上将之前的recovery.conf文件拷贝到PostgreSQL数据库安装目录下:cp recovery.conf ../9.4/(这里的recovery.conf,可能是之前的数据库下面的文件,也可能是新建的。)
  8. 修改recovery.conf文件权限:chown -R postgres:postgres recovery.conf
  9. 先后重启主从服务器:service postgres stop,service postgres start
  10. 在主从服务器上查看进程(执行命令: ps -ef|grep postgres),正常启动,主从服务器会分别出现wal sender进程和wal receiver进程。

References

为知笔记查看参考文档《Postgres数据库双机热备配置指南》的密码为:4418。

Redis

Introduction

  • Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
  • redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
  • Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

常用命令

  • 连接:/usr/local/redis/bin/redis-cli -h host -p port -a "password"
  • 密码验证:auth password
  • 关闭连接:quit

不加-h host -p port -a "password"时,默认连接到本地的redis服务上,可以通过执行PING命令来检测redis服务是否启动;加上之后可以在远程服务上执行命令。

References