Mariadb-galera集群配置

合集下载

mariadb使用手册

mariadb使用手册

mariadb使用手册摘要:一、MariaDB 简介1.数据库管理系统概述2.MariaDB 的发展历程3.MariaDB 的特点和优势二、MariaDB 安装与配置1.安装环境要求2.安装步骤3.配置MariaDB三、MariaDB 基本操作1.连接MariaDB2.创建数据库3.创建表4.插入数据5.查询数据6.更新数据7.删除数据四、数据库管理1.数据库的创建与删除2.表的创建与删除3.数据备份与恢复4.用户权限管理五、MariaDB 高级功能1.存储引擎2.事务处理3.视图4.触发器5.存储过程六、优化与维护1.性能优化2.索引3.死锁4.常见错误处理正文:MariaDB 使用手册一、MariaDB 简介数据库管理系统(Database Management System,简称DBMS)是计算机科学领域的重要研究方向之一。

它用于存储、检索和管理大量数据。

MariaDB 是一个开源的关系型数据库管理系统,其灵感来源于MySQL。

MariaDB 的发展始于2009 年,当时MySQL 被甲骨文公司收购。

为了保证数据库的独立性和开源精神,MariaDB 从MySQL 中分离出来,继承了MySQL 的优点,并在此基础上进行了一系列改进和增强。

MariaDB 具有高性能、可扩展性、易于使用等特点,广泛应用于互联网、企业级应用等领域。

它支持多种操作系统,如Linux、Windows 等,并提供多种编程语言的驱动程序。

二、MariaDB 安装与配置1.安装环境要求MariaDB 的最低系统要求如下:- 处理器:奔腾4 或更高版本- 内存:2GB 或更高- 硬盘:10GB 或更高- 操作系统:支持Linux、Windows 等2.安装步骤以Linux 系统为例,安装MariaDB 的步骤如下:- 更新系统软件包列表- 安装必要的依赖软件包- 下载并安装MariaDB- 启动MariaDB 服务- 设置开机自启动3.配置MariaDB安装完成后,需要对MariaDB 进行一些基本配置,例如设置root 用户的密码、配置日志文件等。

MariaDB集群安装总结

MariaDB集群安装总结

MariaDB Galera Cluster安装一、在线安装:1.配置MariaDB源:使用命令vi /etc/yum.repos.d/MariaDB.repo创建MariaDB源。

在MariaDB官网可以根据具体的操作系统配置相应的MariaDB源,https:///mariadb/repositories/如图:2.安装MariaDB和Galera使用命令yum install MariaDB-Galera-server galera MariaDB-client安装MariaDB-client和MariaDB-Galera-server。

3.启动MariaDBservice mysql start4.设置MariaDB的root密码,并做安全加固/usr/bin/mysql_secure_installation5.创建用于同步数据库的SST帐号root@mdb1~]# mysql -u root -pmysql> GRANT USAGE ON *.* to sst@'%' IDENTIFIED BY 'sstpass123';mysql> GRANT ALL PRIVILEGES on *.* to sst@'%';mysql> FLUSH PRIVILEGES;mysql> quit6.创建f文件[root@mdb1 ~]# cp /usr/share/mysql/f /etc/f.d/[root@mdb1 ~]# vi /etc/f.d/f修改如下3行:wsrep_provider=/usr/lib64/galera/libgalera_smm.sowsrep_cluster_address="gcomm://"wsrep_sst_auth=sst:sstpass123注意:"gcomm://" 是特殊的地址,仅仅是Galera cluster初始化启动时候使用。

mariadb集群配置(主从和多主)

mariadb集群配置(主从和多主)

mariadb集群配置(主从和多主)mariadb主从主从多⽤于⽹站架构,因为主从的同步机制是异步的,数据的同步有⼀定延迟,也就是说有可能会造成数据的丢失,但是性能⽐较好,因此⽹站⼤多数⽤的是主从架构的数据库,读写分离必须基于主从架构来搭建。

mariadb主从架构流程主增删改,从同步数据修改写进磁盘,以⼆进制⽂件格式保存,并创建授权登陆账号,从节点登陆同步账号读取此⼆进制⽂件。

主节点⽣成⼀个dump线程接收从节点请求,从节点⽣成io与sql线程,但主节点并不只能有⼀个线程。

io线程发送请求读⼆进制⽂件,dump线程返回给reley log(中继⽇志⾥),然后sql线程再读取中继⽇志进⾏回放,同步数据。

