mariadb数据库集群
mariadb主从
主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定的延迟性,也就是说可能会导致数据丢失,但是性能比较好,因此网站大多数
用的是主从架构的数据库,读写分离必须基于主从架构来搭建。
异步:提高效率,但是数据的安全性没有保证。
同步:安全性高,但是效率不高
主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定的延迟性,也就是说可能会导致数据丢失,但是性能比较好,因此网站大多数
用的是主从架构的数据库,读写分离必须基于主从架构来搭建。
异步:提高效率,但是数据的安全性没有保证。
同步:安全性高,但是效率不高
增删改不多的情况下可以去使用主主架构。主主——预防单点故障。
主从架构:一主多从、一主一从
Master建立数据库账号——slave利用这个账号访问master的二进制文件,监控binlog的position。
主从架构:一主多从、一主一从
Master建立数据库账号——slave利用这个账号访问master的二进制文件,监控binlog的position。
主从架构的搭建与配置:
异步:效率高、安全性低、有延迟
同步:效率低、安全性高、无延迟
主:可读可写(dump thread)
从:可读不可写(sql thread 、 i/o thread)

@ps:单点故障解决方案:
主主架构:
互为主备,互相监控对方的二进制文件进行同步
#note:当两个sql语句发生冲突的时候主主架构有可能出现数据不一致的情况。
MHA(master high available)
#MHA可以有多个配置文件,一个配置文件监控一个主从架构。
配置:
MASTER:
1、在master配置文件/etc/my.cnf.d/server.cnf的[mysqld]加入以下:
[mysqld]
server-id=1
log-bin=mysql-bin
2、重启mysql服务
service mysqld restart
3、创建从连接账号与授权
create user 'slave'@'%' identified by 'slave';
grant replication slave on *.* to slave@'%';
#grant replication slave on *.* to slave@'%' identified by 'slave';
flush privileges;
4、查看二进制日志
show master status; #从节点同步二进制日志的文件和位置。
SLAVE:
1、修改slave的配置文件/etc/my.cnf.d/server.cnf
[mysqld]
server-id=2
2、重启mysql服务
service mysqld restart
3、登录数据库
mysql -uroot -proot
异步:效率高、安全性低、有延迟
同步:效率低、安全性高、无延迟
主:可读可写(dump thread)
从:可读不可写(sql thread 、 i/o thread)

@ps:单点故障解决方案:
主主架构:
互为主备,互相监控对方的二进制文件进行同步
#note:当两个sql语句发生冲突的时候主主架构有可能出现数据不一致的情况。
MHA(master high available)
#MHA可以有多个配置文件,一个配置文件监控一个主从架构。
配置:
MASTER:
1、在master配置文件/etc/my.cnf.d/server.cnf的[mysqld]加入以下:
[mysqld]
server-id=1
log-bin=mysql-bin
2、重启mysql服务
service mysqld restart
3、创建从连接账号与授权
create user 'slave'@'%' identified by 'slave';
grant replication slave on *.* to slave@'%';
#grant replication slave on *.* to slave@'%' identified by 'slave';
flush privileges;
4、查看二进制日志
show master status; #从节点同步二进制日志的文件和位置。
SLAVE:
1、修改slave的配置文件/etc/my.cnf.d/server.cnf
[mysqld]
server-id=2
2、重启mysql服务
service mysqld restart
3、登录数据库
mysql -uroot -proot
change master to master_host='MASTER_IP',master_user='slave',master_password='slave',master_log_file='mysql-bin.00001',master_log_pos=528;
start slave;
show slave status\G
#需要注意的是,主动只能向后同步。如果前面还有数据也需要写到从的数据库里,可以使用备份与恢复来解决,然后再开启主从同步。
#在从上可以创建,但是不会同步到主。
#如果读节点要做集群,那么可以使用mycat来做读写分离,后端读节点集群使用lvs来做LB分发。