主从复制集群:
1、mysql主
①开启二进制文件:#vim /etc/my.cnf(写入如下内容)
[mysqld]
log_bin
server-id=1
gtid_mode=ON
enforce_gtid_consistency=1
②重启服务:#systemctl restart mysqld
③进入数据库,为从服务器授权
#mysql-uroot-p'123'
mysql>grant replication slave,replication client on *.* to 'rep'@'IP或网段' identified by '123';
mysql>flush privileges;
2、mysql从
①测试rep用户是否可用:#mysql -h 'mysql主IP' -urep -p'123'
②启动服务序:#vim/etc/my.cnf
[mysqld] log_bin server-id=2 gtid_mode=ON enforce_gtid_consistency=1
③重启服务:#systemctl restart mysqld
④再次测试rep用户是否可用:#mysql -h'mysql主IP' -urep -p'123'
⑤从设备上设置主服务
mysql>change master to master_host='mysql主IP',
master_user='rep',
master_password='123',
master_auto_position=1;(自动获取)
3、主主、多从
高可用:
①mysql主主同步
②在两台mysql上安装keepalived:#yum -y install keepalived
③keepalived主备配置文件:#vim /etc/keepalived/keepalived.conf
!Configuration File for keepalived
global_defs {
router_id mysql1
}
vrrp_scriptcheck_run { //定义配置健康检查脚本的配置名称check_run
script "python /root/keepalived_check_mysql.sh"
interval 5 //执行健康检查的时间间隔单位s(每5秒钟检查一次)
}
vrrp_instance VI_1{
state MASTER
interface ens33
virtual_router_id 88
priority 100
advert_int 1 //检查keepalived本身服务的时间间隔
authentication{
auth_type PASS
auth_pass 1111
}
track_script{
check_run //名字必须和上面的脚本配置名称一致
}
virtual_ipaddress{
192.168.122.100 dev ens33
}
}
④编写mysql状态检测脚本(主主):
#vim /root/bin/keepalived_check_mysql.sh
#chmod 755 /root/keepalived_check_mysql.sh
#/etc /init.d/keepalivedstart
⑤测试及诊断
关系型数据库原则:ACID(注:数据库事务通常指对数据库进行读或写的一个操作序列)
1、A(Atomicity)原子性是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
2、C(Consistency)一致性是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。如完整性约束a存款+b存款=2000。
3、I(Isolation)隔离性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
4、D(Durability)持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失
分库:垂直拆分:按照业务垂直划分,将系统中不存在关联关系或者需要join的表可以放在不同的数据库不同的服务器中
水平拆分:按照规则划分,一般水平分库是在垂直分库之后的。比如每天处理的订单数量是海量的,可以按照一定的规则水平划分
读写分离:对于时效性不高的数据,可以通过读写分离缓解数据库压力
分表:指将一张表按一定的规则分解成N个具有独立存储空间的实体表。
常见的分表策略:1.Range(范围)
2.Hash(哈希)
3.按照时间拆分
4.Hash之后按照分表个数取模
5.在认证库中保存数据库配置,就是建立一个DB,这个DB单独保存user_id到DB的映射关系
锁机制:用于保护数据的完整性,当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性,锁是其中的一种。