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  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 |              |                  

注意:此状态会随着重启等操作改变,一旦改变从节点需要重新登陆。

从配置:

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)测试。创建数据库等看是否会同步。

猜你喜欢

转载自www.cnblogs.com/zzzynx/p/10869429.html
今日推荐