Setting Up Binary Log File Position Based Replication

下面的配置基于CentOS7.2,MysqL5.7

MysqL的安装参考

CentOS7安装最新版的MySQL(5.7)

建立基于日志点的复制
我们看看官方的配置步骤

主要有以下步骤

  1. 配置master
  2. 创建复制用户
  3. 获取master上日志坐标
  4. 备份master上的数据
  5. 在slave上使用change master配置复制
  6. 通过slave配置其他slave

其中第3步和第4步可以通过一条语句完成,第6步是将配置好的slave作为其他slave环境(主要步骤是复制配置好的slave的数据目录文件夹,我们通过重复的步骤也可以实现)

1 配置master

To configure a master to use binary log file position based replication,you must enable binary logging and establish a unique server ID.

使用基于日志点的复制来配置master,我们必须开启二进制日志并为master分配一个唯一的server ID。

编辑/etc/my.cnf

sudo vim /etc/my.cnf

在[MysqLd]下面添加下面的配置,如果[MysqLd]下面没有配置的话,配置了就根据需求修改或跳过

log-bin=MysqL-bin
server-id=1

log-bin开启二进制日志并配置了二进制日志的前缀
server-id配置了server的id

然后重启MysqL

sudo systemctl restart MysqLd.service

2 创建复制用户

CREATE USER '用户名'@'ip地址' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'ip地址';

上面的两条命令主要是创建了复制slave用户

如果出现

ERROR 1396 (HY000): Operation CREATE USER Failed for 'xxx'@'xxx'

执行

FLUSH PRIVILEGES

再执行上面的两条命令

3 获取master日志点并导出数据

MysqLdump -uroot -p --single-transaction --triggers --routines --flush-logs --master-data --all-databases > /tmp/alldb.sql

上面的MysqLdump会导出master上的所有数据到/tem/alldb.sql中,并且记录了master上的日志点(日志文件和日志位置),主要是–master-data的作用,其他参数可以自行搜索。

我们可以看看导出的文件,里面有了MASTER_LOG_FILE和MASTER_LOG_POS,这两个参数在后面会用到,这个也是master上当前show master status看到数据。

将数据导出后master上的配置已经完成了。

4 配置slave并导入master上的数据

下面的操作在slave上
有可能我们很多时候有各种错误,导致我们也不知道slave的当前状态,所以有必要先停掉,不管slave启动没有

STOP SLAVE;

参照第1步为slave配置一个server-id,注意要唯一,不能和master相同,重启slave。

我们把刚才导出的数据导入slave中

MysqL -uroot -p< /tmp/alldb.sql

5 在slave上执行CHANGE MASTER TO

CHANGE MASTER TO 
MASTER_HOST='master的ip',MASTER_USER='第2步在master上创建的用户',MASTER_PASSWORD='第2步在master上创建的用户的密码',MASTER_LOG_FILE='第3步MysqLdump出文件记录的MASTER_LOG_FILE',MASTER_LOG_POS=第3步MysqLdump出文件记录的MASTER_LOG_POS;

执行之后就配置好了CHANGE MASTER TO

然后

START SLAVE;

然后通过

SHOW SLAVE STATUS\G;

查看slave的状态

看到Slave_IO_Running和Slave_sql_Running都是Yes就说名slave启动正常了。
这里我是隔了几天截图的,所以Master_Log_Pos是381877,刚刚执行后Master_Log_File应该是刚才第2步看到的154。

如果出现

ERROR 1045 (28000): Access denied for user 'xxx'@'xxx' (using password: YES)

可能是防火墙的问题

查看防火墙

sudo systemctl status firewalld.service

开启防火墙

sudo systemctl start firewalld.service

添加3306

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent

添加成功后会返回success
重新加载firewall

sudo firewall-cmd --reload

查看3306端口

sudo firewall-cmd --query-port=3306/tcp

查看所有的开放端口

sudo firewall-cmd --zone=public --list-all

防火墙端口开放后

SLAVE STOP;
SLAVE START;

到这master和slave都配置完了,在master更新会同步到slave.

以上步骤是可以重现的,我实验了好几次。

如果需要配置多个slave,重复执行slave的步骤即可。

如果需要slave作为其他slave的master(A->B->C)则需要在slave开启二进制日志(即配置log-bin)外,还要配置log_slave_updates=on,即slave同步master的日志后,再写入自己的log-bin,这样slave的slave才能同步到master更新的数据。

参考文献

