Creating the read-only replica

Important

The steps on this page assume you have logged into the master server as the Helix Core user with the access level of super. See Permission levels and access rights in the p4 protect topic of Helix Core Command-Line (P4) Reference. That user can have any name, but for convenience the examples use super:

p4 -u super login

  1. Create a checkpoint of the master 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 master server to the read-only replica. For example,

    On Linux, scp -r master:/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 master, 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 Helix Core (p4d) 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 master server using the location of the tickets file specified in the Master server setup for the read-only replica:

    p4 -u service -p master: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.
  11. $ p4d -r /p4/root -p replica1667 -d

  12. 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
  13. 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 master.

    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

Testing the replica