mysql单点故障_MySQL主从复制虽好,能完美解决数据库单
点问题吗?
⼀、单个 数据库 服务器的缺点
数据库 服务器 存在单点问题;
数据库服务器资源⽆法满⾜增长的读写请求;
⾼峰时数据库连接数经常超过上限。
⼆、如何解决单点问题
增加额外的数据库服务器,组建数据库集;
同⼀集中的数据库服务器需要具有相同的数据;
集中的任⼀服务器宕机后,其它服务器可以取代宕机服务器。
java script怎么读三、 MySQL 主从复制架构
1、主库将变更写⼊到主库的binlog中
⼀些MySQL版本并不会开启⼆进制⽇志,所以⼀定要检查是否开启;
如果刚开始没有开启,后⾯再进⾏开启的话,需要重启数据库才能⽣效,⽽且数据库的重启往往会对业务造成很⼤的影响;
linux三种基本文件类型尽管⼆进制⽇志对性能有稍许的影响,所以还是建议⼤家⽆论是否使⽤复制功能,都要开启MySQL⼆进制⽇志,因为增量备份也需要⼆进制⽇志。
2、从库的IO线程在指定位置读取主库binlog内容存储到本地的中继⽇志(Relay Log)中
要完成⼆进制⽇志的传输过程,MySQL会在从服务器上启动⼀个⼯作线程,称为IO线程,这个IO线程会跟主数据库建⽴⼀个普通的客户端连接,然后在主服务器上启动⼀个特殊的⼆进制转储线程称为binlogdown线程。
从库上的IO线程通过这个⼆进制转储线程来读取主库上的⼆进制事件,如果该事件追赶上主库,则会进⼊sleep状态,直到主库发起信号通知有新事件产⽣时,才会被唤醒,relay log的格式和binlog格式是完全相同的,
可以使⽤mysqlbinlog来读取relay log中的内容。
3、从库的SQL线程读取Relay Log⽇志中的内容,并在从库中重放
SQL线程所执⾏的事件,我们可以通过配置选项来决定是否要写⼊到从服务器的⼆进制⽇志中。
⽬前MySQL⽀持两种复制类型:
基于⼆进制⽇志点的复制
基于GTID的复制(MySQL>=5.7推荐使⽤)
rank函数怎么用f4键四、MySQL主从配置步骤
1、配置主从数据库服务器参数
有些参数配置后需要数据库重启才能⽣效,为了不影响数据库的正常使⽤,我们最好在服务器上线的同时就把参数都配置好。特别是master服务器的参数,更应该作为服务器初始参数来进⾏配置。
master服务器:
rdy是什么文件slave 服务器:
2、在master服务器上创建⽤于复制的数据库账号
⽤于IO线程连接master服务器获取binlog⽇志,需要* REPLICATION SLAVE** 权限:
create user 'repl'@'ip段' identified by 'password';
grant replication slave on *.* to 'repl'@'ip段';
3、备份master服务器上的数据并初始化slave服务器数据
建议主从数据库服务器采⽤相同的MySQL版本;
建议使⽤全库备份的⽅式初始化slave数据。
北京华清远见科技发展有限公司采⽤相同版本的好处:
我们可以使⽤全备的⽅式来初始化slave数据,还可以避免不同版本之间的差异造成数据库同步失败的问题。
如果我们使⽤的主从复制的服务器MySQL版本不同,则⼀定要注意master上的版本⼀定要低于slave服务器,不然同步的时候就可能出现错误。
由于我们演⽰过程中的MySQL服务器都是使⽤的MySQL5.7,所以我们可以使⽤全备的⽅式进⾏:
mysqldump --master-data=2 -uroot -p -A --single-transaction -R --triggers
4、启动基于⽇志点的复制链路
在slave服务器上运⾏,MySQL命令:
CHANGE MASTER TO
MASTER_HOST= 'master_host_ip',
MASTER_USER= 'repl',
MASTER_PASSWORD = 'password',
MASTER_LOG_FILE='mysql_log_file_name',
MASTER_LOG_POS=xxxxxx;
5、启动基于GTID的复制链路
GTID:全局事务ID,GTID可以保证每⼀个在主上提交的事务,在复制集中可以⽣成⼀个唯⼀的ID值,要使⽤基于GTID的复制,我们要在主从复制的配置⽂件中同时加⼊以下配置项。
MySQL配置:
gtid_mode=on # 是否启动gtid模式,启动了此模式会在⼆进制⽇志中会额外记录每个事务的GTID标识符
enforce-gtid-consistency # 强制gtid⼀致性,⽤于保证启动gtid后事务的安全
log-slave-updates = on # mysql5.6⼀定要启⽤参数,5.7可以不启⽤
MySQL命令:
CHANGE MASTER TO
MASTER_HOST= 'master_host_ip',
MASTER_USER= 'repl',
MASTER_PASSWORD = 'password',
mysql无法连接到服务器MASTER_AUTO_POSITION=1;
GTID复制的限制:
⽆法再使⽤create table ... select语句建⽴表,只能先create表,再insert数据;
⽆法在事务中使⽤create temporary table建⽴临时表;
⽆法使⽤关联更新同时更新事务表和⾮事务表。
4和5中选⼀个执⾏即可。
五. MySQL主从复制演⽰
1. 先对主服务器进⾏配置
由于主服务器⼀直在运⾏着,在⽣产环境中主服务器是很少会重启的,如果主服务器重启,会造成正常的业务访问的中断,所以在服务器启动之前就启动了⼆进制⽇志。
这⾥不需要重启主服务器了,由于主服务器的默认server_id=1,我们虽然在配置⽂件中更改了它的值 ,但实际运⾏环境中并没有改变。
我们可以查看⼀下当前server_id:
mysql> show variables like '%server_id%';
可以通过以下命令动态的进⾏修改:
mysql> set global server_id = 100;
2. 再对从服务器进⾏配置
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论