Table of Contents
Preface
1. Mysql configuration file
(1)Node A configuration
(2)Node B configuration
2. Configure node A as the master of node B (master-slave mode)
3. Complete the dual-master configuration
4. Test
5. Control the synchronized library or table
6. One account with multiple IPs
Home Database Mysql Tutorial How to configure Mysql dual master

How to configure Mysql dual master

May 26, 2023 pm 01:04 PM
mysql

    Preface

    Features: In a dual-master configuration, the two mysql nodes are each other's master and slave nodes. Node A and node B are each other's master nodes.

    Skip the steps to install mysql

    1. Mysql configuration file

    (1)Node A configuration

    # 设置server-id,两节点必须不一样
    server-id = 100
     
     
    # 开启bin_log,模式为ROW,允许最大日志为1G
    log_bin = mysql-bin
    binlog_format = ROW
    max_binlog_size = 1024M
     
     
    # mysql5.7的版本不需要配置log-slave-updates=1
    # log-slave-updates = 1
     
     
    # 实现数据库宕机恢复后,自动同步缺少的数据
    relay_log = mysql-relay-bin
     
     
    # 设置自增ID初始值为2,每次自增量为2。即都是偶数2,4,6,8,...
    auto_increment_offset = 2
    auto_increment_increment = 2
     
     
    # 开启gtid
    gtid_mode = ON
    enforce_gtid_consistency = 1
     
     
    # 忽略不需要同步的schema
    replicate-ignore-db = mysql
    replicate-ignore-db = information_schema
    replicate-ignore-db = performance_schema
    replicate-ignore-db = sys
    Copy after login

    (2)Node B configuration

    Only configurations different from node A are listed

    # 设置server-id,两节点必须不一样
    server-id = 200
     
    # 设置自增ID初始值为1,每次自增量为2。即都是奇数1,3,5,7,...
    auto_increment_offset = 1
    auto_increment_increment = 2
    Copy after login

    2. Configure node A as the master of node B (master-slave mode)

    Node A is the master and node B is the slave .

    (1) Log in to node A and create an account used by slave (node ​​B).

    # 在节点A上创建账号repl_user,允许从任意IP访问,密码为slave@100,
    grant replication slave on *.* to 'repl_user'@'%' identified by 'slave@100';
    flush privileges;
    Copy after login

    (2) Check the master information of node A

    As shown in the figure below, the bin_log log of node A is mysql-bin.000001, and the location is 154

    # 清空master信息。初次配置可以使用,若已运行了同步,切记不要使用!
    reset master;
     
    # 查看master信息
    show master status;
     
    +------------------+----------+--------------+------------------+---------------------------------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                           |
    +------------------+----------+--------------+------------------+---------------------------------------------+
    | mysql-bin.000001 |     154 |              |                  | c2cf218e-2317-11ec-a36f-5cf9dd4fd6a8:1-5    |
    +------------------+----------+--------------+------------------+---------------------------------------------+
    Copy after login

    (3 ) Log in to node B and set the master of node B to node A

    # 停止节点B上的slave
    stop slave;
     
    # 将节点B的master设为节点A,以下的配置信息均表示节点A
    # MASTER_LOG_FILE和MASTER_LOG_POS,是在第(2)步中查看节点A的master信息
    CHANGE MASTER TO 
           MASTER_HOST='127.0.0.1', 
           MASTER_PORT=3307,
           MASTER_USER='repl_user', 
           MASTER_PASSWORD='slave@100', 
           MASTER_LOG_FILE='mysql-bin.000001', 
           MASTER_LOG_POS=154;
     
    # 开启节点B上的slave
    start slave;
    Copy after login

    (4) Confirm whether the slave of node B runs successfully. When both Slave_IO_Running and Slave_SQL_Running are YES in the returned result, it indicates success. If it is NO or Connecting, please check the log file ending with .err in the mysql data directory to find the [ERROR] level log. Usually, initial configuration problems are mainly caused by my.ini configuration or synchronization account creation problems.

    # 在节点B中查看slave状态
    show slave status\G;
     
    *************************** 1. row ***************************
                  Slave_IO_State: Waiting for master to send event
                      Master_Host: 127.0.0.1
                      Master_User: repl_user
                      Master_Port: 3307
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000001
              Read_Master_Log_Pos: 2207
                   Relay_Log_File: mysql-relay-bin.000002
                    Relay_Log_Pos: 1143
            Relay_Master_Log_File: mysql-bin.000001
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                               ......
    Copy after login

    (5) If the slave configuration is abnormal, you can use the following statement to reset it

    reset slave all;
    Copy after login

    3. Complete the dual-master configuration

    At this point, node A has been successfully configured Master-slave mode with node B, that is, node A is the master of node B. Next, repeat the operation of step three, but reverse the operations of nodes A and B, that is, create a synchronization account on node B, view the master information, and set node B as the master on node A. After the configuration is completed, also check the slave status of node A to see if Slave_IO_Running and Slave_SQL_Running are both YES.

    4. Test

    Add or delete schema or table or data in node A, and check whether there is correct synchronization in node B.

    Test whether the added auto-incrementing primary key data on node A and node B matches the configuration file. One is an odd number and one is an even number. When adding or deleting data, will there be a conflict in the primary key?

    5. Control the synchronized library or table

    Achieved by modifying my.ini

    (1) Control on the master side

    binlog-do-db Database for binlog log recording (for multiple databases, separated)

    Binlog-ignore-db Ignore the database in the binlog log (for multiple databases, separated)

    Only the tables recorded in the binlog , can be synchronized to the slave database

    # binlog中记录这两个表
    binlog-do-db=db_1,db_2      
     
    # binlog中不记录这两个表 
    binlog-ignore-db=db_3,db_4
    Copy after login

    (2) Control on the slave side

    replicate-do-db Set the database that needs to be replicated
    replicate-ignore-db Settings Replicate database that needs to be ignored
    replicate-do-table Set the table that needs to be replicated
    replicate-ignore-table Set the replicated table that needs to be ignored
    replicate-wild-do-table Same as replication-do-table The function is the same, you can use wildcards
          replicate-wild-ignore-table has the same function as replication-ignore-table, you can add the wildcard  

                                    ’ ’ ’ ’ s ’ s ’ s ’ s ‐ to ‐ ‐‐‐ wild-ignore-table ​ ​There is information, but synchronization is not performed.

    # 执行同步的库
    replicate-do-db=db_1
    replicate-do-db=db_2
     
    # 忽略同步的库
    replicate-ignore-db=db_3
     
    # 执行同步的表
    replicate-do-table=db_1.table_a
    replicate-do-table=db_2.table_b
     
    # 忽略同步的表
    replicate-ignore-table=db_2.table_c
     
    # 只复制哪个库的哪个表
    replicate-wild-do-table=db_4.% 
     
    # 忽略哪个库的哪个表
    replicate-wild-ignore-table=mysql.%
    Copy after login

    6. One account with multiple IPs

    When one mysql server serves as the master node and N servers serve as slave nodes, it will be very cumbersome to add an account to each slave node. You can create an account in the master node and associate multiple IP addresses with this account to reduce the number of accounts that need to be added.

    The specific method is to execute the account creation statement multiple times, and the IP will be different each time.

    # 创建一个账号名,为此账号设置多个ip
    grant replication slave on *.* to 'repl_user'@'192.168.5.10' identified by 'slave@100';
    grant replication slave on *.* to 'repl_user'@'192.168.5.20' identified by 'slave@100';
    FLUSH PRIVILEGES
    Copy after login

    The above is the detailed content of How to configure Mysql dual master. For more information, please follow other related articles on the PHP Chinese website!

    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

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    AI Hentai Generator

    AI Hentai Generator

    Generate AI Hentai for free.

    Hot Article

    R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
    3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Best Graphic Settings
    3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. How to Fix Audio if You Can't Hear Anyone
    3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: How To Unlock Everything In MyRise
    4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    The relationship between mysql user and database The relationship between mysql user and database Apr 08, 2025 pm 07:15 PM

    In MySQL database, the relationship between the user and the database is defined by permissions and tables. The user has a username and password to access the database. Permissions are granted through the GRANT command, while the table is created by the CREATE TABLE command. To establish a relationship between a user and a database, you need to create a database, create a user, and then grant permissions.

    MySQL: The Ease of Data Management for Beginners MySQL: The Ease of Data Management for Beginners Apr 09, 2025 am 12:07 AM

    MySQL is suitable for beginners because it is simple to install, powerful and easy to manage data. 1. Simple installation and configuration, suitable for a variety of operating systems. 2. Support basic operations such as creating databases and tables, inserting, querying, updating and deleting data. 3. Provide advanced functions such as JOIN operations and subqueries. 4. Performance can be improved through indexing, query optimization and table partitioning. 5. Support backup, recovery and security measures to ensure data security and consistency.

    Can I retrieve the database password in Navicat? Can I retrieve the database password in Navicat? Apr 08, 2025 pm 09:51 PM

    Navicat itself does not store the database password, and can only retrieve the encrypted password. Solution: 1. Check the password manager; 2. Check Navicat's "Remember Password" function; 3. Reset the database password; 4. Contact the database administrator.

    Query optimization in MySQL is essential for improving database performance, especially when dealing with large data sets Query optimization in MySQL is essential for improving database performance, especially when dealing with large data sets Apr 08, 2025 pm 07:12 PM

    1. Use the correct index to speed up data retrieval by reducing the amount of data scanned select*frommployeeswherelast_name='smith'; if you look up a column of a table multiple times, create an index for that column. If you or your app needs data from multiple columns according to the criteria, create a composite index 2. Avoid select * only those required columns, if you select all unwanted columns, this will only consume more server memory and cause the server to slow down at high load or frequency times For example, your table contains columns such as created_at and updated_at and timestamps, and then avoid selecting * because they do not require inefficient query se

    How to create navicat premium How to create navicat premium Apr 09, 2025 am 07:09 AM

    Create a database using Navicat Premium: Connect to the database server and enter the connection parameters. Right-click on the server and select Create Database. Enter the name of the new database and the specified character set and collation. Connect to the new database and create the table in the Object Browser. Right-click on the table and select Insert Data to insert the data.

    How to copy tables in mysql How to copy tables in mysql Apr 08, 2025 pm 07:24 PM

    Copying a table in MySQL requires creating new tables, inserting data, setting foreign keys, copying indexes, triggers, stored procedures, and functions. The specific steps include: creating a new table with the same structure. Insert data from the original table into a new table. Set the same foreign key constraint (if the original table has one). Create the same index. Create the same trigger (if the original table has one). Create the same stored procedure or function (if the original table is used).

    How to view database password in Navicat for MariaDB? How to view database password in Navicat for MariaDB? Apr 08, 2025 pm 09:18 PM

    Navicat for MariaDB cannot view the database password directly because the password is stored in encrypted form. To ensure the database security, there are three ways to reset your password: reset your password through Navicat and set a complex password. View the configuration file (not recommended, high risk). Use system command line tools (not recommended, you need to be proficient in command line tools).

    How to view mysql How to view mysql Apr 08, 2025 pm 07:21 PM

    View the MySQL database with the following command: Connect to the server: mysql -u Username -p Password Run SHOW DATABASES; Command to get all existing databases Select database: USE database name; View table: SHOW TABLES; View table structure: DESCRIBE table name; View data: SELECT * FROM table name;

    See all articles