MySQL互为主从及Keepalived配置vip——主从配置篇

在上一篇日志中,介绍了配置主从及keepalived所需的软件环境的安装方法。在本篇文章中,将介绍数据库主从环境的配置。

1、服务器角色及ip:

服务器角色 IP VIP
master A 192.168.112.133 192.168.112.88
master B 192.168.112.135 192.168.112.88
user 192.168.112.134 -

2、互为主从配置

  • master A:192.168.112.133(数据库节点)
    my.cnf文件配置如下:
[mysqld]
skip-name-resolve
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-bin=mysql-bin
# 为服务器分配id,可以自定义,不区分大小,起标识作用。不同数据库节点分配不同的id
server-id=1
binlog_format=mixed
# replicate-do-db/replicate-ignore-db这两个设置针对从服务器,当两台数据库服务器并非互为主从关系时,从服务器如此设置
# replicate-do-db = ...这项设置指定需要同步数据的数据库
replicate-do-db=eleting
# replicate-ignore-db = ...这项设置指定不需要同步数据的数据库
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
# binlog-do-db/binlog-ignore-db这两个设置针对主服务器,当两台数据库服务器并非互为主从关系时,主服务器如此设置
# binlog-do-db = ... 这项设置指定需要同步数据的数据库
binlog-do-db=eleting
# binlog-ignore-db = ... 这项设置指定不需要同步数据的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
relay_log=mysqld-relay-bin
log-slave-updates = ON
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
  • master B:192.168.112.135(数据库节点)
    my.cnf文件配置如下:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]
skip-name-resolve
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-bin=mysql-bin
# 为服务器分配id,可以自定义,不区分大小,起标识作用。不同数据库节点分配不同的id
server-id=2
binlog_format=mixed
# replicate-do-db/replicate-ignore-db这两个设置针对从服务器,当两台数据库服务器并非互为主从关系时,从服务器如此设置
# replicate-do-db = ...这项设置指定需要同步数据的数据库
replicate-do-db=eleting
# replicate-ignore-db = ...这项设置指定不需要同步数据的数据库
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
# binlog-do-db/binlog-ignore-db这两个设置针对主服务器,当两台数据库服务器并非互为主从关系时,主服务器如此设置
# binlog-do-db = ... 这项设置指定需要同步数据的数据库
binlog-do-db=eleting
# binlog-ignore-db = ... 这项设置指定不需要同步数据的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
relay_log=mysql-relay-bin
log-slave-updates=ON
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

关于数据库主从设置的相关知识点,大家可以查看下面一篇文章:
学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践
本篇文章中基础的数据库主从备份设置,都是根据上面这篇文章所讲述的内容,调整优化而成。文章中的原理部分讲解的很清楚,大家可以学习下。

  • 为数据库节点分配远程访问权限
# 远程登录数据库
mysql -uname -p -hxxx.xxx.xxx.xxx

在没有对相应的远程服务器分配权限之前,很可能会被拒绝登录。

# 对远程服务器进行MySQL登录授权
# 第一种方式
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%'IDENTIFIED BY 'password' WITH GRANT OPTION; 
# 第二种方式
GRANT ALL PRIVILEGES ON *.* TO 'username'@'tel server ip' IDENTIFIED BY 'password' WITH GRANT OPTION;
# 刷新配置,使远程权限生效
flush privileges;

说明:在以上分配远程访问权限的方式中,'username'是允许远程登录的用户名,@'%'是允许所有远程服务器通过设定的用户名和密码来登录数据库,@'tel server ip'是允许指定的远程服务器通过用户名和密码来登录数据库,'password'是用户名相对应的密码。

这么说还是有点不太好理解,下面我们将通过实例来说明:

# 本次配置中,需要对两台数据库服务器进行相互授权,才能实现互为主从配置
# 本次配置中,远程登录的用户名统一为'repl',密码为'12345'
# master A(192.168.112.133)对 master B(192.168.112.135)进行远程登录授权
# 第一种方式 —— 任意ip通过用户名repl和密码12345均可登录
GRANT ALL PRIVILEGES ON *.* TO 'repl'@'%'IDENTIFIED BY '12345' WITH GRANT OPTION;
# 第二种方式 —— 仅 master B(192.168.112.135)可通过用户名repl和密码12345登录
GRANT ALL PRIVILEGES ON *.* TO 'repl'@'192.168.112.135' IDENTIFIED BY '12345' WITH GRANT OPTION;
# 刷新,使配置生效
flush privileges;
# 关于 master B(192.168.112.135)对 master A(192.168.112.133)进行远程登录授权,大家参照上面的配置,选择适合自己实际情况的方式配置即可。

测试远程访问配置是否生效:

mysql -urepl -p -h192.168.112.135
MasterB-MasterA.png
mysql -urepl -p -h192.168.112.133
MasterA-MasterB.png

远程访问权限配置成功!

  • 配置主从同步
# 查看master状态
show master status\G

master A(192.168.112.133)

MasterA-status.png

master B(192.168.112.135)

MasterB-status.png

说明:File指向目前的binary log文件,文件中记录了需要同步数据的数据库的变更信息。新安装的数据库,这里一般是mysql-bin.000001,在写这篇文章时,我的环境已经配置好了,数据库多次重启和读写,所以文件如图所示。
Position指向目前的binary log文件中,是从什么位置开始记录的变更集,新文件起始位置默认为120。可以简单的将这个属性比作断点再续,这里记录的是一个节点,从服务器配置好之后,就从这个节点位置开始同步数据。
剩下的两个配置很好理解,分别是需要同步数据的库和忽略的库。

查看到File和Position之后,就可以配置对应的主库了!
在 master A(192.168.112.133)执行

CHANGE MASTER TO 
       MASTER_HOST='192.168.112.135', 
       MASTER_USER='repl', 
       MASTER_PASSWORD='12345', 
       MASTER_LOG_FILE='mysql-bin.000032', 
       MASTER_LOG_POS=120;

在 master B(192.168.112.135)执行

CHANGE MASTER TO 
       MASTER_HOST='192.168.112.133', 
       MASTER_USER='repl', 
       MASTER_PASSWORD='12345', 
       MASTER_LOG_FILE='mysql-bin.000061', 
       MASTER_LOG_POS=120;

说明:上述语句中没什么难理解的地方,每条属性都是字面意思理解就可以啦。配置完成之后,不要忘记分别重启下两个数据库。

# 重启数据库
service mysqld restart
# 或者
systemctl restart mysqld.service

验证主从是否生效:

# 查看slave状态
show slave status\G

master A(192.168.112.133)

MasterA-slave.png

master B(192.168.112.135)

MasterB-slave.png

说明:从图中可以看出,两个数据库节点的主服务器都指向了对方。关键的地方是图中红色线框框起来的部分,当两者状态都为Yes时,说明主从备份已经开始工作,且状态正常。
一者为No时,表示主从工作不正常,此时就需要开发同学耐心的去查找相关问题所在啦。造成这种情况的原因可能有很多种,在这里没办法一一列举。

至此,互为主从的配置已经完成!

下篇文章将开始keepalived的配置!

MySQL互为主从及Keepalived配置系列文章链接:

MySQL互为主从及Keepalived配置vip——环境篇
MySQL互为主从及Keepalived配置vip——主从配置篇
MySQL互为主从及Keepalived配置vip——keepalived配置篇

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容