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

How to set up MySQL master-slave replication

不言
不言Original
2019-03-04 16:52:332256browse

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;

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;

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

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

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

# service mysqld restart

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         |                  |
+------------------+----------+--------------+------------------+

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/

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

mysql> UNLOCK TABLES;

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
[mysqld]
server-id=2
replicate-do-db=mydb

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

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;

Finally start the slave thread

mysql> SLAVE START;

Check the status of the slave server.

mysql> show slave status G
*************************** 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>

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!

Statement:
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