MySQL 8.4 : Replication2025/01/31 |
Configure MySQL Replication settings. This configuration is general Primary-Replica settings. |
|
[1] |
On all Hosts, Install and Start MySQL Server, refer to here. |
[2] |
On Replication connection, it uses self signed certificates that mysqld generated by default like here on this example, however, warning messages are logged for it, so if you care those warnings, use valid certificate like from Let's encrypt and others. |
[3] | On Primary Host, change settings and also create users for replication and clone. |
[root@www ~]#
vi /etc/my.cnf.d/mysql-server.cnf # add in [mysqld] section [mysqld] ..... ..... bind-address=0.0.0.0 log_bin=/var/log/mysql/mysql-bin.log plugin-load=mysql_clone.so # specify unique ID server-id=101
[root@www ~]#
[root@www ~]# systemctl restart mysqld mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.4.2 Source distribution Copyright (c) 2000, 2024, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. # create replication user (set any password for [password] section) mysql> create user 'repl_user'@'%' identified by 'password'; Query OK, 0 rows affected (0.10 sec) mysql> grant replication slave on *.* to repl_user@'%'; Query OK, 0 rows affected (0.05 sec) # create clone user (set any password for [password] section) mysql> create user 'clone_user'@'%' identified by 'password'; Query OK, 0 rows affected (0.07 sec) mysql> grant backup_admin on *.* to 'clone_user'@'%'; Query OK, 0 rows affected (0.06 sec) mysql> exit Bye |
[4] | On Replica Host, change settings for replication. |
[root@node01 ~]#
vi /etc/my.cnf.d/mysql-server.cnf # add in [mysqld] section [mysqld] ..... ..... bind-address=0.0.0.0 log_bin=/var/log/mysql/mysql-bin.log plugin-load=mysql_clone.so # specify unique ID server-id=102 # specify hostname report-host=node01.srv.world # specify relay logs relay-log=/var/log/mysql/node01-relay-bin relay-log-index=/var/log/mysql/node01-relay-bin read_only=1
[root@node01 ~]#
[root@node01 ~]# systemctl restart mysqld mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.4.2 Source distribution Copyright (c) 2000, 2024, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. # create clone user (set any password for [password] section) mysql> create user 'clone_user'@'%' identified by 'password'; Query OK, 0 rows affected (0.07 sec) mysql> grant clone_admin on *.* to 'clone_user'@'%'; Query OK, 0 rows affected (0.06 sec) mysql> exit Bye |
[5] | On Replica Host, Run Clone job to copy data on Primary Host and Start replication. After starting replication, make sure replication works normally to create test database or insert test data and so on. |
[root@node01 ~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.4.2 Source distribution Copyright (c) 2000, 2024, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. # [set global clone_valid_donor_list = (Primary Host IP address:port)] mysql> set global clone_valid_donor_list = '10.0.0.31:3306'; Query OK, 0 rows affected (0.00 sec) # start Clone mysql> clone instance from clone_user@10.0.0.31:3306 identified by 'password'; Query OK, 0 rows affected (0.60 sec) # confirm clone status # Ok if status is [Completed] mysql> select ID,STATE,SOURCE,DESTINATION,BINLOG_FILE,BINLOG_POSITION from performance_schema.clone_status; +------+-----------+----------------+----------------+------------------+-----------------+ | ID | STATE | SOURCE | DESTINATION | BINLOG_FILE | BINLOG_POSITION | +------+-----------+----------------+----------------+------------------+-----------------+ | 1 | Completed | 10.0.0.31:3306 | LOCAL INSTANCE | mysql-bin.000001 | 921 | +------+-----------+----------------+----------------+------------------+-----------------+ 1 row in set (0.00 sec) # replication settings # source_host ⇒ Primary Host IP address # source_user ⇒ replication user # source_password ⇒ replication user's password # source_ssl ⇒ enable SSL connection # source_log_file ⇒ specify [BINLOG_FILE] value it is displayed above # source_log_pos ⇒ specify [BINLOG_POSITION] value it is displayed above mysql> change replication source to source_host='10.0.0.31', source_user='repl_user', source_password='password', source_ssl=1, source_log_file='mysql-bin.000001', source_log_pos=921; Query OK, 0 rows affected, 2 warnings (0.04 sec) # start replication mysql> start replica; Query OK, 0 rows affected (0.02 sec) # show status mysql> show replica status\G *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: 10.0.0.31 Source_User: repl_user Source_Port: 3306 Connect_Retry: 60 Source_Log_File: mysql-bin.000001 Read_Source_Log_Pos: 921 Relay_Log_File: node01-relay-bin.000002 Relay_Log_Pos: 328 Relay_Source_Log_File: mysql-bin.000001 Replica_IO_Running: Yes Replica_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_Source_Log_Pos: 921 Relay_Log_Space: 540 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Source_SSL_Allowed: Yes Source_SSL_CA_File: Source_SSL_CA_Path: Source_SSL_Cert: Source_SSL_Cipher: Source_SSL_Key: Seconds_Behind_Source: 0 Source_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Source_Server_Id: 101 Source_UUID: 0e83c290-df74-11ef-8b37-525400ec51ad Source_Info_File: mysql.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Replica_SQL_Running_State: Replica has read all relay log; waiting for more updates Source_Retry_Count: 10 Source_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Source_SSL_Crl: Source_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Source_TLS_Version: Source_public_key_path: Get_Source_public_key: 0 Network_Namespace: 1 row in set (0.00 sec) |
Sponsored Link |
|