• Daniel Black's avatar
    MDEV-5536: add systemd socket activation · 460d480c
    Daniel Black authored
    Systemd has a socket activation feature where a mariadb.socket
    definition defines the sockets to listen to, and passes those
    file descriptors directly to mariadbd to use when a connection
    occurs.
    
    The new functionality is utilized when starting as follows:
    
      systemctl start mariadb.socket
    
    The mariadb.socket definition only needs to contain the network
    information, ListenStream= directives, the mariadb.service
    definition is still used for service instigation.
    
    When mariadbd is started in this way, the socket, port, bind-address
    backlog are all assumed to be self contained in the mariadb.socket
    definition and as such the mariadb settings and command line
    arguments of these network settings are ignored.
    See man systemd.socket for how to limit this to specific ports.
    
    Extra ports, those specified with extra_port in socket activation
    mode, are those with a FileDescriptorName=extra. These need
    to be in a separate service name like mariadb-extra.socket and
    these require a Service={mariadb.service} directive to map to the
    original service. Extra ports need systemd v227 or greater
    (not RHEL/Centos7 - v219) when FileDescriptorName= was added,
    otherwise the extra ports are treated like ordinary ports.
    
    The number of sockets isn't limited when using systemd socket activation
    (except by operating system limits on file descriptors and a minimal
    amount of memory used per file descriptor). The systemd sockets passed
    can include any ownership or permissions, including those the
    mariadbd process wouldn't normally have the permission to create.
    
    This implementation is compatible with mariadb.service definitions.
    Those services started with:
    
      systemctl start mariadb.service
    
    does actually start the mariadb.service and used all the my.cnf
    settings of sockets and ports like it previously did.
    460d480c
CMakeLists.txt 9.64 KB