Postgresql: LOG: autovacuum launcher started is hung (apparently) - postgresql

I am working on this Heroku tutorial and I have a question about autovacuum process. There is still no tables or data and autovacuum launcher is hung for over half an hour now. Below is the cmd window.
I found a similar question here but could not find the answer. Does anyone know what is going on?
As a summary: After the last line LOG: autovacuum launcher started the cursor is blinking under the last line but nothing is happenning for over half an hour.
C:\Users\a>initdb pg
The files belonging to this database system will be owned by user "a".
This user must also own the server process.
The database cluster will be initialized with locale "English_United States.1252
".
The default database encoding has accordingly been set to "WIN1252".
The default text search configuration will be set to "english".
Data page checksums are disabled.
initdb: directory "pg" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "pg" or run initdb
with an argument other than "pg".
C:\Users\a>postgres -D pg &
LOG: database system was interrupted; last known up at 2013-10-05 13:46:39 EDT
LOG: database system was not properly shut down; automatic recovery in progress
LOG: record with zero length at 0/17704F8
LOG: redo is not required
LOG: database system is ready to accept connections
LOG: autovacuum launcher started
EDIT
As suggested in bma's comments, I removed the pg directory and the project directory and I did the same steps again and I got the same result: LOG: autovacuum launcher started and it hangs. What am I going wrong?
EDIT
I opened a new command window and started the repl there and I was able to execute
C:\Users\a\CLOJURE\shouter>lein repl
user=> (require '[clojure.java.jdbc :as sql])
nil
But the next command gave the following error:
user=> (sql/with-connection (System/getenv "DATABASE_URL")
#_=> (sql/create-table :testing [:data :text]))
user=> IllegalArgumentException db-spec null is missing a required parameter cl
ojure.java.jdbc/get-connection (jdbc.clj:192)
How can I fix this?
EDIT
It turned out that 'export' is for unix and in Windows I needed to use 'set'. See this related question.

What is happening is that you are starting postgres directly, with the pg directory, and seeing log output. It would be better to install it as a service on Windows, and use the default data directory. This is what the normal installer does.
However your current approach is going to just run the db until you close the terminal window at which point it will die (hence the recovery at the beginning). You don't have hung processes. That's just log output.

Related

Get databases from old PostgreSQL folder (win 10)

I need to get databases from the old PostgreSQL folder that was in Program Files (win 10).
I tried changing the data path through the registry (ImagePath
value after "-D" at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\postgresql-x64-12) from the current to the old PostgreSQL data folder.
I also tried replacing files in the current folder from PostgreSQL with old ones (replaced data for C:\Program Files\PostgreSQL\12\data\base and C:\Program Files\PostgreSQL\12\data\global).
In both cases, an error occurred when trying to start the postgresql-x64-12 service. Error message: the postgresql-x64-12 service on local computer started and then stopped. Some services stop automatically if they are not in use by other services or programs.
How can I get databases from old ../Program Files/PostgreSQL folder?
After replacing the folders C:\Program Files\PostgreSQL\12\data\base and C:\Program Files\PostgreSQL\12\data\global with the old ones and attempts to start the postgresql-x64-12 service, a log file appeared with the following content:
LOG: database system was shut down at ...
LOG: invalid primary checkpoint record
PANIC: could not locate a valid checkpoint record
LOG: startup process (PID 17452) was terminated by exception 0xC0000409
HINT: See C include file "ntstatus.h" for a description of the hexadecimal value.
LOG: aborting startup due to startup process failure
LOG: database system is shut down
Because of the message PANIC: could not locate a valid checkpoint record, I used pg_resetwal: in PowerShell I opened the folder C:\Program Files\PostgreSQL\12\bin, then ran the command .\pg_resetwal.exe -f -D "C:\Program Files\PostgreSQL\12\data. In some cases, it is worth using the command without -f, also for other versions of Postgres a different command may be needed. More information: https://stackoverflow.com/a/8812934/14145682.
After that, the service also did not start, and the following error was present in the log:
FATAL: could not access status of transaction
DETAIL: Could not read from file "pg_multixact/members/0000" at offset 8192: read too few bytes.
So, I replaced the files in the C:\Program Files\PostgreSQL\12\data\pg_multixact folder with the old ones.
After these steps, the postgresql-x64-12 service started without errors and it was possible to restore the old database.

Postgresql fatal the database system is starting up - windows 10

I have installed postgresql on windows 10 on usb disk.
Every day when i start my pc in work from sleep and plug in the disk again then trying to start postgresql i get this error:
FATAL: the database system is starting up
The service starts with following command:
E:\PostgresSql\pg96\pgservice.exe "//RS//PostgreSQL 9.6 Server"
It is the default one.
logs from E:\PostgresSql\data\logs\pg96
2019-02-28 10:30:36 CET [21788]: [1-1] user=postgres,db=postgres,app=[unknown],client=::1 FATAL: the database system is starting up
2019-02-28 10:31:08 CET [9796]: [1-1] user=postgres,db=postgres,app=[unknown],client=::1 FATAL: the database system is starting up
I want this start up to happen faster.
When you commit data to a Postgres database, the only thing which is immediately saved to disk is the write-ahead log. The actual table changes are only applied to the in-memory buffers, and won't be permanently saved to disk until the next checkpoint.
If the server is stopped abruptly, or if it suddenly loses access to the file system, then everything in memory is lost, and the next time you start it up, it needs to resort to replaying the log in order to get the tables back to the correct state (which can take quite a while, depending on how much has happened since the last checkpoint). And until it's finished, any attempt to use the server will result in FATAL: the database system is starting up.
If you make sure you shut the server down cleanly before unplugging the disk - giving it a chance to set a checkpoint and flush all of its buffers - then it should be able to start up again more or less immediately.

Changing postgresql 9.3 database location on Amazon ec2 linux

I apologize for the long post. I have a Postgresql 9.3 server running on a Amazon linux AMI. I also have a compressed dump file from another server which I created using pg_dumpall. Now, I want to restore the data from this dump file in my Postgres. However, I want to load this data into a specific location (say /data).
I'm having a fresh installation of Postgres. So when I tried to do a:
sudo service postgresql93 start
I got an error message asking me to initialize the db. So I did a:
sudo service postgresql initdb
which created the required files in /var/lib/pgsql93/data. After that, I changed the 'data_directory' configuration in /var/lib/pgsql93/data/postgresql.conf and pointed it to /data (I had to do this as root user. I couldn't open the file as the default user).
Now when I try to do a
sudo service postgresql93 start
it fails to start, and when I check the /var/lib/pgsql93/pg_startup.log file, it says:
FATAL: "/data/postgresql" is not a valid data directory
DETAIL: File "/data/postgresql/PG_VERSION" is missing.
So I copied the files from the default (/var/lib/pgsql9.3/data) to /data, changed the permissions to 700 and owner to postgres.
However, when I try to start the service again, it still fails, and in the pgstartup.log, it only says:
LOG: redirecting log output to logging collector process
HINT: Future log output will appear in directory "pg_log".
And when I check the log in /data/pg_log, it says:
LOG: database system was shut down at 2014-12-30 21:31:18 UTC
LOG: database system is ready to accept connections
LOG: autovacuum launcher started
What else could be the problem? I haven't restored the data yet. I just have the files which were created by the initdb command.
#BMW http://www.linuxquestions.org/questions/linux-server-73/change-postgresql-data-directory-649911/ is exactly what I was looking for. Thanks.

Autovacuum is not running on Openshift Online Postgres cartridge

I have Postgres 9.2 on my Openshift Online cartridge. Using Pgadmin3, I have enabled (by ticking the box) the autovuum setting for postgresql.conf. However, the autovacuum does not seem to be running.
Here is what I have:
ps -ef | grep -i vacuum
No autovacuum process is shown.
Using psql console, show autovacuum, says that its value is ON
Using psql console, SELECT schemaname, relname, last_vacuum, last_autovacuum from FROM pg_stat_user_tables; gives no value in last_vacuum and last_autovacuum column even though I did a manual Vacuum via Maintenance function using pgadmin3.
The properties tab on the db in pgAdminIII says AUTOVACUUM value of 'not running'
What do I miss?
EDIT
I also cannot access the postgresql.conf on Openshift Online when trying to find the file on the server - hoping to manually edit the file instead of using pgAdminIII.
-- Found this https://www.openshift.com/forums/openshift/how-do-i-set-maxpreparedtransactions-on-my-postgresql-cartridge I am now able to view/edit my postgresql.conf. Apparently the autovacuum is on already so the conf has the right setting.
When issue pg_ctl restart -m fast I got
LOG: could not bind socket for statistics collector: Permission denied
LOG: trying another address for the statistics collector
LOG: could not bind socket for statistics collector: Permission denied
LOG: trying another address for the statistics collector
LOG: could not bind socket for statistics collector: Cannot assign requested address LOG: trying another address for the statistics collector
LOG: could not bind socket for statistics collector: Cannot assign requested address LOG: disabling statistics collector for lack of working socket
WARNING: autovacuum not started because of misconfiguration
HINT: Enable the "track_counts" option.
LOG: database system was shut down at 2014-04-22 09:58:19 GMT
LOG: database system is ready to accept connections
Though track_counts is already set to on in postgresql.conf
Sorry for being so stupid but any help or pointers are much appreciated.
Thank you in advance.
i ran into a similar issue and found a helpful hint in this discussion:
... for some insane reason, openshit disabled localhost, and autovacuum only connects to localhost, I suppose it makes sense that they wouldn't want to be trying to vacuum a remote db... but openshit breaks autovacuum.
one solution i've found (and that i'll probably use) is to manually add a cronjob that does a forced vacuum. here is a batch-script that looks promising but be careful with the side-effects that a forced vacuum might involve (depending on you app of course).
Patching postgres to use the OPENSHIFT_PG_HOST environment variable instead of localhost seems to solve the problem: pgstat.patch.

Issue with PostgreSQL installation

I have started learning RoR, now i am trying to install PostgreSQL for performing backend operation with the database.
I have two machines where i installed Postgresql, it runs well in one machine. In another machine i uninstalled the PostgreSQL and re installed it. After re installing i could not able to start the PostgreSQL service.
Below is the error log that i see in PostgreSQL log file
2011-12-02 04:40:53 PST LOG: incomplete startup packet
2011-12-02 04:40:53 PST LOG: database system was not properly shut down; automatic recovery in progress
2011-12-02 04:40:54 PST LOG: consistent recovery state reached at 0/15F44E0
2011-12-02 04:40:54 PST LOG: record with zero length at 0/15F44E0
2011-12-02 04:40:54 PST LOG: redo is not required
2011-12-02 04:40:54 PST LOG: database system is ready to accept connections
2011-12-02 04:40:54 PST LOG: autovacuum launcher started
2011-12-02 04:40:54 PST LOG: could not receive data from client: An operation was attempted on something that is not a socket.
I have been trying several ways to solve this, but no use on all the steps. Could any one please give me a hand on this?
I am installing PostgreSQL Version 9.0.5 in Windows 7 machine (64 bit)
Am I correct in saying that you once had a working installation of Postgres on the same machine? But you uninstalled it and are now trying to install it on the same machine again?
I was in a similar situation once but it had to do with the service account the installer creates. Did you create a new service account for postgres, or are you trying to re-use the old one? If so, are you sure you are using the right password for the account?
Another hunch I got; the port on which the new Postgres server is listening, is it really free? It appears to me that it cannot open the listening port specified in postgresql.conf.
Or, yet another hunch; if I read the log correct I get the feeling that you are re-using the old data directory. Is this true? And if so, what was the version of the previous Postgres installation?
Sorry I don't have answer, but I do have questions that might lead you to a solution.