black hole引擎(只存储⼆进制⽂件):⽤于主从节点之间的连接,降低主节点的压⼒同步延迟,⼆进制⽂件记录是串⾏。

坏处是延迟,好处是能够⼀定时间内撤销错误操作异步同步优缺点:异步能解放出来节省时间和资源,不安全同步能提⾼安全,但效率低mariadb主从解决单点故障⽅案MHA:通过mha(配置⽂件)监控主从架构,master high avaliable 主机⾼可⽤(布置在另⼀台主机上)互为主从:有可能会造成数据的不⼀致mariadb架构的基础之上的读写分离的实现:proxy mycat环境准备准备两天同⽹段的主机,这⾥设置192.168.253.147为主,192.168.253.148为从主配置:1)关闭两台主机的防⽕墙2)修改配置⽂件/etc/f.d/f ;在mysql模块下添加:server_id=1 和 log_bin=mysql_bin ,重启mariadb3)进⼊mysql创建主从连接账号create user slave@'%' identified by '1';4)授权grant replication slave on *.* to slave@'%' identified by '1';5)查看master状态show mater status;| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql_bin.000002 | 342 | |注意:此状态会随着重启等操作改变,⼀旦改变从节点需要重新登陆。

在CentOS7上安装MariaDBGaleraCluster多主集群

在CentOS7上安装MariaDBGaleraCluster多主集群

在CentOS7上安装MariaDBGaleraCluster多主集群1、MariaDB Galera Cluster介绍MariaDB Galera Cluster 是一个用于同步MariaDB 数据库的多master 集群的工具。

在数据方面完全兼容MariaDB 和MySQL。

特性:•同步复制 Synchronous replication•Active-active multi-master 拓扑逻辑•可对集群中任一节点进行数据读写•自动成员控制,故障节点自动从集群中移除•自动节点加入•真正并行的复制,基于行级•直接客户端连接,原生的 MySQL 接口2、环境准备准备两台虚拟机,分别安装CentOS7-1908(7.7)。

服务器A:193.168.12.9 db1服务器B:193.168.12.10 db2两台虚机上关闭防火墙:systemctl stop firewalldsystemctl disable firewalld两台虚机上关闭selinux:setenforce 0修改/etc/selinux/config,设置SELINUX=disabled,确保重启后也生效。

3、安装mariadb 10.5默认centos的源里不带mariadb 10.5,需要自己配置,创建/etc/yum.repo.d/mariadb.repo文件,这里配置的是从阿里云镜像下载,速度比从官网快。

内容如下:[mariadb]name=MariaDBbaseurl=https:///mariadb/yum/10.5/cent os7-amd64pgpkey=https:///mariadb/yum/RPM-GPG-KEY-MariaDBpgpcheck=0下载并导入KEY:wget --no-check-certificate https:///mariadb/yum/RPM-GPG-KEY-MariaDB /etc/pki/rpm-gpg/rpm --import /etc/pki/rpm-gpg/*用yum安装:yum install -y MariaDB-server MariaDB-client如果之前配置过其它源导致安装失败,可以先清理一下再重试:yum clean metadata两台数据库服务器做同样操作。

Mariadb集群配置参考

Mariadb集群配置参考

云集平台数据库集群从搭建到对接研发部2016年7月20日Kelly目录MariaDB集群搭建: (3)1.在各节点安装MariaDB (3)2.设置开机启动MariaDB (3)3.设置MariaDB的root密码,并做安全加固 (3)4.确认MariaDB已正确安装并处于运行状态 (3)5.创建用于同步数据库的SST帐号 (4)6.创建f文件 (4)7.确认本机防火墙上开放了所需TCP3306和TCP4567的端口 (4)8.重起MariaDB服务 (4)9.确认MySQL的3306端口和wsrep的4567端口处于监听状态 (5)10.安装新节点 (5)Mariadb集群搭建完成后的对接: (5)附录: (5)MariaDB集群搭建:1.在各节点安装MariaDB[root@localhost~]#vi/etc/yum.repos.d/mariadb.repo写入如下信息#MariaDB10.1CentOS repository list#/mariadb/repositories/[mariadb]name=MariaDBbaseurl=/5.5/centos6-amd64gpgkey=https:///RPM-GPG-KEY-MariaDBgpgcheck=1enabled=1[root@localhost~]#yum install MariaDB-Galera-server galera MariaDB-client rsync2.设置开机启动MariaDB[root@mdb-01~]#chkconfig mysql on[root@mdb-01~]#service mysql start3.设置MariaDB的root密码,并做安全加固[root@mdb-01~]#/usr/bin/mysql_secure_installation4.确认MariaDB已正确安装并处于运行状态[root@mdb-01~]#mysql-u root-pEnter password:Welcome to the MariaDB mands end with;or g.Your MariaDB connection id is11Server version:5.5.29-MariaDB MariaDB Server,wsrep_23.7.3.rXXXXCopyright(c)2000,2013,Oracle,Monty Program Ab and others.Type'help;'or'h'for help.Type'c'to clear the current input statement.MariaDB[(none)]>注意查看是否有"wsrep_23.7.3.rXXXX"的输出。

