Helix Core is now P4. Product user interfaces will be updated soon. Learn more >>

P4 Server Administration Documentation | 2025.2

# Create the read-only replica

The steps on this page assume you have logged into the target server The immediately upstream server for replica servers, edge servers, standby servers, proxies and brokers. See also 'upstream server' and 'central server'. as the P4 user with the access level of `super`. See Permission levels and access rights in the `p4 protect` topic of P4 CLI Reference. That user can have any name, but for convenience the examples use `super`:

1. Create a checkpoint of the target server.

   p4 -u super admin checkpoint or p4d -jc

   For more information, see Backup and recovery concepts and Checkpoint files.

2. Copy the checkpoint to the machine that the read-only replica will run on.

3. Restore from that checkpoint on the machine that the read-only replica will run on:

   `p4d -r /p4/root -jr checkpoint_file`

4. Copy the versioned files from the target server to the read-only replica. For example, if the target server is named london:

   On Linux, scp -r london:/p4/depot/ replica:/p4/depot/

   On Windows, ensure that the C: drive is shared appropriately on the replica, then run:

   xcopy /E /I C:\p4\depot \\replica\C$\p4\depot

   Versioned files include both text (in RCS format, ending with `,v`) and binary files (directories of individual binary files, each directory ending with `,d`). Ensure that you copy the text files in a manner that correctly translates line endings for the read-only replica's filesystem.

   If your depots are specified using absolute paths on the target server, use the same paths on the read-only replica. (Or use relative paths in the `Map` field for each depot, so that versioned files are stored relative to the server’s root.)

5. Start the P4 server on the replica machine using the P4PORT value of replica:1667 and both the -n and -d options:

   $ p4d -r /p4/root -p replica1667 -n -d

   The -n option is necessary until we set the serverid to correspond to a type of server that does not need a license.

6. Set the serverid for the read-only replica:

   $ p4 -u super -p replica:1667 serverid readonly-1667

7. Confirm that the serverid is correctly set.

   $ p4 -u super -p replica:1667 serverid

   The output should be:

   Server ID: readonly-1667

8. Log in as the service user to the target server using the location of the tickets file specified in the Target server setup for the read-only replica:

   `p4 -u service -p london:1666 -E P4TICKETS=/p4/.p4tickets login`

9. On the read-only replica, stop the server:

   $ p4 -u super -p replica:1667 admin stop

10. Restart the server on the read-only replica.

$ p4d -r /p4/root -p replica1667 -d

11. Confirm that the `p4 pull` commands specified in the `readonly-1667` `startup.N` configurations are running:

    $ p4 -u super -p replica:1667 monitor show -a

    The output should be similar to this:

        2976020 B service    00:00:36 pull sleeping 1000 ms
        2976021 B service    00:00:36 pull sleeping 1000 ms
        2976022 B service    00:00:36 pull sleeping 1000 ms
        2976041 R super      00:00:00 monitor show -a

12. Confirm that the read-only replica is replicating.

    $ p4 -u super -p replica:1667 pull -l -j

    The output should be in this format, with the replica sequence matching (or being close to) that of the target server.

        Current replica journal state is:    Journal 511,    Sequence 29233313
        Current master journal state is:    Journal 511,    Sequence 29233313.
        The  statefile was last modified at:    2023/10/22 15:19:55.
        The replica server time is currently:    2023/10/22 15:19:59 +0100 BST

## Next step

Test the replica

Your search for returned results