https://dev.mysql.com/doc/refman/5.7/en/replication-howto.html

CentOS配置MySQL基于日志点的复制Binary Log File Position Based Replication的更多相关文章

  1. ios – 使用Swift的Lumberjack 2.0记录器

    我以前使用物镜C的Lumberjack记录器,我喜欢它.现在我开始学习Swift,我不能在那里使用我最喜欢的记录器.有人可以一步一步地写出我能做到的事吗?在Lumberjack2.0发布之前,我尝试在这里找到一些东西,但所有主题都是自定义包装器.我做了什么:>我用Cocoapods添加了Lumberjack;>我将“#import”添加到Bridging-Header文件中.我不知道接下来该怎么办?因为在ObjC中我有宏:staticconstintddLogLevel=LOG_LEVEL_INFO;el

  2. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  3. Swift 接入微信 Mars_Xlogger 填坑指南——Jinkey 原创

    Step1下载代码使用gitclone或者直接下载zip,解压后进入目录mars-master/mars/libraries,看到有一个build_apple.py的文件Step2编译Mars在终端进入工程目录输入然后回答一系列问题第一个问题inputprefixforsavedirectory.liketrunk,br,tag:输入保存目录的前缀第二个问题Entermenu:buildmarsforiphone.buildmarsforiphonewithbitcode.buildxlogforipho

  4. 如何在swift-ios文件中使用asl.h

    我是ios/swift的新手.我想使用asl.h中的日志记录c函数在swift文件中.任何人?我用Google搜索,人们似乎都在编写自己的日志快速类.没有不尊重,但我想使用asl.也就是说,斯威夫特不喜欢#include并且它不喜欢我只是调用asl_log(NULL,NULL,ASL_LEVEL_INFO,“HelloWorld!”

  5. android – 使用Camera2 API从服务录制视频

    我在一些我无法测试的手机上遇到问题(这是第一个问题)我正在尝试构建一个可以从camera2API录制的服务.但是,当我将应用程序发送到后台时,在某些手机上似乎存在我目前无法解决的问题.我只有日志,无法弄清楚应用程序无法正常工作的主要原因.由于该类太大而无法在此处显示为代码,因此您可以在此处找到它:https://github.com/Astyan42/RecordingService/blob/m

  6. android – 从AOSP master切换到froyo

    我刚用回购检查了主人.现在我想切换到froyo.如果不再下载一堆东西我怎么能这样做?我不想再次下载一堆东西,我只是希望能够在分支之间自由移动,就像在普通的gitclone中一样.解决方法由于您使用repo下载了所有内容,因此您可以轻松地使用repo在分支之间切换而无需再次下载所有内容:repoinit-bfroyo;回购同步这将只下载切换分支所需的文件,就像使用git在分支之间移动一样.

  7. android-studio – 无法使用Android Studio从JNI打印日志消息

    我得到的错误:error:undefinedreferenceto‘__android_log_print’我已将此行添加到我的.cpp文件中:我尝试过两种方法:__android_log_print和__android_log_write我还在我的Android.mk文件(我手动编译)中链接了日志库.LOCAL_LDLIBS:=–llog我也尝试了几种我认为的替代品:这是我的Android.mk

  8. MvvmCross:从android中的MvxListView获取所选项目的最佳方法是什么?

    我正在使用MvvmCrossv3.06,我在android中定义了一个绑定到列表的MvxListView.我可以看到列表,但无法确定获取单击它时所选项目的最佳方法.目前我在活动的OnCreate中执行以下操作,但它不是特别是MVVM,我想知道是否有更好的方法通过绑定?

  9. Android – 将SQLite与MySQL同步的最佳方式

    参见英文答案>Synchronizingclient-serverdatabases5个我正在开发一个包含网络应用和移动应用程序的项目,该应用程序记录每日用户的数据.用户可以删除,更新他们的数据,他们可以使用许多设备插入数据.我打算这样开发:用户输入他们的数据然后插入sqlite.服务将定期启动(每5小时或每小时)以使用时间戳与MysqL同步.我确实在互联网上使用服务和时间戳搜索了一个样本,但我一

  10. android – XmlPullParser getAttributeValue返回null

    我在assets/xml文件夹中存储了以下XML结构:我正在使用XmlPullParser阅读每个单独的homeitem:我的问题是:使用getAttributeValue始终返回null.使用getAttributeValue工作正常.我究竟做错了什么?设备:Nexus10,StockKitKat4.4解决方法试试这个:

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部