数据库高可用方案

数据库高可用方案

数据库⾼可⽤⽅案低读低写并发、低数据量⽅案⽅案⼀:双机⾼可⽤⽅案1.数据库架构图2.特点⼀台机器A作为读写库,另⼀台B作为备份库;A库故障后B库作为读写库;A库恢复后A作为备库。

3.开发说明此种情况下,数据源配置中的数据库IP地址,可采⽤虚拟的IP地址。

虚拟IP地址由两台数据库机器上的keepalive配置,并互相检测⼼跳。

当其中⼀台故障后,虚拟IP地址会⾃动漂移到另外⼀台正常的库上。

数据库的主备配置、故障排除和数据补全,需要DBA和运维⼈员来维护。

⽽程序代码或配置并不需要修改。

具体配置可参考资料:4.适应场景读和写都不⾼的场景(单表数据低于500万),双机⾼可⽤。

5.优缺点优点是⼀个机器故障了可以⾃动切换;缺点是只有⼀个库在⼯作,读写并未分离,并发有限制。

⽅案⼆:主从结构⽅案1.数据库架构图2.特点⼀台机器A作为写库,另⼀台B作为读库;A库故障后B库充当读写,A修复后,B库为写库,A库为读库。

3.开发说明这种⽅案的实现,要借助数据库中间件Mycat来实现,Mycat的datahost配置如下(注意balance和writetype的设置)<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!--主,⽤于写--><writeHost host="hostM1" url="192.168.1.135:3306" user="root" password="123" /><!--主2,⽤于读,hostM1 down了,⾃动切换为主,读写都可以--><writeHost host="hostM2" url="192.168.1.136:3306" user="root" password="123" /></dataHost>项⽬开发中,要配置Mycat数据源,并实现对Mycat数据源的数据操作。

MariaDB Galera集群架构说明

MariaDB Galera集群架构说明

交换分区
6
MariaDB Galera 中写操作集(writesets)在数据库状态转移期间,是需要缓存的。 当一个节点发生状态转移时,它是无法应用writesets的,因为它不知道数据库的状态。 根据不同的状态转移机制(例如 mysqldump),发送状态转移的节点可能无法应用 writesets 。没法应用 ,就得有个地方先放着 ,所以需要缓存。在默认情况下, writesets 是缓存在内存中的,但是如果内存不够用,就要用到交换分区了
MariaDB Galera集群架构说明
2
MariaDB Galera集群架构说明
架构节点介绍
一个MariaDB Galera集群需要3个数据节点。2个负载 均衡节点;本例中,我们将使用5台Ubuntu服务器, 它们的IP配置如下:
用户
节点1: : 192.168.1.13; 节点2: : 192.168.1.14;
互联网
节点3: : 192.168.1.15; 节点4: : 192.168.1.11; 节点5: : 192.168.1.12;
负载均衡节点1 负载均衡节点2
3
数据节点1 数据节点2 数据节点3
MariaDB Galera集群 什么是交换分区 3. 服务器设置事项
9
MariaDB Galera集群架构说明
MariaDB Galera集群架构说明
7
MariaDB Galera集群架构说明
服务器设置限制
8
在服务器的设置上,有两件事情需要注意: 日志(包括slow query日志)类型必须是文件(file)类型,
不能是CVS或其他 Query cache 必须禁用
MariaDB Galera集群架构说明

Galera_Cluster_for_MySQL集群搭建

Galera_Cluster_for_MySQL集群搭建

Galera_Cluster_for_MySQL集群搭建Galera Cluster for MySQL集群搭建要架设Galera Cluster Server,有两种套件选择,⼀个是Percona XtraDB Cluster另⼀个是MariaDB Galera Cluster,这次介绍后者的安装。

