Linux中MySQL 双主复制(互为主从)配置指南(详细过程)!

神秘泣男子 2024-07-31 09:37:01 阅读 61

 

🏡作者主页:点击! 

🐧Linux基础知识(初学):点击!

🐧Linux高级管理防护和群集专栏:点击!

🔐Linux中firewalld防火墙:点击!

⏰️创作时间:2024年7月24日15点48分

🀄️文章质量:95分


目录

前言——

配置基于GTID的复制模式

第一台主服务器配置

主服务器配置

创建具有复制权限的用户

启动从服务

第二台主服务器配置

主服务器配置

创建具有复制权限的用户

启动从服务

测试双主复制配置

第一台主服务器测试

第二台主服务器测试

总结


前言——

在数据驱动的时代,数据库的高可用性和数据一致性是每个企业必须考虑的重要问题。MySQL 双主复制(Master-Master Replication)提供了一种有效的解决方案,通过配置两台服务器互为主从,保证数据的实时同步和高可用性。本文将详细介绍如何配置基于 GTID 的 MySQL 双主复制,并进行测试验证。

配置基于GTID的复制模式

GTID(全局事务标识符)是 MySQL 提供的一种新型复制方式,它简化了主从复制的配置和管理,确保数据的一致性和完整性。在配置 MySQL 双主复制之前,我们需要确保两台主服务器都启用了 GTID 模式。

第一台主服务器配置

主服务器配置

首先,我们需要修改第一台主服务器的配置文件 <code>/etc/my.cnf,添加以下内容:

server-id = 100

log_bin = mysql-bin

gtid_mode = ON

enforce_gtid_consistency = true

这些配置项的作用如下:

server-id:设置服务器的唯一标识符。log_bin:启用二进制日志记录。gtid_mode:启用 GTID 模式。enforce_gtid_consistency:强制 GTID 一致性。

修改完配置文件后,重启 MySQL 服务使配置生效:

systemctl restart mysqld

创建具有复制权限的用户

接下来,我们需要创建一个具有复制权限的用户,用于两台服务器之间的同步:

grant replication slave on *.* to 'repluser'@'192.168.192.%' identified by 'Abc-1234';

flush privileges;

show master status\G;

这些 SQL 命令的作用如下:

grant replication slave:授予用户复制权限。flush privileges:刷新权限,使之生效。show master status:查看主服务器的状态。

启动从服务

在创建好用户之后,进入 MySQL 数据库执行以下命令,将另一台主服务器配置为从服务器:

mysql -uroot -pABCabc-123

change master to

master_host="192.168.192.111",code>

master_user="repluser",code>

master_password="Abc-1234",code>

master_auto_position=1;

启动从服务

start slave;

第二台主服务器配置

主服务器配置

在第二台主服务器上,同样需要修改配置文件 /etc/my.cnf,添加以下内容:

server-id = 101

log_bin = mysql-bin

gtid_mode = ON

enforce_gtid_consistency = true

重启 MySQL 服务:

systemctl restart mysqld

创建具有复制权限的用户

创建具有复制权限的用户:

grant replication slave on *.* to 'repluser'@'192.168.192.%' identified by 'Abc-1234';

flush privileges;

show master status\G;

启动从服务

进入 MySQL 数据库执行以下命令,将第一台主服务器配置为从服务器:

mysql -uroot -pABCabc-123

change master to

master_host="192.168.192.100",code>

master_user="repluser",code>

master_password="Abc-1234",code>

master_auto_position=1;

启动从服务

start slave;

测试双主复制配置

第一台主服务器测试

在第一台主服务器上,向 <code>hello 数据库的 test 表插入数据,并查看数据同步情况:

mysql> insert into hello.test values(2222);

Query OK, 1 row affected (0.01 sec)

mysql> select * from hello.test;

+--------+

| num |

+--------+

| 111111 |

| 2222 |

+--------+

2 rows in set (0.00 sec)

mysql> select * from hello.test;

+---------+

| num |

+---------+

| 111111 |

| 2222 |

| 3333333 |

+---------+

3 rows in set (0.01 sec)

第二台主服务器测试

在第二台主服务器上,查看刚刚插入的数据,并插入新的数据:

mysql> select * from hello.test;

+--------+

| num |

+--------+

| 111111 |

| 2222 |

+--------+

2 rows in set (0.00 sec)

mysql> insert into hello.test values(3333333);

Query OK, 1 row affected (0.02 sec)

mysql> select * from hello.test;

+---------+

| num |

+---------+

| 111111 |

| 2222 |

| 3333333 |

+---------+

3 rows in set (0.00 sec)

总结

通过以上配置和测试,我们成功地实现了 MySQL 双主复制。此配置不仅提高了数据库的可用性,还确保了数据的一致性。在实际生产环境中,这种配置可以极大地减少数据丢失的风险,提升系统的容灾能力。希望本文对您在 MySQL 双主复制的配置上有所帮助。如果有任何问题或建议,欢迎留言讨论。

成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。