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

JavaScript offsetParent case study

1. Definition of offsetParent: offsetParent is th...

vue+ts realizes the effect of element mouse drag

This article example shares the specific code of ...

Introduction to CSS style classification (basic knowledge)

Classification of CSS styles 1. Internal style --...

How to print highlighted code in nodejs console

Preface When the code runs and an error occurs, w...

Detailed explanation of Vue router routing guard

Table of contents 1. Global beforeEach 1. Global ...

jQuery achieves the shutter effect (using li positioning)

This article shares the specific code of jQuery t...

VMware + Ubuntu18.04 Graphic Tutorial on Building Hadoop Cluster Environment

Table of contents Preface VMware clone virtual ma...

Solution to blank page after Vue packaging

1. Solution to the problem that the page is blank...

WeChat applet learning notes: page configuration and routing

I have been studying and reviewing the developmen...

A very detailed explanation of the Linux DHCP service

Table of contents 1. DHCP Service (Dynamic Host C...

Vue-CLI multi-page directory packaging steps record

Page directory structure Note that you need to mo...

How to implement data persistence using the vuex third-party package

Purpose: Allow the state data managed in vuex to ...

Bootstrap 3.0 learning notes button style

This article mainly explains the style of buttons...

A detailed introduction to the basics of Linux scripting

Table of contents 1. Script vim environment 2. Ho...

Configure nginx to redirect to the system maintenance page

Last weekend, a brother project was preparing to ...