Home > Database > Mysql Tutorial > body text

Detailed explanation of Mysql master-slave synchronization configuration sample code

黄舟
Release: 2017-03-16 14:00:58
Original
1115 people have browsed it

This article mainly introduces the detailed explanationMysqlThe actual practice of master-slave synchronization. It analyzes the principle and implementation of Mysql master-slave synchronization with examples. It is of great practical value and friends in need can refer to it.

1. Introduction

I have written an article before: The principle of Mysql master-slave synchronization.

I believe that children’s shoes who have read this article are eager to give it a try, right?

Today we will have a practical mysql master-slave synchronization!

2. Environment description

os:ubuntu16.04

mysql:5.7.17

The following practical exercises are based on the above environment. Of course, other environments are much the same.

3. Enter actual combat

Tools

2 machines:

master IP: 192.168. 33.22

slave IP:192.168.33.33

Operation on the master machine

1. ChangeConfiguration file

We found the file /etc/mysql/mysql.conf.d/mysqld.cnf.

The configuration is as follows:


bind-address = 192.168.33.22 #your master ip
server-id = 1 #在master-slave架构中,每台机器节点都需要有唯一的server-id
log_bin = /var/log/mysql/mysql-bin.log #开启binlog
Copy after login

2. Restart mysql to make the configuration file take effect.


sudo systemctl restart mysql
Copy after login
Copy after login

3. Create a mysql user for master-slave synchronization.


$ mysql -u root -p
Password:

##创建slave1用户,并指定该用户只能在主机192.168.33.33上登录。
mysql> CREATE USER 'slave1'@'192.168.33.33' IDENTIFIED BY 'slavepass';
Query OK, 0 rows affected (0.00 sec)

##为slave1赋予REPLICATION SLAVE权限。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'192.168.33.33';
Query OK, 0 rows affected (0.00 sec)
Copy after login

4. Add a read lock to MYSQL

In order to keep the data of the main database and the slave database consistent, we first add a read lock to mysql to make it Become read-only.


mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
Copy after login

5. Record the location of the MASTER REPLICATION LOG

This information will be used later.


mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File    | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |  613 |    |     |     |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
Copy after login

6. Export the existing data information in the master DB


$ mysqldump -u root -p --all-databases --master-data > dbdump.sql
Copy after login

7. Contact the master DB Read lock


mysql> UNLOCK TABLES;
Copy after login

8. copy the dbdump.sql file in step 6 to slave


scp dbdump.sql ubuntu@192.168.33.33:/home/ubuntu
Copy after login

Operations on the slave machine

1. Change the configuration file

We found the file/etc/mysql/mysql.conf. d/mysqld.cnf.

Change the configuration as follows:


bind-address = 192.168.33.33 #your slave ip
server-id = 2 #master-slave结构中,唯一的server-id
log_bin = /var/log/mysql/mysql-bin.log #开启binlog
Copy after login

2. Restart mysql to make the configuration file take effect


sudo systemctl restart mysql
Copy after login
Copy after login

3. Import from master DB. The exported dbdump.sql file to make the master-slave data consistent


$ mysql -u root -p < /home/ubuntu/dbdump.sql
Copy after login

4. Make the slave establish a connection with the master to synchronize


$ mysql -u root -p
Password:

mysql> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CHANGE MASTER TO
 -> MASTER_HOST=&#39;192.168.33.22&#39;,
 -> MASTER_USER=&#39;slave1&#39;,
 -> MASTER_PASSWORD=&#39;slavepass&#39;,
 -> MASTER_LOG_FILE=&#39;mysql-bin.000001&#39;,
 -> MASTER_LOG_POS=613;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
Copy after login

The values ​​of MASTER_LOG_FILE='mysql-bin.000001' and MASTER_LOG_POS=613 are obtained from the above SHOW MASTER STATUS.

After setting like this, master-slave synchronization can be performed~

The above is the detailed content of Detailed explanation of Mysql master-slave synchronization configuration sample code. 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