mysql集群 主主_Mysql集群主主复制配置

在主主复制结构中,两台服务器的任何一台上面的数据库存发生了改变都会同步到另一台服务器上,这样两台服务器互为主从,并且都能向外提供服务。配置的时候需要注意:主键重复,server-id不能重复。

一.新建数据库

Ubuntu16.04,开启两个虚拟机。

配置前,两个mysql分别新建一个数据库,保证的test数据库的数据一致

create database test default character set utf8 default collate utf8_general_ci;

二.修改配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

服务器A(192.168.8.129)配置如下

bind-address = 0.0.0.0

log_bin = /var/log/mysql/mysql-bin.log #开启二进制日志

server-id = 1 #任意自然数n,只要保证两台MySQL主机不重复即可

expire-logs-days = 100

replicate-do-db = test #要同步的数据库,默认所有库

binlog-ignore-db = mysql #忽略mysql库

binlog-ignore-db = information_schema #忽略information_schema库

auto-increment-increment = 2 #步进值,有n台主MySQL就填n

auto-increment-offset = 1 #起始值。第n台主MySQL,此时为第1主MySQL

服务器B(192.168.8.131)配置

bind-address = 0.0.0.0

log_bin = /var/log/mysql/mysql-bin.log

server-id = 2

expire-logs-days = 100

replicate-do-db = test

binlog-ignore-db = mysql

binlog-ignore-db = information_schema

auto-increment-increment = 2

auto-increment-offset = 2 #起始值,第2台主MySQL

二者只有server-id不同和 auto-increment- offset不同

auto-increment-offset是用来设定数据库中自动增长的起点的,两个服务器都设定了一次自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突

replicate-do-db 指定同步的数据库,我们只在两台服务器间同步test数据库。auto-increment-increment的值应设为整个结构中服务器的总数,本例用到两台服务器,所以值设为2

三.重启mysql服务

/etc/init.d/mysql restart

四.创建共享用户

创建一个可以在另一台主机上登录的MySQL用户repl

看是否有mysql中是否有repl这个用户

use mysql;

select user from user;

8554c9ac992c9464392f3c025962049f.png

若没有的话,新建用户

create user ‘repl’@’%’ IDENTIFIED BY ‘passwd’;

grant replication slave on . to ‘repl’@’%’;

flush privileges;

查看repl用户的权限

show grants for ‘repl’@’%’;

25158673e8e72fd72340776ca2158012.png

五.测试是否能够远程登录

在服务器A上(192.168.8.129)

mysql -h 192.168.8.131 -u repl –p

输入口令passwd

若成功,则继续下一步

若失败,检查mysqld.cnf文件中的配置,可能因为bind-address=127.0.0.1导致,使得仅允许本机访问。

六.分别查看二进制日志名和位置

show master status;

62bd987b8b9c52b7f9e590b20f9e8875.png

七.相互授权用户

在两台服务上分别先停止slave

stop slave;

在服务器A上(192.168.8.129)

change master to MASTER_HOST=’192.168.8.131′,MASTER_USER=’repl’, MASTER_PASSWORD= ‘passwd’, MASTER_LOG_FILE=’mysql-bin.000002′, MASTER_LOG_POS=154;

在服务器B上(192.168.8.131)

change master to MASTER_HOST=’192.168.8.129′,MASTER_USER=’repl’, MASTER_PASSWORD= ‘passwd’, MASTER_LOG_FILE=’mysql-bin.000002′, MASTER_LOG_POS=154;

再启动slave

start slave;

八.查看slave状态

show slave status \G;

正确结果如下图所示:

6d1b3c3a6d309b000886e7cc7fc9f9dd.png

可能出现的情况:

(1) 当配置完成Slave_IO_Running、Slave_SQL_Running不全为YES时,show slave status\G信息中有错误提示,可根据错误提示进行更正。

(2) Slave_IO_Running、Slave_SQL_Running不全为YES时,大多数问题都是数据不统一导致。

(3) stop slave后,数据变更,再start slave,出错。重新执行一遍CHANGE MASTER即可。

(4) 若出现如下图所示错误2003,连接不通过,则说明mysqld.cnf 中的bind_address未修改为0.0.0.0。如果要让mysql监听到其他的地址,可以将bind-address = 127.0.0.1注释掉,或者将bind-address = 0.0.0.0监听所有的地址

42f4a81b493c0c241dba7b398170a98f.png

(5) 若出现如下图所示错误1045,则说明配置change maseter时输入的repl用户的口令错误

cb2c4e9705f6ac9fbcc49bdce3c1990f.png

九.测试是否同步成功

在A上

create table test_user (id int NOT NULL AUTO_INCREMENT PRIMARY KEY,createtime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP);

在B上可以看到新增了一个表

a0afb2ccaec1cb90ee1da4a783b8e0ca.png

在B上

insert into test_user set id=1;

在A上可以看到test_user表中新增了一条记录。

39d53643ab88a1dcc653ee7dc867d4f6.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值