第二十一周-day91-数据库day13-MHA故障修复与读写分离_崔冬青 dba

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

hostname=10.0.0.53
port=3306

[binlog1]
no_master=1
hostname=10.0.0.53
master_binlog_dir=/data/mysql/binlog


#### 3. 检查ssh状态:



[root@db03 ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf


#### 4. 检查脚本



[root@db03 /usr/local/bin]# ls -l /usr/local/bin/


#### 5. 检查binlogserver



[root@db03 /usr/local/bin]# ps -ef |grep mysqlbinlog


#### 6. 确认主库,恢复binlog\_server



db01 [(none)]>show master status
±-----------------±---------±-------------±-----------------±-----------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------------±---------±-------------±-----------------±-----------------------------------------+
| mysql-bin.000006 | 194 | | | a5260572-c262-11e9-bab1-000c2980e248:1-2 |
±-----------------±---------±-------------±-----------------±-----------------------------------------+
1 row in set (0.00 sec)

[root@db03 /usr/local/bin]# cd /data/mysql/binlog/
[root@db03 /data/mysql/binlog]# rm -rf *
[root@db03 /data/mysql/binlog]# mysqlbinlog -R --host=10.0.0.51 --user=mha --password=mha --raw --stop-never mysql-bin.000006 &


#### 7. 检查主库vip



[root@db01 ~]# ifconfig eth0:1 10.0.0.55/24


#### 8. 检查主从状态



[root@db03 /data/mysql/binlog]# masterha_check_repl --conf=/etc/mha/app1.cnf


#### 9. 启动MHA



nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &

[root@db03 ~]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:8255) is running(0:PING_OK), master:10.0.0.51




---


## 二、atlas实现读写分离



> 
> ### 原理
> 
> 
> 1. 工作环境
> 
> 
> 大型网站为了软件大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术, 如:memcached,如果资 金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。那么通过MySQL主从配置,实现读写分离,减轻数据库压力。
> 
> 
> 2. 基本原理
> 
> 
> 让master来响应事务性操作,让slave来响应select非事务性操作,然后再采用主从复制来把master上的事务性操作同步到slave数据库中。
> 
> 
> 


### 1.1 安装Atlas



[root@db03 /server/tools]# rpm -ivh Atlas-2.2.1.el6.x86_64.rpm
Preparing… ################################# [100%]
Updating / installing…
1:Atlas-2.2.1-1 ################################# [100%]
[root@db03 /server/tools]# cd /usr/local/mysql-proxy/conf
[root@db03 /usr/local/mysql-proxy/conf]# mv test.cnf test.cnf.bak


#### 1.2 配置



[root@db03 /usr/local/mysql-proxy/conf]# cat > test.cnf <<EOF
[mysql-proxy]
admin-username = user
admin-password = pwd
proxy-backend-addresses = 10.0.0.55:3306
proxy-read-only-backend-addresses = 10.0.0.52:3306,10.0.0.53:3306
pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
sql-log=ON
proxy-address = 0.0.0.0:33060
admin-address = 0.0.0.0:2345
charset=utf8
EOF

[root@db03 /usr/local/mysql-proxy/conf]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:8231) is running(0:PING_OK), master:10.0.0.51


#### 1.3 启动atlas



[root@db03 /usr/local/mysql-proxy/conf]# /usr/local/mysql-proxy/bin/mysql-proxyd test start
error: MySQL-Proxy of test is running now
[root@db03 /usr/local/mysql-proxy/conf]# netstat -lntup|grep proxy
tcp 0 0 0.0.0.0:2345 0.0.0.0:* LISTEN 8164/mysql-proxy
tcp 0 0 0.0.0.0:33060 0.0.0.0:* LISTEN 8164/mysql-proxy


#### 1.4 远程登录mha用户



[root@db03 /usr/local/mysql-proxy/conf]# mysql -umha -pmha -h 10.0.0.53 -P33060

db03 [(none)]>


#### 1.5 检查只读id,读的操作会在2个从节点上飘逸,自带负载均衡



#测试读操作
db03 [(none)]>select @@server_id;
±------------+
| @@server_id |
±------------+
| 52 |
±------------+
1 row in set (0.01 sec)

db03 [(none)]>select @@server_id;
±------------+
| @@server_id |
±------------+
| 53 |
±------------+
1 row in set (0.00 sec)

#测试写操作:
mysql> begin;select @@server_id;commit;
Query OK, 0 rows affected (0.01 sec)

±------------+
| @@server_id |
±------------+
| 51 |
±------------+
1 row in set (0.00 sec)


#### 1.6 生产授权用户



> 
> 例子:root@‘10.0.0.%’
> 
> 
> 



(1) 业务主库中
db01 [(none)]>grant all on *.* to root@‘10.0.0.%’ identified by ‘123’;

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值