当前位置: 代码网 > it编程>数据库>Mysql > Linux中MySQL 双主复制的配置指南

Linux中MySQL 双主复制的配置指南

2024年07月28日 Mysql 我要评论
前言在数据驱动的时代,数据库的高可用性和数据一致性是每个企业必须考虑的重要问题。mysql 双主复制(master-master replication)提供了一种有效的解决方案,通过配置两台服务器互

前言

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

配置基于gtid的复制模式

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

第一台主服务器配置

主服务器配置

首先,我们需要修改第一台主服务器的配置文件 /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",
master_user="repluser",
master_password="abc-1234",
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",
master_user="repluser",
master_password="abc-1234",
master_auto_position=1;

启动从服务:

start slave;

测试双主复制配置

第一台主服务器测试

在第一台主服务器上,向 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 双主复制的配置上有所帮助。如果有任何问题或建议,欢迎留言讨论。

以上就是linux中mysql 双主复制的配置指南的详细内容,更多关于linux mysql双主复制的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com