mysql8双主

本文详细介绍了如何在MySQL8中设置双主复制,包括关闭防火墙、修改my.cnf配置、创建同步账号、重启MySQL服务、配置主主关系以及解决同步过程中的问题。通过这些步骤,可以实现两台MySQL服务器之间的数据实时同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.先关闭防火墙或者增加端口

[root@localhost ~]#firewall-cmd --zone=public --add-port=3306/tcp --permanent

2.修改my.cnf

[root@localhost ~]# vim /etc/my.cnf

添加配置my.cnf

server-id = 175          #serverid不能重复l
log-bin=mysql-bin        
log-slave-updates        
binlog_format=ROW
binlog_row_image=full
expire_logs_days=10

#每次自增的值2源键值2
auto_increment_increment=2
auto_increment_offset=1

#不需要同步的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#需要同步的数据库
#binlog_do_db=

 

 

3.创建账号

用root权限或者有权限赋权的账号进入mysql

175给的是xxg的all *.*的和slave同步权限

#创建账户 这里建议手打测试的时候总是说语法错误手打是没有问题的

create user 'ddg'@'%' identified by  '123456789aA@';

#赋予同步slave权限

grant replication slave ,replication client on *.* to 'xxg'@'%';

#赋予全部权限

grant all privileges on *.* to 'xxg'@'%' with grant option;

 

 然后测试一下

 

 4.176主主关闭防火墙或者开启端口

 [root@localhost ~]#firewall-cmd --zone=public --add-port=3306/tcp --permanent

5. 配置176主主的my.cnf

 

server-id = 176          #serverid不能重复l
log-bin=mysql-bin
log-slave-updates
binlog_format=ROW
binlog_row_image=full
expire_logs_days=10

#每次自增的值2源键值2
auto_increment_increment=2
auto_increment_offset=2  #这里修改成2开始自增
#
##不需要同步的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
##需要同步的数据库
##binlog_do_db=

 

6.两台都要重启mysql

[root@localhost ~]# service mysqld restart

7.176主机上mysql创建账号

#创建账户    这里建议手打测试的时候总是说语法错误手打是没有问题的

create user 'ddgjj'@'%' identified by  '123456789aA@';

#赋予同步slave权限

grant replication slave ,replication client on *.* to 'ddgjj'@'%';

#赋予全部权限

grant all privileges on *.* to 'ddgjj'@'%' with grant option;

测试

 

 

7.先查看176的master状态

现在是175同步176在175的主机上!!!操作命令

change master to
 master_host='192.168.106.176' , 
master_user='ddgjj',
master_password='123456789aA@',
master_log_file='mysql-bin.000001',
master_log_pos=1594;

 

 start slave;

 

 

 

8.然后到175上查看master status;

mysql>show master status; 

这里的日志好像不是刚刚设置的mysql说明没有重启

 重启就好了

而且还是在同步中的

然后176主机上添加配置 

change master to
 master_host='192.168.106.175' , 
master_user='xxg',
master_password='123456789aA@',
master_log_file='mysql-bin.000001',
master_log_pos=157;

 

 没有连接成功

 stop slave; #关闭同步

排查思路;用Windows数据库连接175 √

查看日志和pos偏移量有没有错         √

 既然地址和账号和密码和日志和pos都没有错重新连接试试

然后就成功了最后测试一下 

9.175.176新建一个数据库然后在各自的数据库里看看能不能不仅看见自己本库创建的数据库和同步到另外一台的数据库内容

 

 

 

 

 

 

### MySQL 8.0 双主架构与 Keepalived 配置 #### 安装 MySQL 和 Keepalived 对于Ubuntu环境下的MySQL安装,可以采用本地数据源的方式进行离线部署[^1]。具体命令如下: ```bash sudo dpkg -i mysql-community-server-core_8.0.18-1ubuntu16.04_amd64.deb ``` 在CentOS环境下,则可以通过yum仓库来完成MySQL的安装。 为了确保高可用性,在两台服务器上均需安装并配置Keepalived服务程序。 #### 创建用于复制同步的用户 为了让两个数据库实例能够互相通信并保持数据一致,需要创建专门用来做日志传输的账户`repl`: ```sql create user 'repl'@'172.31.208.123' identified with mysql_native_password by 'mysqlP@ssw0rd'; grant replication slave on *.* to 'repl'@'172.31.208.123'; flush privileges; ``` 这里的IP地址应当替换为目标机器的实际网络位置[^2]。 #### 设置自动增量偏移量 为了避免冲突,每台作为Master角色运行的MySQL实例应该设置不同的`auto_increment_offset`参数值。例如,在第一个节点中加入以下配置项到my.cnf文件里[^4]: ```ini [mysqld] server-id=1 log-bin=mysql-bin.log binlog-format=row gtid-mode=ON enforce-gtid-consistency=true auto-increment-offset=1 auto-increment-increment=2 ``` 第二个节点则应相应调整这些数值以保证唯一性和连续性。 #### 启动和验证双主复制关系 当上述准备工作完成后,重启所有涉及的服务进程,并通过执行SQL语句确认双方已经成功建立了双向复制连接。 最后一步是在每一侧都启动对方为主的身份监听状态,从而形成完整的双活模式。 #### 使用 Keepalived 实现 VIP 切换 Keepalived软件包负责监控集群成员健康状况并在必要时迁移虚拟IP(VIP),以此达到对外提供不间断访问的目的。其工作原理依赖于VRRP协议,因此必须正确编写相应的.conf模板才能让整个方案生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值