构建Gelera集群

构建Gelera集群

搭建 galera 集群环境 ############################

前提条件: ==================================

建议 搭建 管理跳板机, 接下来的 操作,能够 利用 批量 管理脚本 来执行

集群中的节点, 必须相互能解析 彼此 的主机名 (/etc/hosts 文件一致,相互解析)
集群中的所有节点,时钟必须一致。

阿里云同步时间:ntpdate ntp1.aliyun.com
在此使用了自动化运维管理

1、 画好架构图,确定参数的主机数量
gelera架构图
2、 停止所有的 监控脚本,停止 所有主机上的 编译版本 的 mysql 的服务, 确定 21上拥有原始数据备份。
其余的 25 26 , 删除他们的所有数据,确保 他们是空库。

    此时: 21 上有数据,  25  26 都是空库状态。

3、确认所有节点的 编译版的mysql 不会 在 开机 自启动。 rc.local 检查一下。

4、所有 主机 统一执行

## 库文件, 都是 rpm安装的话,这个库会冲突。

[root@mysql-21 ~/gelera]# yum remove mariadb-libs

5、 安装rpm包,使用本地源即可 ============

将 gelera 相关的 rpm 包,发送 至所有主机, 这里 我们存放在 /root/gelera 目录下
[root@mysql-21 ~/gelera]#yum install rsync

[root@mysql-21 ~/gelera]#rpm -ivh /root/gelera/mysql-wsrep-common-5.7-5.7.21-25.14.el7.x86_64.rpm
[root@mysql-21 ~/gelera]#rpm -ivh /root/gelera/mysql-wsrep-libs-5.7-5.7.21-25.14.el7.x86_64.rpm
[root@mysql-21 ~/gelera]#rpm -ivh /root/gelera/mysql-wsrep-client-5.7-5.7.21-25.14.el7.x86_64.rpm
[root@mysql-21 ~/gelera]#yum install -y /root/gelera/mysql-wsrep-server-5.7-5.7.21-25.14.el7.x86_64.rpm
[root@mysql-21 ~/gelera]# yum -y install /root/gelera/galera-3-25.3.23-2.el7.x86_64.rpm

6、 修改 配置文件 =======================

原先编译版的 配置文件, 被替换掉,重新命名为  /etc/my.cnf.rpmsave  

还原回来 
[root@mysql-21 ~/gelera]# mv  /etc/my.cnf.rpmsave   /etc/my.cnf

使用之前的 配置文件,做出以下修改################

192.168.217.21

============================================================

[root@mysql-21 ~/gelera]# cat /etc/my.cnf

[client]
port=3306
socket=/tmp/mysql.sock
password=123123

[mysqld]
default_password_lifetime=30
character-set-server=utf8
collation-server=utf8_general_ci
default_storage_engine=InnoDB
max_connections=2000
#max_connect_errors=100

innodb_buffer_pool_size=800M
innodb_flush_log_at_trx_commit=2
innodb_file_per_table=ON
innodb_data_home_dir="/data/mysql"
innodb_data_file_path=ibdata1:12M:autoextend  
innodb_log_buffer_size=16M
innodb_log_file_size=52428800
innodb_log_files_in_group=2
#innodb_log_group_home_dir="./"
transaction-isolation=REPEATABLE-READ

general_log=OFF
log_output=file
general_log_file=/data/mysql/general.log 
slow_query_log=ON
slow_query_log_file=/data/mysql/slow.log 
long_query_time=2.000000 
log-bin=/bin-log/mysql-bin
**server-id=21**								#主机名
max_binlog_size=1073741824
expire_logs_days=0
binlog_format=row
binlog_rows_query_log_events=OFF    
#binlog-do-db=class

#relay-log=/bin-log/relay-log                  ##注释掉所有中继日志内容
#relay-log-index=/bin-log/relay-log.index
#slave_net_timeout=10
#connect_timeout=20
#relay_log_info_repository=Table
#master_info_repository=Table
#relay_log_recovery=ON
#read_only=OFF
#sync_relay_log=10000
#sync_binlog=1
#relay_log_purge=0

