小编Car*_*eur的帖子

备份/恢复dockerized PostgreSQL数据库

我正在尝试备份/恢复PostgreSQL数据库,如Docker网站上所述,但数据未恢复.

数据库映像使用的卷是:

VOLUME  ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]
Run Code Online (Sandbox Code Playgroud)

而且CMD是:

CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"]
Run Code Online (Sandbox Code Playgroud)

我用这个命令创建数据库容器:

docker run -it --name "$DB_CONTAINER_NAME" -d "$DB_IMAGE_NAME"
Run Code Online (Sandbox Code Playgroud)

然后我连接另一个容器来手动插入一些数据:

docker run -it --rm --link "$DB_CONTAINER_NAME":db "$DB_IMAGE_NAME" sh -c 'exec bash'
psql -d test -h $DB_PORT_5432_TCP_ADDR
# insert some data in the db
<CTRL-D>
<CTRL-D>
Run Code Online (Sandbox Code Playgroud)

然后创建tar存档:

$ sudo docker run --volumes-from "$DB_CONTAINER_NAME" --rm -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /etc/postgresql /var/log/postgresql /var/lib/postgresql
Run Code Online (Sandbox Code Playgroud)

现在我删除用于db的容器并创建另一个具有相同名称的容器,并尝试恢复之前插入的数据:

$ sudo docker run --volumes-from "$DB_CONTAINER_NAME" --rm -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar 
Run Code Online (Sandbox Code Playgroud)

但表是空的,为什么数据没有正确恢复?

database postgresql backup docker

112
推荐指数
8
解决办法
8万
查看次数

Docker:如何使用ssh访问私有github仓库?

我正在尝试使用Docker克隆来自github的私人仓库.问题是我需要使用ssh来访问该repo.我在我的github项目设置中添加了一个密钥,我想,它用于识别docker的服务器.

我的问题是我无法弄清楚我应该在Dockerfile中写什么,以便服务器在尝试访问我的github仓库时使用该密钥.我看到了将id_rsa添加到容器中的示例,但我不知道id_rsa存储在其服务器上的位置(如果存在)

RUN mkdir /root/.ssh/
# can't find the file id_rsa
ADD id_rsa /root/.ssh/id_rsa 
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts

run git clone git@github.com:user/repo.git
Run Code Online (Sandbox Code Playgroud)

如何从docker的服务器访问我的私人仓库?

git ssh private github docker

5
推荐指数
2
解决办法
7053
查看次数

降价到 Html

我想让用户用markdown编辑文章,然后将其转换为HTML进行显示。我使用 pagedown 来做到这一点。但我希望用户能够稍后编辑他们的文章,这意味着在将 Markdown 代码转换为 HTML 后向他们发送,我不知道最好的方法是什么。我心里有这些想法:

  • 使用toMarkdown将HTML转换为markdown,但效果不太好
  • 仅存储 Markdown 代码,这意味着数据库可能包含有害代码并需要用户清理内容,这在仅在我的网站上使用时没问题,但如果有人想要访问它并忘记清理其中的内容怎么办他的申请
  • 存储 Markdown 和 HTML,在服务器端转换 Markdown 并清理 HTML,当用户想要编辑文章时我们发送 Markdown 代码,当他想要查看文章时我们发送 HTML。问题是数据库将不得不存储更多的数据
  • 更好的主意?

stackoverflow 就是一个很好的例子,但我不知道他们使用的方法。

html markdown

3
推荐指数
1
解决办法
5766
查看次数

5 亿行的 Postgresql 顺序扫描性能下降

我正在尝试使用 Postgresql 11 选择包含约 5 亿行的表的所有行。

这在具有 32 个 CPU 内核和 256GB RAM 和一个 SSD 上花费了大约 15 分钟,读/写速度高达大约 200MB/s,这比我看到人们在其中选择一百万行时的预期要高得多~1s ( https://dba.stackexchange.com/questions/188407/effectively-handle-10-100-millions-row-table-of-unrelated-data ),尽管它们不对行进行排序。

此表上的查询主要包括对表的SELECT80% 到 100%的操作,以及对日期时间的过滤器,其中行按日期时间排序。

以下是该表的说明:

postgres=# \d+ ohlcv;
                                              Table "public.ohlcv"
  Column  |            Type             | Collation | Nullable | Default | Storage | Stats target | Description
----------+-----------------------------+-----------+----------+---------+---------+--------------+-------------
 datetime | timestamp without time zone |           | not null |         | plain   |              |
 open     | real                        |           | not null |         | plain   |              |
 high     | real …
Run Code Online (Sandbox Code Playgroud)

sql postgresql performance

3
推荐指数
1
解决办法
4958
查看次数

keydown 在 keyup 之前触发多次

我有一个使用快捷方式的 angular.js web 应用程序。当我按下任意键时,我会收到 N 个 keydown 事件,然后是 N 个 keyup 事件,其中 N 介于 2 和 5 之间,而我希望它只触发一次。这是我用来捕获键盘事件的代码:

// Controller.js
var allowed = true;
$document.bind('keyup', function (event) {
  console.log('keyup');
  allowed = true;
});
$document.bind('keydown', function (event) {
  if (allowed) {
    allowed = false;
    var key = event.which || event.keyCode || event.charCode;
    console.log('key down: ' + key);
    if (key === 32) { // Space bar
      $scope.showAll();
      event.stopPropagation();
    }
    else if ($scope.visible.answerButtons === true) {
      if (key === 37) { // Left …
Run Code Online (Sandbox Code Playgroud)

javascript jquery events keydown angularjs

2
推荐指数
1
解决办法
5346
查看次数