galera mysql集群部署_Galera集群部署

MariaDB Galera Cluster 介绍

Galera介绍

MariaDB集群是MariaDB同步多主机集群。它仅支持XtraDB/InnoDB存储引擎,经测试可以创建myisam引擎表,但是插入数据后,不能同步。

技术:

Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。Galera插件保证集群同步数据,保持数据的一致性,靠的就是可认证的复制当客户端发出一个commit的指令,在事务被提交之前,所有对数据库的更改都会被write-set收集起来,并且将 write-set 纪录的内容发送给其他节点。write-set 将在每个节点进行认证测试,测试结果决定着节点是否应用write-set更改数据。如果认证测试失败,节点将丢弃 write-set ;如果认证测试成功,则事务提交。

mariadb参数

https://mariadb.com/kb/en/mariadb/

主要功能

1.同步复制

2.真正的multi-master,即所有节点可以同时读写数据库

3.自动的节点成员控制,失效节点自动被清除

4.新节点加入数据自动复制

5.真正的并行复制,行级

6.用户可以直接连接集群,使用感受上与MySQL完全一致

优势

1.因为是多主,所以不存在Slavelag(延迟)

2.不存在丢失事务的情况

3.同时具有读和写的扩展能力

4.更小的客户端延迟

5.节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的

方案总览

1.nginx作为MariaDB Galera Cluster的前端

2.2台nginx用keepalived避免单点故障

3.Galera的SST采用Percona提供的XtraBackup(防止锁表,非阻塞)

集群部署

节点准备

安装集群至少需要3个节点,以防止脑裂,安装前清除以前所有mysql相关包

172.20.100.119 db01

172.20.100.109 db02

172.20.100.120 db03

各节点配置yum源 三台主机操作

[root@172-19-11-192 yum.repos.d]# cat mariadb.repo

[mariadb-main]

name = MariaDB Server

baseurl = https://downloads.mariadb.com/MariaDB/mariadb-10.2/yum/rhel/$releasever/$basearch

#gpgkey = file:///etc/pki/rpm-gpg/MariaDB-Server-GPG-KEY

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck = 0

enabled = 1

安装mariadb 三台主机操作

yum -y install mariadb-server galera xtrabackup socat perl-Time-HiRes perl-DBD-MySQL MariaDB-backup

创建数据目录并授权 三台主机操作

mkdir /data/3306

chown mysql.mysql /data/3306

修改启动文件中数据存储目录三台主机操作

cat /etc/init.d/mysql

basedir=

datadir=/data/3306

配置文件 db01初始化使用,其他机器使用时需配置[galera]

注意binlog配置时需要创建对应的目录,否则会报错

[root@172-20-100-119 my.cnf.d]# egrep -v "^$|^#" server.cnf

[client]

user = root

port = 3306

[server]

[mysqld]

character-set-server=utf8mb4

log_warnings = 0

log-error=/var/log/mariadb/mariadb.err #error 日志位置

socket=/var/lib/mysql/mysql.sock

basedir=/usr

datadir=/data/3306

user = mysql

port = 3306

max_connections=2000 #最大连接(用户)数。每个连接MySQL的用户均算作一个连接

max_connect_errors=1000 #最大失败连接限制

interactive_timeout=600 #服务器关闭交互式连接前等待活动的秒数

wait_timeout=28800 #服务器关闭非交互连接之前等待活动的秒数

net_read_timeout=60 #连接繁忙阶段(query)起作用

net_write_timeout=3600 #连接繁忙阶段(query)起作用

max_allowed_packet = 1024M #通信缓冲大小

skip-external-locking #跳过外部锁定

back_log=3000 #暂存的连接数量

skip-name-resolve #关闭mysql的dns反查功能

query_cache_type=1 #查询缓存 (0 = off、1 = on、2 = demand)

query_cache_limit = 1M #指定单个查询能够使用的缓冲区大小,缺省为1M。

query_cache_size = 64M #查询使用缓存空间

table_open_cache = 1024 #table高速缓存的数量

thread_cache_size = 120 #重新利用保存在缓存中线程的数量

key_buffer_size = 8M #设置索引块缓存大小

sort_buffer_size = 2M #每个connection(session)第一次需要使用这个buffer的时候,一次性分配设置的内存

read_buffer_size = 1M #顺序读取数据缓冲区使用内存

read_rnd_buffer_size = 2M #随机读取数据缓冲区使用内存

join_buffer_size = 4M #Join操作使用内存