#plugin-load=rpl_semi_sync_master=semisync_master.so        ## 关闭 半同步复制机制,现在已经是完全同步复制。
#rpl_semi_sync_master_enabled=1

gtid-mode=on
enforce-gtid-consistency=ON

wsrep_on=on                                                                              ## 新加入以下配置
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so           ##写集复制模块
wsrep_cluster_name='cluster1'                                                   ##新建集群的名称,可以自行命名
wsrep_cluster_address=**'gcomm://'**        ## 进入集群时的,参考对象,如果是集群发起人,这里应该为空。
wsrep_node_name=**'mysql-21'**                 ##本机主机名
wsrep_node_address='**192.168.10.21**'      ## 本机IP地址
wsrep_sst_auth=uplooking:123123          ## 统一的数据库 访问的 账号密码
wsrep_sst_method=rsync                         ## 用于新加入的 节点,同步数据时,使用的工具。

skip-name-resolve
#skip-grant-tables
user=mysql
port=3306
#basedir=/usr/local/mysql57         ##注释掉
datadir=/data/mysql
tmpdir=/tmp
socket=/tmp/mysql.sock

query_cache_size=128M
query_cache_type=OFF
query_cache_wlock_invalidate=OFF

log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

============================================================

7、在192.168.217.21 ( 集群发起人 )上 启动服务 =================

启动数据库:

            systemctl  start  mysqld 
                    
            ### PXC/Galera Cluster集群端口

            如果能正常启动,查看一下端口

[root@mysql-80 ~/gelera]# netstat -ntl

            3306    数据库对外提供服务的端口
            4567    集群节点间相互通信  (相互监听健康状况)  的端口
            ------------------------------------------------------------------------------------------------
            4444    镜像数据传输SST,集群数据同步端口,全量同步,新节点加入时起作用
            4568    增量数据同步IST,节点下线、重启后使用该端口,增量同步数据。

8、登录mysql,查看写集复制的状态

         mysql>  show status like “%wsrep%”;
         看到以下信息,表明集群已经开始运行,此时集群只有一个节点。

查看显示有以下这些参数则满足

==========================================
| wsrep_local_state_comment | Synced
| wsrep_incoming_addresses | 192.168.217.21:3306,
| wsrep_connected | ON
| wsrep_ready

==========================================

至此,gelera 集群的 第一台 主机,(发起人)已经架构好了

给集群加入新的节点 =======================

将192.168.217.25 加入当前集群,确认该主机数据库目录是空库。
等会会由集群中的主机,自动执行 全量 备份 过来。

1、 安装相关组件 ====================

将 gelera 相关的 rpm 包,发送 至所有主机, 这里 我们存放在 /root/gelera 目录下
[root@mysql-25 ~/gelera]#yum install rsync

[root@mysql-25 ~/gelera]#rpm -ivh /root/gelera/mysql-wsrep-common-5.7-5.7.21-25.14.el7.x86_64.rpm
[root@mysql-25 ~/gelera]#rpm -ivh /root/gelera/mysql-wsrep-libs-5.7-5.7.21-25.14.el7.x86_64.rpm
[root@mysql-25 ~/gelera]#rpm -ivh /root/gelera/mysql-wsrep-client-5.7-5.7.21-25.14.el7.x86_64.rpm
[root@mysql-25 ~/gelera]#yum install -y /root/gelera/mysql-wsrep-server-5.7-5.7.21-25.14.el7.x86_64.rpm
[root@mysql-25 ~/gelera]# yum install /root/gelera/galera-3-25.3.23-2.el7.x86_64.rpm

2、 恢复 并修改 它的配置文件 ======================

192.168.217.25 :标记出 与 21 不同之处

============================================================
[root@mysql-25 ~/gelera]# cat /etc/my.cnf

[client]
port=3306
socket=/tmp/mysql.sock
password=123123

[mysqld]
default_password_lifetime=30
character-set-server=utf8
collation-server=utf8_general_ci
default_storage_engine=InnoDB
max_connections=2000
#max_connect_errors=100

