mariadb集群配置(主从和多)
Posted zzzynx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mariadb集群配置(主从和多)相关的知识,希望对你有一定的参考价值。
mariadb主从
主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构来搭建。
环境准备
准备两天同网段的主机,这里设置192.168.253.147为主,192.168.253.148为从
主配置:
1)关闭两台主机的防火墙
2)修改配置文件/etc/my.cnf.d/server.cnf ;在mysql模块下添加:server_id=1 和 log_bin=mysql_bin ,重启mariadb
3)进入mysql创建主从连接账号
create user [email protected]‘%‘ identified by ‘1‘;
4)授权
grant replication slave on *.* to [email protected]‘%‘ identified by ‘1‘;
5)查看master状态
show mater status;
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql_bin.000002 | 342 | |
注意:此状态会随着重启等操作改变,一旦改变从节点需要重新登陆。
从配置:
1)修改配置文件/etc/my.cnf.d/server.cnf,添加server_id=2
2) 进入mariadb,建立主从联系。
change master to master _host=‘192.168.253.147‘,mater_user=‘slave‘,master_password=‘1‘, mater_log_file=‘mysql_bin.000002‘
3)启动线程
start slave;
4)查看从节点线程
show status slave\\G ; #查看下面两个进程是否都为yes状态 ;\\G为竖行显示
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果显示为connecting可能有以下两个原因:
a.登陆的密码、pos错误,这是因为mater节点的状态不稳定,重启等会改变。
b.防火墙没关。
5)验证是否搭建架构成功
在主节点上创建数据库或者表等操作,如果从节点数据跟随变化,则证明成功。
mariadb galera集群(多主)
galera集群多用于关键性业务,因为galera集群为了数据的一致性,采用的是同步的机制,这就使galera牺牲了一部分性能来换取数据一致性。
搭建galera集群架构步骤:
1)下载mariadb10.3版本(自带galera软件),并关闭全部防火墙,三台已经相互备份好的,关闭防火墙的主机(不是必须)
2)三台主机相互解析
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.253.147 node2 192.168.253.135 node3 192.168.253.148 node4 #同网段,且主机名要与后面配置文件的主机名一致,ip也要一致
3)配置galera文件,三台主机的galera模块下添加以下内容
主节点配置文件server.cnf vim /etc/my.cnf.d/server.cnf [galera] wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.so #galera的库文件的地址 wsrep_cluster_address="gcomm://192.168.253.147,192.168.253.148,192.168.253.135" #各节点的ip wsrep_node_name=node1 #节点主机名 wsrep_node_address=192.168.153.147 #本节点ip binlog_format=row #二进制日志设置为行模式 default_storage_engine=InnoDB #使用的默认引擎 innodb_autoinc_lock_mode=2 #性能最好 wsrep_slave_threads=1 #并行复制线程数 innodb_flush_log_at_trx_commit=0 #0.log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。 #1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认。 #2:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作 innodb_buffer_pool_size=120M #设置缓存池大小 wsrep_sst_method=rsync #远程同步 wsrep_causal_reads=ON #避免各个节点的数据不一致,这种情况需要等待全同步复制 将此文件复制到mariadb-2、mariadb-3,注意要把 wsrep_node_name 和 wsrep_node_address 改成相应节点的 hostname 和 ip。
根据各自信息不同点稍做更改。
4)在任意一台主机上执行初始化命令:
mysqld_safe --wsrep_cluster_address=gcomm://192.168.253.147,192.168.253.135,192.168.253.148
#将集群内的ip都写上
5)完成后,执行/bin/galera_new_cluster 。其他两台重启mariadb服务。(事先关闭)
6)查看端口ss-tnl,看4567端口是否开启。
7)进入mysql数据库,执行:show variables like ‘%wsrep%‘ ; 查看连接状态和集群数量。连接ip等。
8)测试。创建数据库等看是否会同步。
以上是关于mariadb集群配置(主从和多)的主要内容,如果未能解决你的问题,请参考以下文章