Galera Cluster 介绍为什么要选择Galera Cluster Server,它有什么优点及功能呢?MySQL/Galera 是⼀套可以同步多台MySQL/InnoDB 机器的丛集系统,底下可以列出功能。

同步复制资料可读取和写⼊丛集系统内任⼀节点⾃动侦测节点错误,如果有节点当机,则丛集系统⾃动移除该节点可任意扩充节点采⽤row level ⽅式来平⾏复制资料从上⾯功能看来,我们可以平⾏任意扩充节点,动态增加服务器到丛集系统,要做到上⾯功能,就是利⽤Galera library来做到同步资料处理,同步的详细细节,可以参考Galera library连结。

这边就不再多描述了。

Galera Cluster的部署安装Galera Cluster Server本篇介绍的MySQL Server是使⽤MariaDB套件,⽽不是安装原始的MySQL。

CentOS和Ubuntu安装⽅式雷同,前者是⽤yum后者则是aptitude,在安装前请先下载对应的repository配置⽂件[https:///doc/662cccd0dc88d0d233d4b14e852458fb760b385d.html/mariadb/repositories/#mirror=qiming] CentOS$ yum -y update; yum -y upgrade$ yum –y install MariaDB-Galera-server MariaDB-clientgaleraUbuntu$ aptitude -y update$ aptitude -y install mariadb-galera-server-5.5 galera或者apt-get:$ apt-get -y update$ apt-get -y install mariadb-galera-server-5.5 galera启动MySQL$/etc/init.d/mysql start设置Galera Cluster Server先讲⼀下环境,⽬前总共两台Galera Server,IP 分别是:Node_1: 192.168.1.100Node_2: 192.168.1.101建⽴Node_1, Node_2 MySQL User,⽤来认证使⽤,先进⼊MySQL Console.$ mysql -u root -pWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connectionidis 154Server version: 10.0.1-MariaDB-mariadb1~precise-log/doc/662cccd0dc88d0d233d4b14e852458fb760b385d.html binary distributionCopyright (c) 2000, 2012, Oracle, Monty Program Ab and others.Type'help;'or'\h'forhelp. Type'\c'toclearthe current input statement.MariaDB [(none)]>建⽴cluster 使⽤者,密码为1234,针对% 跟localhost 同时建⽴。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的。

MariaDB Galera Cluster 介绍MariaDB集群是MariaDB同步多主机集群。

它仅支持XtraDB/ InnoDB存储引擎(虽然有对MyISAM实验支持 - 看wsrep_replicate_myisam系统变量)。

主要功能:●同步复制●真正的multi-master,即所有节点可以同时读写数据库●自动的节点成员控制,失效节点自动被清除●新节点加入数据自动复制●真正的并行复制,行级●用户可以直接连接集群,使用感受上与MySQL完全一致优势:●因为是多主,所以不存在Slavelag(延迟)●不存在丢失事务的情况●同时具有读和写的扩展能力●更小的客户端延迟●节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的技术:Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。

Galera插件保证集群同步数据,保持数据的一致性,靠的就是可认证的复制,工作原理如下图:当客户端发出一个commit的指令,在事务被提交之前,所有对数据库的更改都会被write-set收集起来,并且将 write-set 纪录的内容发送给其他节点。

write-set 将在每个节点进行认证测试,测试结果决定着节点是否应用write-set更改数据。

如果认证测试失败,节点将丢弃 write-set ;如果认证测试成功,则事务提交。

一.mariadb集群配置1.安装环境准备安装MariaDB集群至少需要3台服务器(如果只有两台的话需要特殊配置,请参照官方文档)在这里,我列出试验机器的配置:操作系统版本:CentOS7.3、mariadb10.1.21hmcloud-Flow01:10.199.10.101 hmcloud-Flow02:10.199.10.102 hmcloud-Flow03:10.199.10.103为了保证节点间相互通信,需要禁用防火墙设置:在三个节点分别执行命令:systemctl stop firewalldsystemctl enable firewalld如需要开启防火墙,需要开放mariadb端口和4567端口,并开启组播(keepalived),实测firewall开启后即使开放端口和协议也会导致haproxy不能转发,如需使用防火墙功能建议更换成iptables.firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPTfirewall-cmd --add-port=4567/tcp --permanentfirewall-cmd --reload关闭selinux:sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config,setenforce 0host解析,分别修改三台机器/etc/hosts,添加对应IP和主机名创建mysql目录,挂载磁盘mkdir /data/mount /dev/sdb /data/vim /etc/fstab添加挂载项mkdir /data/mysql升级内核,设置新内核为默认kernel ,启用BBR协议rpm --import https:///rpm -Uvh /elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y[root@Ms_NxEra ~]# cat /boot/grub2/grub.cfg |grep 4.[root@Ms_NxEra ~]# grub2-set-default "CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core)"echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.confecho "net.core.default_qdisc=fq">> /etc/sysctl.conf配置安装源[root@hmcloud-Flow01 mariadb]# cat /etc/yum.repos.d/mariadb.repo [mariadb]name = MariaDBbaseurl = /10.1.21/centos7-amd64/gpgkey=https:///RPM-GPG-KEY-MariaDBgpgcheck=12.安装 MariaDB Galera Cluster[root@hmcloud-Flow01 ~]#yum install MariaDB-server MariaDB-client galera -y3.配置 MariaDB Galera Cluster初始化数据库服务,只在一个节点进行[root@hmcloud-Flow01 mariadb]# systemctl start mariadb[root@hmcloud-Flow01 mariadb]# mysql_secure_installation关闭数据库,修改 /etc/f.d/f[root@hmcloud-Flow01 ~]# systemctl stop mariadb[root@hmcloud-Flow01 ~]# vim /etc/f.d/f[galera]wsrep_provider = /usr/lib64/galera/libgalera_smm.so#wsrep_cluster_address = "gcomm://"wsrep_cluster_address = "gcomm://10.199.10.101,10.199.10.102,10.199.10.103" wsrep_node_name = hmcloud-Flow01 #各节点名称,另外的节点需要修改wsrep_cluster_name=hmcloudwsrep_node_address=10.199.10.101 #节点IP,另外的节点需要修改wsrep_on=ONbinlog_format=ROWdefault_storage_engine=InnoDBinnodb_autoinc_lock_mode=2#bind-address=0.0.0.0wsrep_slave_threads=1innodb_flush_log_at_trx_commit=0innodb_buffer_pool_size=122Mwsrep_sst_method=rsync[embedded][mariadb]datadir=/data/mysqlsocket=/var/lib/mysql/mysql.sockport=3333innodb_rollback_on_timeout=1innodb_lock_wait_timeout=600max_connections=350skip-name-resolvelog-bin=mysql-binauto-increment-offset=1auto-increment-increment=2expire_logs_days =10#skip-grant-tables提示:将此文件复制到其余节点,注意要把wsrep_node_name和wsrep_node_address 改成相应节点的 hostname和ip。

mariad默认安装在/var/lib/mysql目录下,上面配置文件修改datadir,需要将/var/lib/mysql 下的所有文件拷贝过去才能正常启动cp -r /var/lib/mysql /data/mysqlchown mysql:mysql -R /data/mysql4.启动 MariaDB Galera Cluster 服务[root@hmcloud-Flow01 ~]#/usr/sbin/mysqld --wsrep-new-cluster --user=root &观察日志:[root@hmcloud-Flow01 ~]# tail -f /var/log/mariadb/mariadb.log150701 19:54:17 [Note] WSREP: wsrep_load(): loading provider library 'none'150701 19:54:17 [Note] /usr/libexec/mysqld: ready for connections.Version: '5.5.40-MariaDB-wsrep' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server, wsrep_25.11.r4026出现 ready for connections ,证明我们启动成功,其他节点做好准备配置,修改好mysql配置文件/etc/f.d/f后启动即可:[root@hmcloud-Flow02 ~]# systemctl start mariadb[root@hmcloud-Flow03 ~]# systemctl start mariadb可以查看/var/log/mariadb/mariadb.log,在日志可以看到节点均加入了集群中。

警告⚠:--wsrep-new-cluster 这个参数只能在初始化集群使用,且只能在一个节点使用,在节点故障修复后只需要执行systemctl start mariadb即可重新加入集群5.查看集群状态我们可以关注几个关键的参数:wsrep_connected = on 链接已开启wsrep_local_index = 1在集群中的索引值wsrep_cluster_size =3集群中节点的数量wsrep_incoming_addresses = 10.199.10.101:3333,10.199.10.101:3333,10.199.10.101:3333集群中节点地址6.验证数据同步我们在node4上新建数据库galera_test ,然后在node5 和node6 上查询,如果可以查询到 galera_test 这个库,说明数据同步成功,集群运行正常。

相关文档
最新文档