MySQL双主双从 - Go语言中文社区

MySQL双主双从


一主多从架构可以缓解读的压力,但是一旦主宕机了,就不能写了。

所以我们可以采用双主双从架构。

这里我们接着本人之前的一台Linux主机启动多个MySQL的文章中所配置的数据库,名称为 3307 3308 3309 3310:

https://blog.csdn.net/weixin_41548316/article/details/90204195

3307 3308 互为主从。

1.环境配置

在第一台主服务器 3307 的/usr/local/mysql-5.7.18/data/3307/my.cnf文件做如下配置:

[client]
port    = 3307
socker    = /usr/local/mysql-5.7.18/data/3307/mysql.sock
default-character-set=utf-8
 
[mysqld]
port    = 3307
socker    = /usr/local/mysql-5.7.18/data/3307/mysql.sock
datadir    = /usr/local/mysql-5.7.18/data/3307
log-error    = /usr/local/mysql-5.7.18/data/3307/error.log
pid-file    = /usr/local/mysql-5.7.18/data/3307/mysql.pid
 
character-set-server=utf8
lower_case_table_names=1
autocommit=1

log-bin=mysql-bin
server-id=3307

auto_increment_increment=2
auto_increment_offset=1
log-slave-updates
sync_binlog=1

第二台主服务器 3308 的my.cnf文件加入如下配置:

[client]
port    = 3308
socker    = /usr/local/mysql-5.7.18/data/3308/mysql.sock
default-character-set=utf-8
 
[mysqld]
port    = 3308
socker    = /usr/local/mysql-5.7.18/data/3308/mysql.sock
datadir    = /usr/local/mysql-5.7.18/data/3308
log-error    = /usr/local/mysql-5.7.18/data/3308/error.log
pid-file    = /usr/local/mysql-5.7.18/data/3308/mysql.pid
 
character-set-server=utf8
lower_case_table_names=1
autocommit=1

log-bin=mysql-bin
server-id=3308

auto_increment_increment=2
auto_increment_offset=2
log-slave-updates
sync_binlog=1

两台从库my.cnf大致相同,只需要修改文件夹名称和server-id即可:


[client]
port    = 3309
socker    = /usr/local/mysql-5.7.18/data/3309/mysql.sock
default-character-set=utf-8
 
[mysqld]
port    = 3309
socker    = /usr/local/mysql-5.7.18/data/3309/mysql.sock
datadir    = /usr/local/mysql-5.7.18/data/3309
log-error    = /usr/local/mysql-5.7.18/data/3309/error.log
pid-file    = /usr/local/mysql-5.7.18/data/3309/mysql.pid
 
character-set-server=utf8
lower_case_table_names=1
autocommit=1
server-id=3309

字段说明:

log-bin:二进制文件的位置

server-id:服务id,每台库的server-id值都要唯一

auto_increment_increment : 插入数据时主键的自增步长

auto_increment-offset:增长的起始值

如:3307 中步长为 2,起始值为1,插入数据的主键为 1,3,5,7...。同样3308步长为2,起始值为2,所以插入数据主键为2,4,6,8...。

log-slave-updates:设置两台主服务器,彼此间复制的数据要不要往其下面的从服务器复制。有这个字段表示往下面从服务器复制。

sync_binlog:从库复制的延迟。值为0表示延迟时间长,1表示延迟时间短。

port:端口号 3307

socker:IP和port

datadir:数据路径

log-error:错误文件文位置

pid-file :pid文件位置

character-set-server :字符集

lower_case_table_names:是否忽略表大小写 1为忽略

autocommit:自动提交   1为是

2.服务启动

进入/usr/loacl/mysql-5.7.18/bin/中,执行:

./mysql_safe --defaults-file=/usr/loacl/mysql-5.7.18/data/3307/my.cnf &
./mysql_safe --defaults-file=/usr/loacl/mysql-5.7.18/data/3308/my.cnf &
./mysql_safe --defaults-file=/usr/loacl/mysql-5.7.18/data/3309/my.cnf &
./mysql_safe --defaults-file=/usr/loacl/mysql-5.7.18/data/3310/my.cnf &

查看一下:

OK,没有问题。

3.设置主从关系。

1)首先使用端口,主机登陆两台主MySQL:

./mysql -uroot -p -P3307 -h127.0.0.1

./mysql -uroot -p -P3308 -h127.0.0.1

2)然后分别在两台主服务器上创建数据的账号并且授权:

grant replication slave on *.* to 'copy'@'%' identified by '123456';

*.* : 其中第一个*表示所有数据库名,第二个*表示所有的数据库表

'copy'@'%':copy表示用户名,%表示ip地址,可以具体到某个ip 如:copy@127.0.0.1

3)查看两台主库的状态:

3307:

show master status;

File为 mysql-bin.000001,Position为154表示正常

所以上图显示不正常需要重置:

stop slave;#如果之前启动过,需要先关闭
reset master;#重置

重置之后File为 mysql-bin.000001,Position为154即可

3308:

show master status;

同理不正常需要重置。

注意:如果你的两台从服务器之前开启过服务,你需要分别停止复制:

stop slave;
reset slave;

 

4)在从slave服务器上设置主Master:

注意:在3308和3309的主为3307,同理3307和3310的主为3308。

搞清楚主从关系后,在3308和3309执行如下操作:

CHANGE MASTER TO

MASTER_HOST='192.168.254.128',//本人Linux IP地址

MASTER_USER='copy',

MASTER_PASSWORD='123456',

MASTER_PORT=3307,

MASTER_LOG_FILE='mysql-bin.000001', //binlog日志

MASTER_LOG_POS=154; //偏移量

在3307和3310执行如下操作:

CHANGE MASTER TO

MASTER_HOST='192.168.254.128',

MASTER_USER='copy',

MASTER_PASSWORD='123456',

MASTER_PORT=3308,

MASTER_LOG_FILE='mysql-bin.000001', //binlog日志

MASTER_LOG_POS=154; //偏移量

5)开启复制

注意:四台服务器意义上都具有从角色,所有都执行启动

start slave;

6)验证

四台服务器意义上都具有从角色,每台服务器都执行如下命令,查看从服务器状态:

show slave status G

只有 Slave_IO_Running和Slave_SQL_Running两个线程都为Yes才表示状态没有问题。^ _ ^..

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_41548316/article/details/90260104
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 23:01:35
  • 阅读 ( 1165 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