Master-slave synchronous replication configuration of MySQL database under Linux

Master-slave synchronous replication configuration of MySQL database under Linux

The advantage of the master-slave synchronization configuration of the MySQL database under Linux is that this method can be used as a backup method to achieve read-write separation and relieve the pressure on a database. In order to greatly improve the speed and efficiency when running massive amounts of data, MySQL's master-slave replication requires at least two MySQL services. Of course, MySQL services can be distributed on different servers, or multiple services can be started on one server. This is the principle of MySQL master-slave backup. Let's take a look at the specific synchronization configuration process.

Let's first look at the environment in which I tested it:

CentOS 6.5 MySQL master-slave synchronization, MySQL version 5.6.25

Main server: centos6.5 IP:192.168.1.101

From server: centos6.5 IP:192.168.1.102

1. Main server related configuration

1. Create a synchronization account and specify the server address

[root@localhost ~]mysql -uroot -p
mysql>use mysql
mysql>grant replication slave on *.* to 'testuser'@'192.168.1.102' identified by '12345678';
mysql>flush privileges #Refresh privileges

Authorized user testuser can only access the database of the primary server 192.168.1.101 from the address 192.168.1.102, and only has the permission to back up the database

2. Modify the /etc/my.cnf configuration file vi /etc/my.cnf

Add the following parameters under [mysqld]. If the file already exists, you do not need to add it.

server-id=1 
log-bin=mysql-bin #Start the MySQL binary log system,
binlog-do-db=ourneeddb #Database to be synchronized binlog-ignore-db=mysql #Do not synchronize the mysql system database. If there are other databases that you do not want to synchronize, continue to add [root@localhost ~]/etc/init.d/mysqld restart #Restart the service

3. Check the master status of the master server (note the File and Position items, the slave server requires these two parameters)

mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000012 | 120 | ourneeddb| mysql |
+------------------+----------+--------------+------------------+

4. Export database

Lock the database before exporting it

flush tables with read lock; #Database read-only lock command to prevent data from being written when exporting the database

unlock tables; #Unlock

Export database structure and data: mysqldump -uroot -p ourneeddb > /home/ourneeddb.sql

Export stored procedures and functions: mysqldump -uroot -p -ntd -R ourneeddb > ourneeddb_func.sql

Tips: -ntd export stored procedures, -R export functions

2. Slave server related configuration

1. Modify the /etc/my.cnf configuration file vi /etc/my.cnf

Add the following parameters under [mysqld]. If the file already exists, you do not need to add it.

server-id=2 #Set the slave server id, which must be different from the master server

log-bin=mysql-bin #Start the MySQL binary log system

replicate-do-db=ourneeddb #The name of the database that needs to be synchronized

replicate-ignore-db=mysql #Do not synchronize the mysql system database

[root@localhost~ ]/etc/init.d/mysqld restart #Restart the service

2. Import database

The import process is not described here.

3. Configure master-slave synchronization

[root@localhost~ ]mysql -uroot -p
mysql>use mysql 
mysql>stop slave;
mysql>change master to
   master_host='192.168.1.101',
   master_user='testuser',
   master_password='12345678',
   master_log_file='mysql-bin.000012',
   master_log_pos=120; #log_file and log_pos are the File and Position of the master server in the master state
mysql>start slave;
mysql>show slave status\G;

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.101
Master_User: testuser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File:mysql-bin.000012
Read_Master_Log_Pos: 120
Relay_Log_File: orange-2-relay-bin.000003
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000012
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: orange
Replicate_Ignore_DB: mysql,test,information_schema,performance_schema
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: 120
Relay_Log_Space: 1320
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: 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: 1
Master_UUID: 773d2987-6821-11e6-b9e0-00163f0004f9
Master_Info_File: /home/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
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

Note that Slave_IO_Running: Yes Slave_SQL_Running: Yes must be Yes and Log_File and Log_Pos must be the same as File and Position in the master state.

If they are all correct, the configuration is successful!

The above is all the content we have compiled for you about the master-slave synchronous replication configuration of MySQL database under Linux. I hope it can help you.

You may also be interested in:
  • Python implements a script to synchronize MySQL specified table incremental data to clickhouse
  • Detailed explanation of the actual process of master-slave synchronization of MySQL database
  • Two ways of storing scrapy data in MySQL database (synchronous and asynchronous)
  • Mysql master/slave database synchronization configuration and common errors
  • KTL tool realizes the method of synchronizing data from MySQL to MySQL
  • Tutorial on how to synchronize MySQL data to ElasticSearch using Python
  • Master-slave synchronization configuration and read-write separation of MySQL database
  • Steps to synchronize MongoDB data to MySQL using node.js
  • PHP uses SWOOLE extension to synchronize MySQL data
  • How to use Maxwell to synchronize MySQL data in real time

<<:  vue2.x configuration from vue.config.js to project optimization

>>:  Detailed explanation of the solution to npm ls errors caused by fsevents module under Linux

Recommend

Detailed implementation plan of Vue front-end exporting Excel files

Table of contents 1. Technology Selection 2. Tech...

Correct steps to install Nginx in Linux

Preface If you are like me, as a hard-working Jav...

Summary of Form Design Techniques in Web Design

“Inputs should be divided into logical groups so ...

How to deploy LNMP architecture in docker

Environmental requirements: IP hostname 192.168.1...

Detailed explanation of loop usage in javascript examples

I was bored and sorted out some simple exercises ...

Detailed explanation of Docker Volume permission management

Volume data volume is an important concept of Doc...

CocosCreator Getting Started Tutorial: Making Your First Game with TS

Table of contents premise TypeScript vs JavaScrip...

HTML implementation of a simple calculator with detailed ideas

Copy code The code is as follows: <!DOCTYPE ht...

Implement a simple search engine based on MySQL

Table of contents Implementing a search engine ba...

How to use not in to optimize MySql

Recently, when using select query in a project, I...

Centos7 implements sample code for restoring data based on MySQL logs

Introduction Binlog logs, that is, binary log fil...

Detailed discussion of memory and variable storage in JS

Table of contents Preface JS Magic Number Storing...