Home > Database > Mysql Tutorial > How to set up MySQL master-slave replication

How to set up MySQL master-slave replication

不言
Release: 2019-03-04 16:52:33
Original
2321 people have browsed it

This article introduces to you about setting up master-slave replication between MySQL servers. Let’s take a look at the specific content.

How to set up MySQL master-slave replication

Setting details:

Master server: 192.168.1.10

Slave server: 192.168.1.20

Database: mydb

1. Set up the MySQL main server

Create a server with REPLICATION SLAVE permissions on the main server mysql account, the replication client will connect to the master.

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.1.20' IDENTIFIED BY 'secretpassword';
mysql> FLUSH PRIVILEGES;
Copy after login

Have block write statements on all tables, so do not make changes after backup.

mysql> use mydb;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> exit;
Copy after login

Edit the mysql configuration file and add the following code under the [mysqld] section.

# vim /etc/my.cnf
Copy after login
Copy after login
[mysqld]
log-bin=mysql-bin
binlog-do-db=mydb
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
Copy after login

Restart the master mysql server for the changes to take effect.

# service mysqld restart
Copy after login

Use the following command to check the current binary log file name (File) and current offset (Position) value.

mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |      107 | mydb         |                  |
+------------------+----------+--------------+------------------+
Copy after login

The above output shows that the current binary file is using mysql-bin.000002 with an offset value of 107. Note these values ​​for use on the slave server.

Back up the database and copy it to slave mysql server.

# mysqldump -u root -p mydb > mydb.sql
# scp mydb.sql 192.168.1.20:/opt/
Copy after login

After completing the backup, remove the READ LOCK from the table so that changes can be made.

mysql> UNLOCK TABLES;
Copy after login

2. Set up MySQL Slave Server

Edit the salve mysql configuration file and add the following values ​​under the [mysqld] section.

# vim /etc/my.cnf
Copy after login
Copy after login
[mysqld]
server-id=2
replicate-do-db=mydb
Copy after login

server-id is always a non-zero value. These values ​​will never be similar to other masters and slaves.

Restart the mysql slave server. If you have configured replication, please use -skip-slave-start when starting. Do not connect to the master server immediately.

# /etc/init.d/mysqld restart
Copy after login

Use the following commands to set option values ​​on the slave server.

mysql>  CHANGE MASTER TO MASTER_HOST='192.168.1.10',
    -> MASTER_USER='repl_user',
    -> MASTER_PASSWORD='secretpassword',
    -> MASTER_LOG_FILE='mysql-bin.000002',
    -> MASTER_LOG_POS=107;
Copy after login

Finally start the slave thread

mysql> SLAVE START;
Copy after login

Check the status of the slave server.

mysql> show slave status G
Copy after login
*************************** 1. row ***************************
               Slave_IO_State:
                  Master_Host: 192.168.1.15
                  Master_User: repl_user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 107
               Relay_Log_File: mysqld-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: No
            Slave_SQL_Running: No
              Replicate_Do_DB: mydb
          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: 107
              Relay_Log_Space: 107
              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: NULL
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: 1
1 row in set (0.00 sec)
mysql>
Copy after login

MySQL master-slave replication has been successfully configured on your system and work mode.

The above is the detailed content of How to set up MySQL master-slave replication. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template