如何在Ubuntu_16_04下使用MySql的GR
一、前言
该文章主要是记录下从一个纯净的系统开始如何安装MySql 5.7.17 并且使用GR,以便于自己后期查看以及分享给他人。
二、安装mysql
因为默认ubuntu的源并不是最新的mysql所以我们需要如下几个步骤安装最新的安装包,当然我们这里还是使用的apt去安装。
1.下载apt仓库
sudo wget https://repo.mysql.com//mysql-apt-config_0.8.3-1_all.deb
2.安装apt仓库
sudo dpkg -i mysql-apt-config_0.8.3-1_all.deb
在安装的过程中会出现一个界面让其选择版本,这里大家只要让第一个选择 5.7 版本即可,当然你可以选择 8.0。
3.升级apt仓库并安装mysql
sudo apt-get update
sudo apt-get install mysql-server
到此为止我们就已经安装了最新的MySql版本了,下面就是关键的配置部分建议大家先通读一遍,不要直接上来按照这个来。
三、开启GR
1.修改配置
首先打开/etc/mysql/下的my.cnf配置并写入以下配置信息:
server_id=1
bind-address=0.0.0.0
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "10.0.0.4:24901"
loose-group_replication_group_seeds= "10.0.0.4:24901,10.0.0.5:24902,10.0.0.6:24903"
loose-group_replication_bootstrap_group= off
这里有一个配置想要说明下,其中“server_id”必须保证每个机器都不相同,可以直接使用ip地址的第四部分,“loose-group_replication_group_nam”在每个机器上都要一致,这个等同于一个组的标识。剩下的另一个不同的就是参数“loose-group_replication_local_address”这个必须指定为当前机器的IP地址,而后面的端口则是表示GR需要监听的端口,只要保证在其他机器中参数“loose-group_replication_group_seeds”中的机器的IP地址和端口正确可以任意修改该端口(该端口是独立于mysql默认的3306端口的)。
完成以上操作之后重启mysql服务
sudo service mysql restart
2.新建用户
首先我们连接到当前数据库中
mysql -u root -p
执行以下sql语句
mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl_user@'%';
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'rpl_pass';
mysql> FLUSH PRIVILEGES; #在从数据库不需要执行
mysql> SET SQL_LOG_BIN=1;
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass' FOR CHANNEL 'group_replication_recovery';
如果是生产环境,用户可以自己设置对应的账户和密码,这里作为测试就直接使用官方提供的了。
3.安装插件
我们继续执行对应的sql语句
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
如果我们想查看当前是否已经安装了该插件,可以通过下面的语句查询
mysql> SHOW PLUGINS;
4.配置Hosts
在开启最终的GR之前我们需要修改对应的hosts,将主机名和IP对应起来,否则后面在连接到其他节点的时候会发生无法连接,因为mysql依赖主机名去连接。
打开hosts
sudo vim /etc/hosts
写入如下内容(我当前的环境和机器名是这样的)
10.0.0.4 mysql-
10.0.0.5 mysql-
10.0.0.6 mysql-
完成上面的配置后退出,我们进入到mysql中接着继续执行
5.开启GR
以下方式是在主节点的开启方式(只在我们第一次安装的时候需要这样后面不需要)
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
在从属节点上只要执行以下一句
mysql> START GROUP_REPLICATION;
如果我们要查看当前是否加入成功,可以通过下面的语句查看:
mysql> SELECT * FROM performance_schema.replication_group_members;
到此为止所有的配置就都结束了,其他从属节点只要按照上面的步骤执行即可,对于测试,我们需要在主节点上新建数据库,创建表并写入数据,其他数据库也会同步。然后关闭主节点之后,通过以下语句
我们可以查询当前哪个节点为主节点了:
mysql> select *from performance_schema.replication_group_members where member_id =(select variable_value from performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member');
如何在Ubuntu_16_04下使用MySql的GR的更多相关文章
- 如何在Linux下修改Mysql的用户(root)密码
下面给大家分享下在Linux下如何修改Mysql的用户(root)的密码,分两种情况:第一种当拥有原来的mysql的root密码,第二种情况忘记原来的mysql的root的密码. 修改的用户都以roo ...
- 如何在Windows下安装MYSQL,并截图说明
说明 : window 下安装 mysql 虽然简单,但是细节不注意就会安装失败,特别是配置服务器时,Current Root Password:为空:如果输入密码了在后面安装会报错.(不知道设置这个 ...
- 如何在Win10下安装MySQL 5.7绿色版
一.背景 系统升级到Win10后准备在本地搭建一个MySQL环境,用于研究学习.在网上找了很多其他人写的经验总结,Step by step的做,不断的遇到问题,没有成功. 最后老老实实的去读Mysql ...
- 如何在linux下实现mysql数据库每天自动备份
建备份文件夹: mkdir mysql_data_bak 建脚本文件: touch autobackupmysql.sh 打开文件 vi autobackupmysql.sh 在脚本中加入如下内容: ...
- windows下安装mysql以及启动
配置环境变量,在path中添加 ;E:\wamp\Apache24\mysql(这是你的mysql安装路径),然后在修改一下配置文件my-default.ini(mysql安装文件夹目录下) 修改其中 ...
- Linux学习之CentOS(二十)--CentOS6.4下修改MySQL编码方法
但是当我们在试图对数据库中的数据进行备份或者将sql文件导入到我们的数据库时可能就会碰到编码的问题,在windows下安装mysql时我们可以在安装的时候就选择好整个数据库的编码方式(通常设置成utf ...
- 一步一步教你如何在linux下配置apache+tomcat(转)
一步一步教你如何在linux下配置apache+tomcat 一.安装前准备. 1. 所有组件都安装到/usr/local/e789目录下 2. 解压缩命令:tar —vxzf 文件名(. ...
- Win7-64bit系统下安装mysql的ODBC驱动
安装过mysql数据库后,有些软件在调用mysql数据库时不会直接调用,需要安装mysql数据库的ODBC驱动,再来调用.这里就介绍下,如何在win7系统下安装mysql的ODBC驱动. Win7系统 ...
- 如何在Eclipse下查看JDK源代码以及java源代码阅读方法(转载)
不会看JDK源代码,相当于没学过Java. 网上不容易找到一篇帮助我解决了如何在Eclipse下查看JDK源代码 的文章. 核心提示:在Eclipse中查看JDK类库的源代码!!! 设置: 1.点 w ...
随机推荐
- 西瓜书概念整理(chapter 1-2)
括号表示概念出现的其他页码, 如有兴趣协同整理,请到issue中认领章节 完整版见我的github:ahangchen 觉得还不错的话可以点个star ^_^ 第一章 绪论 Page2: 标记(lab ...
- 一个普通底层.NET程序员关于职场瓶颈期的思考,辗转自我提升/跳槽/转行之间
徒有工龄,没技术没学历没平台没家底,工作几年,无车无房无存款还前景不明. 时常有身边的亲友问怎么学开发怎么转互联网,说起IT行业都说工资高,动辄月薪上万动辄年薪几十万. 再看看自己,我可能是假的程序员 ...
- 微信公众号平台接口开发:基础支持,获取微信服务器IP地址
官方说明 目前看不出来这个接口有哪些具体运用,但是既然有这个接口,那我们就试试能不能用 访问接口 修改WeCharBase.cs,新增以下2个方法 public static string Serve ...
- JSON - Qt 对 JSON的处理
1.关于JSON的介绍参考www.json.org Qt提供处理JSON数据的支持.QJSonObject类用于封装JSON object:QJsonDocument类提供读写JSON文档的方法:QJ ...
- HashTable源码分析
本次分析代码为JDK1.8中HashTable代码. HashTable不允许null作为key和value. HashTable中的方法为同步的,所以HashTable是线程安全的. E ...
- !important的理解
!important用于将当前css代码优先级提升为最高,这个优先级比行内样式更高 但是!important在ie6这种垃圾浏览器下会出现小bug .testClass{ color:blue !im ...
- getchar()不停止原因
应该是你的输入流中还有残留的字符,getchar()()会接受那个字符.你可以在调用getchar()()之前用fflush(stdin)刷新一下输入缓冲区. 上面一段里面,应该有读入语句吧,没读干净 ...
- 深入探讨 CSS 特性检测 @supports 与 Modernizr
什么是 CSS 特性检测?我们知道,前端技术日新月异的今天,各种新技术新属性层出不穷.在 CSS 层面亦不例外. 一些新属性能极大提升用户体验以及减少工程师的工作量,并且在当下的前端氛围下: 很多实验 ...
- caoz大神力作、互联网从业者必读之书——《你凭什么做好互联网》深入总结
作者简介:曹政--俞军的关门弟子,CNZZ统计工具的缔造者,前百度商业产品部boss,4399CTO,微信公众号"caoz的梦呓"(yi),文后附上二维码,经常发布各种互联网干货, ...
- 架构师之路——里氏替换原则LSP
定义: 如果对每一个对类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型. 内容: 里氏替换原则通 ...