innodb_buffer_pool_size=800M
innodb_flush_log_at_trx_commit=2
innodb_file_per_table=ON
innodb_data_home_dir="/data/mysql"
innodb_data_file_path=ibdata1:12M:autoextend  
innodb_log_buffer_size=16M
innodb_log_file_size=52428800
innodb_log_files_in_group=2
#innodb_log_group_home_dir="./"
transaction-isolation=REPEATABLE-READ

general_log=OFF
log_output=file
general_log_file=/data/mysql/general.log 
slow_query_log=ON
slow_query_log_file=/data/mysql/slow.log 
long_query_time=2.000000 
log-bin=/bin-log/mysql-bin
server-id=25
max_binlog_size=1073741824
expire_logs_days=0
binlog_format=row
binlog_rows_query_log_events=OFF    
#binlog-do-db=class

#relay-log=/bin-log/relay-log                  ##注释掉所有中继日志内容
#relay-log-index=/bin-log/relay-log.index
#slave_net_timeout=10
#connect_timeout=20
#relay_log_info_repository=Table
#master_info_repository=Table
#relay_log_recovery=ON
#read_only=OFF
#sync_relay_log=10000
#sync_binlog=1
#relay_log_purge=0

#plugin-load=rpl_semi_sync_master=semisync_master.so        ## 关闭 半同步复制机制,现在已经是完全同步复制。
#rpl_semi_sync_master_enabled=1

gtid-mode=on
enforce-gtid-consistency=ON

wsrep_on=on  
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so  
wsrep_cluster_name='cluster1' 
wsrep_cluster_address='gcomm://192.168.217.21' 
wsrep_node_name='mysql-25' 
wsrep_node_address='192.168.217.25'
wsrep_sst_auth=uplooking:123123 
wsrep_sst_method=rsync    

skip-name-resolve
#skip-grant-tables
user=mysql
port=3306
#basedir=/usr/local/mysql57         ##注释掉
datadir=/data/mysql
tmpdir=/tmp
socket=/tmp/mysql.sock

query_cache_size=128M
query_cache_type=OFF
query_cache_wlock_invalidate=OFF

log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

============================================================
保存,退出

3、 修改好配置后,开始启动数据库 ======================

      启动服务,  
    [root@mysql-25 /data/mysql]#   systemctl  start mysqld  

         成功后,观察 
          1、3306  4567  端口
          2、观察  /data/mysql  下, 全量 数据是否已经拷贝
          3、登录mysql,查询 学生表 数据是否同步  
          4、再次查看   mysql>  show status like “%wsrep%”;   观察集群新成员是否加入。
          

            如果没有问题,则集群已经 扩展   2 个节点 。

Galera 集群搭建完成,进行一系列测试 :================================

由于galera同步复制在每个写事务提交时都增加了 replicate trx 和 certification test 的开销,因此性能远远低于 异步 MySQL实例

1、多点写入功能:  分别向两个节点执行    建库,建表, 插入数据操作,验证多点写入,观察数据是否同步。

2、下线其中一个节点  不能是发起人 节点 比如  192.168.217.25 下线,停止服务  
当前数据            插入20条数据         插入10条数据
  2286                     2306                     2316
      剩余节点继续添加数据, 拉开距离。
      此时离线数据库重启服务,重新上线  , 启动服务即可, 观察 是否能追上  其他人的数据。
      
                
3、 故意 让 发起人节点  离线。  剩余服务器继续插入数据,拉开距离
      如要让  发起人 重新上线。
      
      修改  发起人配置文件中的  wsrep_cluster_address='gcomm://192.168.217.25'   ##再回来时,必须有一个以上的参考节点,用于 同步增量数据。
      明确指示重新加入时,向谁同步数据,原先发起集群时,该主机 此处 为 “空 ”

4、扩展集群,再次 加入一个全新的节点, 2个变 3 个。 步骤参见 上述第二个 流程
    
        1-安装各个组件        mysql-wsrep-*     galera组件    rsync     perconna xtrabackup 
        2-修改配置文件    特别注意   gcomm://   填写在线的某个节点,或者 某几个节点。
        3-依据配置文件的 路径(数据库的  还有  二进制 日志 ),配相关权限            
        4- 不需要初始化 数据库 , 直接启动服务
        5-  自动拷贝 全量 备份 ,并 自动 建立  同步关系 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值