MySQL 8.0 : Replication2021/05/27 |
Configure MySQL Replication settings.
This configuration is general Primary/Replica settings. |
|
[1] | |
[2] |
On Primary Host, Configure SSL/TLS setting.
It's not requirements for Replication but some warnings is shown when configure replication setting because a user's password for replication is sent with plain text. |
[3] | On Primary Host, change settings and also create users for replication and clone. |
[root@www ~]#
vi /etc/my.cnf.d/mysql-server.cnf
[mysqld]
# add follows in [mysqld] section : get binary logs log-bin=mysql-bin # define server ID (uniq one) server-id=101 # enable clone plugin plugin-load=mysql_clone.so
[root@www ~]#
[root@www ~]# systemctl restart mysqld mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.21 Source distribution Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. 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> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye |
[4] | On Replica Host, change settings. |
[root@node01 ~]#
vi /etc/my.cnf.d/mysql-server.cnf
[mysqld]
# add follows in [mysqld] section : get binary logs log-bin=mysql-bin relay-log=node01-relay-bin relay-log-index=node01-relay-bin # define server ID (uniq one) server-id=102 # enable clone plugin plugin-load=mysql_clone.so # read only yes read_only=1 # define own hostname report-host=node01.srv.world
[root@node01 ~]#
[root@node01 ~]# systemctl restart mysqld mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.21 Source distribution Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. 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> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye |
[5] | On Replica Host, Run Clone job to copy data on Primary Host and Start replication. After starting replication, verify replication works normally to create test database or insert test data and so on. |
[root@node01 ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.21 Source distribution Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. 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 = (Master 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 (3.01 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 | 1057 | +------+-----------+----------------+----------------+------------------+-----------------+ 1 row in set (0.00 sec) # replication settings # master_host ⇒ Primary Host IP address # master_user ⇒ replication user # master_password ⇒ replication user's password # master_ssl ⇒ enable SSL connection # master_log_file ⇒ specify [BINLOG_FILE] value it is displayed above # master_log_pos ⇒ specify [BINLOG_POSITION] value it is displayed above mysql> change master to master_host='10.0.0.31', master_user='repl_user', master_password='password', master_ssl=1, master_log_file='mysql-bin.000001', master_log_pos=1057; Query OK, 0 rows affected (0.35 sec) # start replication mysql> start slave; Query OK, 0 rows affected, 1 warning (0.07 sec) # show status mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.0.0.31 Master_User: repl_user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 1057 Relay_Log_File: node01-relay-bin.000002 Relay_Log_Pos: 324 Relay_Master_Log_File: mysql-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: 1057 Relay_Log_Space: 534 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: Yes 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: 101 Master_UUID: 540b3263-bea7-11eb-88ed-525400166149 Master_Info_File: mysql.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0 Network_Namespace: 1 row in set (0.00 sec) |
Sponsored Link |