两台服务器之间mysql数据库怎么做同步_MySQL高可用
两台服务器之间mysql数据库怎么做同步_MySQL⾼可⽤今天我们就来讲讲mysql⾼可⽤。
CentOS7 64位安装MySql
1. 先检查系统是否装有mysql
rpm -qa | grep mysql
2. 下载mysql的repo源
报错: -bash: wget: 未到命令
安装插件 yum -y install wget
3. 安装arch.rpm包
sudo rpm -arch.rpm
4. 安装MySQL
sudo yum install mysql-server
5. 重置MySQL密码
mysql -u root
报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
原因:原因是/var/lib/mysql的访问权限问题。
chown root /var/lib/mysql/
6. 重启MySQL服务
service mysqld restart
7. 接着登陆设置密码
mysql -u root
use mysql;
update user set password=password('123456') where user='root';
exit;
接着继续重启MySQL服务
service mysqld restart
8. 接着设置Root账户远程连接密码
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root"; 
重启服务器 service mysqld restart
9. 使⽤外⽹⼯具连接MySQL
关闭防⽕墙
systemctl stop firewalld.service
MySQL主从复制配置
主从复制原理
MySQL的主从复制是MySQL本⾝⾃带的⼀个功能,不需要额外的第三⽅软件就可以实现,其复制功能并不是copy⽂件来实现的,⽽是借助binlog⽇志⽂件⾥⾯的SQL命令实现的主从复制,可以理解为我再Master端执⾏了⼀条SQL命令,那么在Salve端同样会执⾏⼀遍,从⽽达到主从复制的效果。
从库⽣成两个线程,⼀个I/O线程,⼀个SQL线程;
i/o线程去请求主库 的binlog,并将得到的binlog⽇志写到relay log(中继⽇志) ⽂件中;
主库会⽣成⼀个 log dump 线程,⽤来给从库 i/o线程传binlog;
SQL 线程,会读取relay log⽂件中的⽇志,并解析成具体操作,来实现主从的操作⼀致,⽽最终数据⼀致;
主服务器节点
vi /etc/myf 新增以下内容
server_id=177 ###服务器id
log-bin=mysql-bin ###开启⽇志⽂件
重启mysql服务 service mysqld restart
验证是否已经配置成功
show variables like '%server_id%';
能够查询对应配置⽂件中的server_id 说明已经配置成功
show master status;
能够看到同步的⽂件,和⾏数 说明已经配置成功。
从服务器节点
克隆服务器
vi /etc/myf
server_id=178 ###从服务器server_id
log-bin=mysql-bin ###⽇志⽂件同步⽅式
binlog_do_db=test ###同步数据库
重启mysql服务 service mysqld restart
验证是否已经配置成功
哪些英文歌好听
show variables like '%server_id%';
能够查询对应配置⽂件中的server_id 说明已经配置成功
b1驾照从服务器同步主服务器配置
change master to master_host='192.168.212.200',master_user='root',master_password='root',
master_log_file='mysql-bin.000002',master_log_pos=216;
开始同步
start slave
检查从服务器复制功能状态
SHOW SLAVE STATUS
英语六级总分Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
解决办法
因为服务器克隆的时候交UUID产⽣了重复 ,解决办法
cat /etc/myf
cd /var/lib/mysql
rm -rf autof
重启服务器即可
service mysqld restart
MyCat实现读写分离
什么是MyCat
MyCAT是⼀款由阿⾥Cobar演变⽽来的⽤于⽀持数据库,读写分离、分表分库的分布式中间件。MyCAT⽀持Oracle、MSSQL、MYSQL、PG、DB2关系型数据库,同时也⽀持MongoDB等⾮关系型数据库。
MyCAT原理MyCAT主要是通过对SQL的拦截,然后经过⼀定规则的分⽚解析、路由分析、读写分离分
析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做适当处理返回给客户端。
Linux环境安装MyCat实现读写分离
1、上传安装Mycat-server-1.6.5-release-20180122220033-linux.tar
2、解压安装包tar –zxvf
3、配置l 和l
恐龙小游戏
4、客户端连接端⼝号: 8066
配置⽂件介绍:
⽂件
说明: l Mycat的配置⽂件,设置账号、参数等
Linux环境安装MyCat实现读写分离
1、进⼊bin⽬录
启动MyCat ./mycat start
停⽌MyCat ./mycat stop
2、查看/usr/local/mycat/logs wrapper.log⽇志 如果是为successfully 则启动成功
关闭防⽕墙:systemctl stop firewalld.service
只可读的账号 user user 端⼝号8066
可读可写的账号 root 123456 端⼝号8066
SpringBoot项⽬整合动态数据源(读写分离)
1.配置多个数据源,根据业务需求访问不同的数据,指定对应的策略:增加,删除,修改操作访问对应数据,查询访问对应数据,不同数据库做好的数据⼀致性的处理。由于此⽅法相对易懂,简单,不做过多介绍。
2. 动态切换数据源,根据配置的⽂件,业务动态切换访问的数据库:此⽅案通过Spring的AOP,AspactJ来实现动态织⼊,通过编程继承实现Spring中的AbstractRoutingDataSource,来实现数据库访问的动态切换,不仅可以⽅便扩展,不影响现有程序,⽽且对于此功能的增删也⽐较容易。
3. 通过mycat来实现读写分离:使⽤mycat提供的读写分离功能,mycat连接多个数据库,数据源只需要连接mycat,对于开发⼈员⽽⾔他还是连接了⼀个数据库(实际是mysql的mycat中间件),⽽且也不需要根据不同 业务来选择不同的库,这样就不会有多余的代码产⽣。
动态数据源核⼼配置
在Spring 2.0.1中引⼊了AbstractRoutingDataSource, 该类充当了DataSource的路由中介, 能有在运⾏时, 根据某种key值来动态切换到真正的DataSource上。
1.项⽬中需要集成多个数据源分别为读和写的数据源,绑定不同的key。
2.采⽤AOP技术进⾏拦截业务逻辑层⽅法,判断⽅法的前缀是否需要写或者读的操作
3.如果⽅法的前缀是写的操作的时候,直接切换为写的数据源,反之切换为读的数据源
也可以⾃⼰定义注解进⾏封装
动态数据源与多数数据源区别
多数据源---以分包形式
动态数据在jvm进⾏不断地进⾏切换
哪个信用卡最好申请数据库集如何考虑数据库⾃增唯⼀性
在数据库集环境下,默认⾃增⽅式存在问题,因为都是从1开始⾃增,可能会存在重复,应该设置每台节点⾃增步长不同。
查询⾃增的步长
SHOW VARIABLES LIKE 'auto_inc%'
修改⾃增的步长
SET @@auto_increment_increment=10;
修改起始值
SET @@auto_increment_offset=5;
绕口令大全超级难假设有两台mysql数据库服务器
节点①⾃增 1 3 5 7 9 11 ….
节点②⾃增 2 4 6 8 10 12 ….
注意:在最开始设置好了每台节点⾃增⽅式步长后,确定好了mysql集数量后,⽆法扩展新的mysql,不然⽣成步长的规则可能会发⽣变化。
数据库分表分库策略
数据库分表分库原则遵循 垂直拆分与⽔平拆分
垂直拆分就是根据不同的业务,分为不同的数据库,⽐如会员数据库、订单数据库、⽀付数据库等,垂直拆分在⼤型电商系统中⽤的⾮常常见。
优点:
拆分后业务清晰,拆分规则明确,系统之间整合或扩展容易。
缺点:
部分业务表⽆法join,只能通过接⼝⽅式解决,提⾼了系统复杂度存在分布式事务问题。
垂直拆分:把不同的表拆到不同的数据库中,⽽⽔平拆分是把同⼀个表拆到不同的数据库中。
相对于垂直拆分,⽔平拆分不是将表的数据做分类,⽽是按照某个字段的某种规则来分散到多个库之中,每个表中包含⼀部分数据。简单来说,我们可以将数据的⽔平切分理解为是按照数据⾏的切分,就是将表中 的某些⾏切分到⼀个数据库,⽽另外的某些⾏⼜切分到其他的数据库中,主要有分表,分库两种模式
该⽅式提⾼了系统的稳定性跟负载能⼒,但是跨库join性能较差。
使⽤MyCat实现⽔平分⽚策略
MyCat⽀持10种分⽚策略
1、求模算法
2、分⽚枚举
3、范围约定
4、⽇期指定
5、固定分⽚hash算法

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。