Skip to content

Sky Stored Procedures

change_external_primary

Executes the CHANGE MASTER TO statement to configure inbound replication from an external primary server based on binary log file and position.

CALL sky.change_external_primary(
   host VARCHAR(255),
   port INT,
   logfile TEXT,
   logpos LONG ,
   use_ssl_encryption BOOLEAN
);
-- Run_this_grant_on_your_external_primary                                                                      |
GRANT REPLICATION SLAVE ON *.* TO 'skysql_replication'@'%' IDENTIFIED BY '<password_hash>';                  |

change_connect_retry

Sets the connection retry interval for the external replication master.

CALL change_connect_retry(connect_retry INT);

If the value is NULL, a default retry interval of 60 seconds will be used.

change_external_primary_gtid

Executes the CHANGE MASTER TO statement to configure inbound replication from an external primary server based on the provided GTID.

CALL sky.change_external_primary_gtid(
   host VARCHAR(255),
   port INT,
   gtid VARCHAR(60),
   use_ssl_encryption BOOLEAN
);
-- Run_this_grant_on_your_external_primary
GRANT REPLICATION SLAVE ON *.* TO 'skysql_replication'@'%' IDENTIFIED BY '<password_hash>';

change_heartbeat_period

Sets the heartbeat period for the external replication master.

CALL change_heartbeat_period(heartbeat_period DECIMAL(10,3));

If the value is NULL, a default heartbeat period of 5 seconds will be used.

change_replica_delay

Sets the replication delay for the external replication master.

CALL change_replica_delay(replica_delay INT);

If the value is NULL, a default delay of 1 second will be used.

change_use_ssl_encryption

Toggles the SSL encryption setting for the external replication master.

CALL change_use_ssl_encryption(use_ssl_encryption BOOLEAN);

If the value is NULL, SSL encryption will be enabled by default.

gtid_status

Provides a list of GTID-related system variables.

CALL sky.gtid_status();
+-------------------+---------------------------+
| Variable_name     | Value                     |
+-------------------+---------------------------+
| gtid_binlog_pos   | 435700-435700-122         |
| gtid_binlog_state | 435700-435700-122         |
| gtid_current_pos  | 0-100-1,435700-435700-122 |
| gtid_slave_pos    | 0-100-1                   |
+-------------------+---------------------------+

kill_session

Kills any non-root or non-SkySQL threads, similar to the KILL statement.

CALL sky.kill_session(IN thread BIGINT);

replication_grants

Provides a GRANT statement to run on an external primary server when configuring inbound replication.

CALL sky.replication_grants();
-- Run_this_grant_on_your_external_primary
GRANT REPLICATION SLAVE ON *.* TO 'skysql_replication'@'%' IDENTIFIED BY '<password_hash>';

replication_status

Executes the SHOW REPLICA STATUS statement to obtain the status of inbound replication.

CALL sky.replication_status()\G
  • *************************** 1. row ***************************
                    Slave_IO_State: Waiting for master to send event
                       Master_Host: mariadb1.example.com
                       Master_User: skysql_replication
                       Master_Port: 3306
                     Connect_Retry: 60
                   Master_Log_File: mariadb-bin.000001
               Read_Master_Log_Pos: 558
                    Relay_Log_File: mariadb-relay-bin.000002
                     Relay_Log_Pos: 674
             Relay_Master_Log_File: mariadb-bin.000001
                  Slave_IO_Running: Yes
                 Slave_SQL_Running: Yes
                   Replicate_Do_DB:
               Replicate_Ignore_DB:
                Replicate_Do_Table:
            Replicate_Ignore_Table:
           Replicate_Wild_Do_Table:
       Replicate_Wild_Ignore_Table:
                        Last_Errno: 0
                        Last_Error:
                      Skip_Counter: 0
               Exec_Master_Log_Pos: 558
                   Relay_Log_Space: 985
                   Until_Condition: None
                    Until_Log_File:
                     Until_Log_Pos: 0
                Master_SSL_Allowed: No
                Master_SSL_CA_File:
                Master_SSL_CA_Path:
                   Master_SSL_Cert:
                 Master_SSL_Cipher:
                    Master_SSL_Key:
             Seconds_Behind_Master: 0
     Master_SSL_Verify_Server_Cert: No
                     Last_IO_Errno: 0
                     Last_IO_Error:
                    Last_SQL_Errno: 0
                    Last_SQL_Error:
       Replicate_Ignore_Server_Ids:
                  Master_Server_Id: 100
                    Master_SSL_Crl:
                Master_SSL_Crlpath:
                        Using_Gtid: Slave_Pos
                       Gtid_IO_Pos: 0-100-1
           Replicate_Do_Domain_Ids:
       Replicate_Ignore_Domain_Ids:
                     Parallel_Mode: conservative
                         SQL_Delay: 0
               SQL_Remaining_Delay: NULL
           Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
                  Slave_DDL_Groups: 0
    Slave_Non_Transactional_Groups: 0
        Slave_Transactional_Groups: 0
    

reset_replication

Executes the RESET REPLICA statement to clear inbound replication configuration.

CALL sky.reset_replication();
+------------------------+
| Message                |
+------------------------+
| Replica has been reset |
+------------------------+

set_master_ssl

Toggles the MASTER_SSL replication option using the CHANGE MASTER TO statement.

CALL sky.set_master_ssl();

skip_repl_error

This stored procedure can be used to ignore a transaction that is causing a replication error.

Executes the STOP REPLICA statement, then sets the sql_slave_skip_counter system variable, and then executes the START REPLICA statement to skip a single transaction. Does not currently work with GTID.

CALL sky.skip_repl_error();

start_replication

Executes the START REPLICA statement to start inbound replication from an external primary.

CALL sky.start_replication();
+----------------------------------------+
| Message                                |
+----------------------------------------+
| External replication running normally. |
+----------------------------------------+

start_replication_until

Start the external replication until a specified relay log file and position. It checks if the replication threads are running and starts the replication if they are not. It also provides feedback on the replication status.

CALL start_replication_until(relay_log_file TEXT, relay_log_pos LONG);

start_replication_until_gtid

Starts the external replication until the specified GTID position. It checks if the replication threads are running and starts the replication if they are not. It also provides feedback on the replication status.

CALL start_replication_until_gtid(master_gtid_pos TEXT);

stop_replication

Executes the STOP REPLICA statement to stop inbound replication from an external primary.

CALL sky.stop_replication();
+---------------------------------+
| Message                         |
+---------------------------------+
| Replication is down or disabled |
+---------------------------------+