bulk_insert_buffer_size = 4M #批量插入数据缓存大小

wsrep_sync_wait = 1

innodb_lock_wait_timeout=10

innodb_flush_method=O_DIRECT #innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件

innodb_file_per_table=1

innodb_fast_shutdown=0

innodb_buffer_pool_instances = 4

innodb_log_file_size = 512M

innodb_log_files_in_group = 3

innodb_rollback_on_timeout = on

innodb_thread_concurrency=0

innodb_io_capacity=800

innodb_purge_threads=1

innodb_open_files=102400

innodb_read_io_threads = 8

innodb_write_io_threads = 12

innodb_stats_on_metadata = 0

thread_handling=pool-of-threads

thread_pool_oversubscribe=30

thread_pool_size=64

thread_pool_idle_timeout=7200

thread_pool_max_threads=2000

performance_schema=0 #收集数据库服务器性能参数

lower_case_table_names = 1 #将在创建与查找时将所有的表名自动转换为小写字符

max_heap_table_size = 512M #这个变量定义了用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的最大行数值。

transaction-isolation=READ-COMMITTED

slow_query_log #慢查询记录日志

long_query_time = 5 #慢查询记录时间 2秒

slow_query_log_file=/var/log/mariadb/slow_query.log #慢查询日志路径

log_bin=/data/3306/binlog/mysql-bin

log-bin-index = /data/3306/binlog/mysql-bin.index

expire_logs_days = 5

[embedded]

[mariadb]

[mariadb-10.1]

[mysqldump]

quick

max_allowed_packet = 1024M

初始化数据库 db01机器操作

mysql_install_db --user=mysql --datadir=/data/3306/

启动数据库 db01机器操作

systemctl start mysql

安全配置、创建root密码,删除test库等: 一台机器操作

mysql_secure_installation

如果失败,请登录mysql手动删除 配置

创建集群连接用户的密码 一台机器操作

grant all on *.* to dbcluster@'%' identified by 'mysql123';

关闭数据库

systemctl stop mysql

修改配置文件 开启galera db01(首台)配置

[galera]

wsrep_on=ON #链接已开启

wsrep_provider=/usr/lib64/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://"

wsrep_node_name=172.20.100.119

wsrep_node_address=172.20.100.119

binlog_format=row ##binlog 格式 分别为 row=行格式 丶 mixed=混合格式 丶 STATEMENT=SQL语句复制模式

wsrep_slave_threads=10

wsrep_sst_method=mariabackup

wsrep_sst_auth=dbcluster:mysql123

innodb_flush_log_at_trx_commit=2

innodb_buffer_pool_size=2G ##专用mysql服务器设置的大小: 操作系统内存的70%-80%最佳。

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

启动节点 db01操作

/etc/init.d/mysql start --wsrep-new-cluster

登陆检查 db01操作

MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';

+--------------------+-------+

| Variable_name | Value |

+--------------------+-------+

| wsrep_cluster_size | 0 |

+--------------------+-------+

1 row in set (0.01 sec)

配置其他节点基本信息(db02 、db03)

1、修改启动文件的数据目录

vim /etc/init.d/mysql

basedir=

datadir=/data/3306

2、创建对应的数据目录、并授权

mkdir /data/3306

mkdir /data/binlog

chown mysql.mysql /data/3306 /data/binlog

修改配置文件 (db02 、db03)

[galera]

wsrep_on=ON #链接已开启

wsrep_provider=/usr/lib64/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://172.20.100.119,172.20.100.109,172.20.100.120"

wsrep_node_name=172-20-100-120

wsrep_node_address=172.20.100.120

binlog_format=row ##binlog 格式 分别为 row=行格式 丶 mixed=混合格式 丶 STATEMENT=SQL语句复制模式

wsrep_slave_threads=10

wsrep_sst_method=mariabackup

wsrep_sst_auth=dbcluster:mysql123

innodb_flush_log_at_trx_commit=2

innodb_buffer_pool_size=2G ##专用mysql服务器设置的大小: 操作系统内存的70%-80%最佳。

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

启动数据库 (db02 、db03)

systemctl start mysql

检查 (db02 、db03)

SHOW STATUS LIKE 'wsrep_cluster_size';

MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';

+--------------------+-------+

| Variable_name | Value |

+--------------------+-------+

| wsrep_cluster_size | 3 |

+--------------------+-------+

1 row in set (0.01 sec)

至此galera集群安装完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值